diff --git a/docs/api/cellar_v2.md b/docs/api/cellar_v2.md index 650e84f0..ac53f148 100644 --- a/docs/api/cellar_v2.md +++ b/docs/api/cellar_v2.md @@ -79,6 +79,7 @@ Represents a call to adaptor an. The cellar must be authorized to call the targe | morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v3-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | | morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v3-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | | morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v3-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | +| balancer_pool_v1_calls | [BalancerPoolAdaptorV1Calls](#steward-v3-BalancerPoolAdaptorV1Calls) | | Represents function calls to the BalancerPoolAdaptor V1 | diff --git a/proto/adaptors/aave/aave_v3_debt_token.proto b/proto/adaptors/aave/aave_v3_debt_token.proto index 55b1d1a9..b28529c6 100644 --- a/proto/adaptors/aave/aave_v3_debt_token.proto +++ b/proto/adaptors/aave/aave_v3_debt_token.proto @@ -10,6 +10,7 @@ option go_package = "/steward_proto"; import "adaptors/aave/a_token.proto"; import "adaptors/aave/debt_token.proto"; import "adaptors/aave/aave_v3_a_token.proto"; +import "adaptors/balancer/balancer_pool.proto"; import "adaptors/compound/c_token.proto"; import "adaptors/frax/f_token.proto"; import "adaptors/morpho/morpho_aave_v2_a_token.proto"; @@ -149,6 +150,8 @@ message AaveV3DebtTokenAdaptorV1 { MorphoAaveV3ATokenP2PAdaptorV1Calls morpho_aave_v3_a_token_p2p_v1_calls = 22; // Represents function calls to the MorphoAaveV3DebtToken V1 MorphoAaveV3DebtTokenAdaptorV1Calls morpho_aave_v3_debt_token_v1_calls = 23; + // Represents function calls to the BalancerPoolAdaptor V1 + BalancerPoolAdaptorV1Calls balancer_pool_v1_calls = 24; } } } diff --git a/proto/adaptors/balancer/balancer_pool.proto b/proto/adaptors/balancer/balancer_pool.proto new file mode 100644 index 00000000..58691107 --- /dev/null +++ b/proto/adaptors/balancer/balancer_pool.proto @@ -0,0 +1,165 @@ +/* +* Protos for function calls to the Balancer Pool adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. +message BalancerPoolAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `relayerJoinPool(ERC20[] tokensIn, uint256[] amountsIn, ERC20 btpOut, bytes[] memory callData)` + JoinPool join_pool = 2; + // Represents function `relayerExitPool(ERC20 bptIn, uint256 amountIn, ERC20[] memory tokensOut, bytes[] memory callData)` + ExitPool exit_pool = 3; + // Represents function `stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)` + StakeBPT stake_bpt = 4; + // Represents function `unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)` + UnstakeBPT unstake_bpt = 5; + // Represents function `claimRewards(address gauge)` + ClaimRewards claim_rewards = 6; + + } + + // Represents the SwapKind enum defined here: + // https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol + enum SwapKind { + SWAP_KIND_UNSPECIFIED = 0; + SWAP_KIND_GIVEN_IN = 1; + SWAP_KIND_GIVEN_OUT = 2; + } + + // Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on the `kind` value. + // Represents the SingleSwap struct defined here: + // https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol + message SingleSwap { + // The pool ID (bytes32) + string pool_id = 1; + + // The swap kind (enum) + SwapKind kind = 2; + + // The asset in (address) + string asset_in = 3; + + // The asset out (address) + string asset_out = 4; + + // The amount (uint256) + string amount = 5; + + // The user data (bytes) + bytes user_data = 6; + } + + // Stores each swaps min amount, and deadline + message SwapData { + // The minimum amounts for swaps + repeated string min_amounts_for_swaps = 1; + + // The swap deadlines + repeated string swap_deadlines = 2; + } + + /* + * Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins + * + * Represents function `joinPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, uint256 minimumBpt)` + */ + message JoinPool { + // The target pool + string target_bpt = 1; + + // Swap to execute before joining pool + repeated SingleSwap swaps_before_join = 2; + + // Data for swaps + SwapData swap_data = 3; + + // The minimum BPT to mint + string minimum_bpt = 4; + } + + + message ExitPoolRequest { + repeated string assets = 1; + repeated string min_amounts_out = 2; + bytes user_data = 3; + bool to_internal_balance = 4; + } + + /* + * Call `BalancerRelayer` on mainnet to carry out exit txs + * + * Represents function `exitPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, IVault.ExitPoolRequest request)` + */ + message ExitPool { + // The target pool + string target_bpt = 1; + + // Swaps to execute after exiting pool + repeated SingleSwap swaps_after_exit = 2; + + // Data for swaps + SwapData swap_data = 3; + + ExitPoolRequest request = 4; + } + + /* + * Stake (deposit) BPTs into respective pool gauge + * + * Represents `function stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)`` + */ + message StakeBPT { + // The BPT to stake + string bpt = 1; + + // The liquidity gauge to stake into + string liquidity_gauge = 2; + + // The amount to stake + string amount_in = 3; + } + + /* + * Unstake (withdraw) BPT from respective pool gauge + * + * Represents `function unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)`` + */ + message UnstakeBPT { + // The BPT to unstake + string bpt = 1; + + // The liquidity gauge to unstake from + string liquidity_gauge = 2; + + // The amount to unstake + string amount_out = 3; + } + + /* + * Claim rewards ($BAL) from LP position + * + * Represents `function claimRewards(address gauge)` + */ + message ClaimRewards { + // The gauge to claim rewards from + string gauge = 1; + } +} + +message BalancerPoolAdaptorV1Calls { + repeated BalancerPoolAdaptorV1 calls = 1; +} diff --git a/proto/cellar_v2.proto b/proto/cellar_v2.proto index 9367a1b0..9878d9b1 100644 --- a/proto/cellar_v2.proto +++ b/proto/cellar_v2.proto @@ -13,6 +13,7 @@ import "adaptors/aave/a_token.proto"; import "adaptors/aave/debt_token.proto"; import "adaptors/aave/aave_v3_a_token.proto"; import "adaptors/aave/aave_v3_debt_token.proto"; +import "adaptors/balancer/balancer_pool.proto"; import "adaptors/compound/c_token.proto"; import "adaptors/frax/f_token.proto"; import "adaptors/morpho/morpho_aave_v2_a_token.proto"; @@ -438,5 +439,7 @@ message AdaptorCall { MorphoAaveV3ATokenP2PAdaptorV1Calls morpho_aave_v3_a_token_p2p_v1_calls = 22; // Represents function calls to the MorphoAaveV3DebtToken V1 MorphoAaveV3DebtTokenAdaptorV1Calls morpho_aave_v3_debt_token_v1_calls = 23; + // Represents function calls to the BalancerPoolAdaptor V1 + BalancerPoolAdaptorV1Calls balancer_pool_v1_calls = 24; } } diff --git a/steward/src/cellars/adaptors.rs b/steward/src/cellars/adaptors.rs index b196fdfa..31760cf6 100644 --- a/steward/src/cellars/adaptors.rs +++ b/steward/src/cellars/adaptors.rs @@ -1,6 +1,7 @@ pub mod aave_v2; pub mod aave_v2_collateral; pub mod aave_v3; +pub mod balancer_pool; pub mod compound; pub mod f_token; pub mod fees_and_reserves; diff --git a/steward/src/cellars/adaptors/aave_v3.rs b/steward/src/cellars/adaptors/aave_v3.rs index ef393f8b..c3bafde3 100644 --- a/steward/src/cellars/adaptors/aave_v3.rs +++ b/steward/src/cellars/adaptors/aave_v3.rs @@ -250,6 +250,9 @@ fn get_encoded_adaptor_calls( MorphoAaveV3DebtTokenV1Calls(params) => { calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) } + BalancerPoolV1Calls(params) => calls.extend( + adaptors::balancer_pool::balancer_pool_adaptor_v1_calls(params)?, + ), }; result.push(AbiAdaptorCall { diff --git a/steward/src/cellars/adaptors/balancer_pool.rs b/steward/src/cellars/adaptors/balancer_pool.rs new file mode 100644 index 00000000..97de3b0b --- /dev/null +++ b/steward/src/cellars/adaptors/balancer_pool.rs @@ -0,0 +1,171 @@ +use std::convert::TryInto; + +use ethers::{abi::AbiEncode, types::Bytes}; +use steward_abi::balancer_pool_adaptor_v1::{ + BalancerPoolAdaptorV1Calls, ExitPoolRequest, SingleSwap as AbiSingleSwap, + SwapData as AbiSwapData, +}; +use steward_proto::steward::balancer_pool_adaptor_v1::{self, SingleSwap, SwapData}; + +use crate::{ + error::{Error, ErrorKind}, + utils::{sp_call_error, sp_call_parse_address, string_to_u256}, +}; + +pub(crate) fn balancer_pool_adaptor_v1_calls( + params: steward_proto::steward::BalancerPoolAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + balancer_pool_adaptor_v1::Function::RevokeApproval(p) => { + let call = steward_abi::balancer_pool_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + BalancerPoolAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + balancer_pool_adaptor_v1::Function::JoinPool(p) => { + if !p.swaps_before_join.is_empty() + && p.swaps_before_join.iter().any(|s| s.kind == 0) + { + return Err(sp_call_error("invalid swap kind".to_string())); + } + + let swaps_before_join = convert_single_swap(p.swaps_before_join)?; + + if p.swap_data.is_none() { + return Err(sp_call_error("swap data must be set".to_string())); + } + + let swap_data = convert_swap_data(p.swap_data.unwrap())?; + + let call = steward_abi::balancer_pool_adaptor_v1::JoinPoolCall { + target_bpt: sp_call_parse_address(p.target_bpt)?, + swaps_before_join, + swap_data, + minimum_bpt: string_to_u256(p.minimum_bpt)?, + }; + + calls.push(BalancerPoolAdaptorV1Calls::JoinPool(call).encode().into()) + } + balancer_pool_adaptor_v1::Function::ExitPool(p) => { + if !p.swaps_after_exit.is_empty() && p.swaps_after_exit.iter().any(|s| s.kind == 0) + { + return Err(sp_call_error("invalid swap kind".to_string())); + } + + let swaps_after_exit = convert_single_swap(p.swaps_after_exit)?; + + if p.swap_data.is_none() { + return Err(sp_call_error("swap data must be set".to_string())); + } + + let swap_data = convert_swap_data(p.swap_data.unwrap())?; + + let request = match p.request { + Some(r) => ExitPoolRequest { + assets: r + .assets + .into_iter() + .map(sp_call_parse_address) + .collect::, Error>>()?, + min_amounts_out: r + .min_amounts_out + .into_iter() + .map(string_to_u256) + .collect::, Error>>()?, + user_data: r.user_data.into(), + to_internal_balance: r.to_internal_balance, + }, + None => return Err(sp_call_error("exit pool request must be set".to_string())), + }; + + let call = steward_abi::balancer_pool_adaptor_v1::ExitPoolCall { + target_bpt: sp_call_parse_address(p.target_bpt)?, + swaps_after_exit, + swap_data, + request, + }; + + calls.push(BalancerPoolAdaptorV1Calls::ExitPool(call).encode().into()) + } + balancer_pool_adaptor_v1::Function::StakeBpt(p) => { + let call = steward_abi::balancer_pool_adaptor_v1::StakeBPTCall { + bpt: sp_call_parse_address(p.bpt)?, + liquidity_gauge: sp_call_parse_address(p.liquidity_gauge)?, + amount_in: string_to_u256(p.amount_in)?, + }; + calls.push(BalancerPoolAdaptorV1Calls::StakeBPT(call).encode().into()) + } + balancer_pool_adaptor_v1::Function::UnstakeBpt(p) => { + let call = steward_abi::balancer_pool_adaptor_v1::UnstakeBPTCall { + bpt: sp_call_parse_address(p.bpt)?, + liquidity_gauge: sp_call_parse_address(p.liquidity_gauge)?, + amount_out: string_to_u256(p.amount_out)?, + }; + calls.push(BalancerPoolAdaptorV1Calls::UnstakeBPT(call).encode().into()) + } + balancer_pool_adaptor_v1::Function::ClaimRewards(p) => { + let call = steward_abi::balancer_pool_adaptor_v1::ClaimRewardsCall { + gauge: sp_call_parse_address(p.gauge)?, + }; + calls.push( + BalancerPoolAdaptorV1Calls::ClaimRewards(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} + +fn convert_single_swap(swaps: Vec) -> Result, Error> { + swaps + .into_iter() + .map(|s| { + let pool_id = hex::decode(s.pool_id) + .map_err(|e| { + ErrorKind::SPCallError.context(format!("failed to decode pool_id: {e}")) + })? + .try_into() + .map_err(|_| { + ErrorKind::SPCallError.context("pool ID must be 32 bytes".to_string()) + })?; + + Ok(AbiSingleSwap { + pool_id, + kind: (s.kind - 1) as u8, + asset_in: sp_call_parse_address(s.asset_in)?, + asset_out: sp_call_parse_address(s.asset_out)?, + amount: string_to_u256(s.amount)?, + user_data: s.user_data.into(), + }) + }) + .collect::, Error>>() +} + +fn convert_swap_data(data: SwapData) -> Result { + Ok(AbiSwapData { + min_amounts_for_swaps: data + .min_amounts_for_swaps + .into_iter() + .map(string_to_u256) + .collect::, Error>>()?, + swap_deadlines: data + .swap_deadlines + .into_iter() + .map(string_to_u256) + .collect::, Error>>()?, + }) +} diff --git a/steward/src/cellars/cellar_v2.rs b/steward/src/cellars/cellar_v2.rs index 9d0b2d65..8326aaf6 100644 --- a/steward/src/cellars/cellar_v2.rs +++ b/steward/src/cellars/cellar_v2.rs @@ -257,6 +257,9 @@ fn get_encoded_adaptor_calls(data: Vec) -> Result { calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) } + BalancerPoolV1Calls(params) => calls.extend( + adaptors::balancer_pool::balancer_pool_adaptor_v1_calls(params)?, + ), }; result.push(AbiAdaptorCall { diff --git a/steward/src/cellars/cellar_v2_2.rs b/steward/src/cellars/cellar_v2_2.rs index d818377e..f78df7a6 100644 --- a/steward/src/cellars/cellar_v2_2.rs +++ b/steward/src/cellars/cellar_v2_2.rs @@ -313,6 +313,9 @@ fn get_encoded_adaptor_calls(data: Vec) -> Result { calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) } + BalancerPoolV1Calls(params) => calls.extend( + adaptors::balancer_pool::balancer_pool_adaptor_v1_calls(params)?, + ), }; result.push(AbiAdaptorCall { diff --git a/steward_abi/abi/BalancerPoolAdaptorV1.json b/steward_abi/abi/BalancerPoolAdaptorV1.json new file mode 100644 index 00000000..412826a3 --- /dev/null +++ b/steward_abi/abi/BalancerPoolAdaptorV1.json @@ -0,0 +1,22978 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_minter", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_balancerSlippage", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidityGauge", + "type": "address" + } + ], + "name": "BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___InternalBalancesNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___InvalidConstructorSlippage", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___LengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___UnsupportedTokenNotSwapped", + "type": "error" + }, + { + "inputs": [], + "name": "BalancerPoolAdaptor___WrongSwapKind", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "EXACT_TOKENS_IN_FOR_BPT_OUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerSlippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "gauge", + "type": "address" + } + ], + "name": "claimRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "targetBpt", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.SingleSwap[]", + "name": "swapsAfterExit", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "minAmountsForSwaps", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapDeadlines", + "type": "uint256[]" + } + ], + "internalType": "struct BalancerPoolAdaptor.SwapData", + "name": "swapData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetBpt", + "type": "address" + } + ], + "name": "getExpectedTokens", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "expectedTokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "targetBpt", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.SingleSwap[]", + "name": "swapsBeforeJoin", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "minAmountsForSwaps", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapDeadlines", + "type": "uint256[]" + } + ], + "internalType": "struct BalancerPoolAdaptor.SwapData", + "name": "swapData", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "minimumBpt", + "type": "uint256" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "minter", + "outputs": [ + { + "internalType": "contract IBalancerMinter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "_bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityGauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + } + ], + "name": "stakeBPT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "_bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityGauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountOut", + "type": "uint256" + } + ], + "name": "unstakeBPT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountBPTToSend", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60e06040523480156200001157600080fd5b5060405162003477380380620034778339810160408190526200003491620000b0565b6123288163ffffffff1610806200005257506127108163ffffffff16115b156200007157604051633aa8bcf160e01b815260040160405180910390fd5b6001600160a01b03928316608052911660a05263ffffffff1660c05262000106565b80516001600160a01b0381168114620000ab57600080fd5b919050565b600080600060608486031215620000c657600080fd5b620000d18462000093565b9250620000e16020850162000093565b9150604084015163ffffffff81168114620000fb57600080fd5b809150509250925092565b60805160a05160c0516132d86200019f600039600081816102b301528181610e7d0152611c840152600081816101360152611ede0152600081816102ed0152818161042b015281816106f10152818161085e0152818161094d01528181610b3201528181610d5f01528181610dc5015281816111040152818161136701528181611597015281816118b601526119d201526132d86000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806397194b13116100ad578063e170a9bf11610071578063e170a9bf14610288578063ef5cfb8c1461029b578063f7e69b16146102ae578063fa50e5d2146102d5578063fbfa77cf146102e857600080fd5b806397194b1314610229578063aeffddde1461023c578063c9111bd71461024f578063d2e8580614610262578063d3bfe76a1461027557600080fd5b806378415365116100f457806378415365146101cc5780637906afbf146101df5780637998a1c4146101ff57806389353a09146102075780638f210a6a1461021657600080fd5b806307546172146101315780630e222e52146101755780633e032a3b1461018b5780635c14acdb146101a457806369445c31146101b9575b600080fd5b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61017d600181565b60405190815260200161016c565b6123285b60405163ffffffff909116815260200161016c565b6101b76101b2366004612920565b61030f565b005b6101b76101c736600461299d565b610ed7565b61017d6101da366004612a09565b610ef0565b6101f26101ed366004612a3d565b61107a565b60405161016c9190612a9e565b61017d611181565b6040516000815260200161016c565b6101b7610224366004612ab1565b6111df565b6101b7610237366004612b0b565b6112df565b6101f261024a366004612a09565b611cdd565b6101b761025d366004612c88565b611d40565b6101b7610270366004612ab1565b611e12565b6101b7610283366004612d07565b611e8a565b610158610296366004612a09565b611ea3565b6101b76102a9366004612a3d565b611ebf565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102e3366004612d40565b611f36565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103739190612da3565b90506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190612dbc565b905061040860405180608001604052806060815260200160608152602001606081526020016000151581525090565b60006060828101829052604051631f29a8cd60e31b8152600481018690529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f94d466890602401600060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a29190810190612e34565b505090506104b08982611f48565b915080516001600160401b038111156104cb576104cb6125e8565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b50835260005b815181101561055b5781818151811061051557610515612f01565b60200260200101518460000151828151811061053357610533612f01565b6001600160a01b039092166020928302919091019091015261055481612f2d565b90506104fa565b5080516001600160401b03811115610575576105756125e8565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50602084015260005b81518110156105e457600019846020015182815181106105c9576105c9612f01565b60209081029190910101526105dd81612f2d565b90506105a7565b505080518751146106085760405163967575bd60e01b815260040160405180910390fd5b600081516001600160401b03811115610623576106236125e8565b60405190808252806020026020018201604052801561064c578160200160208202803683370190505b50905060005b8851811015610a805788818151811061066d5761066d612f01565b60200260200101516080015160000315610a7057600089828151811061069557610695612f01565b60200260200101516040015190506106ca818b84815181106106b9576106b9612f01565b60200260200101516080015161214d565b8a83815181106106dc576106dc612f01565b602002602001015160800181815250506107477f00000000000000000000000000000000000000000000000000000000000000008b848151811061072257610722612f01565b602002602001015160800151836001600160a01b03166121ce9092919063ffffffff16565b60006001600160a01b03168a838151811061076457610764612f01565b6020026020010151606001516001600160a01b0316146109c95783828151811061079057610790612f01565b60200260200101516001600160a01b03168a83815181106107b3576107b3612f01565b6020026020010151606001516001600160a01b0316146107e6576040516385f4bd3b60e01b815260040160405180910390fd5b60008a83815181106107fa576107fa612f01565b602002602001015160200151600181111561081757610817612f46565b14610835576040516374c0729b60e01b815260040160405180910390fd5b604080516080810182523080825260006020830181905292820152606081018290528b519091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352bbbe29908e908790811061089f5761089f612f01565b6020026020010151848e6000015188815181106108be576108be612f01565b60200260200101518f6020015189815181106108dc576108dc612f01565b60200260200101516040518563ffffffff1660e01b81526004016109039493929190612fa2565b6020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190612da3565b90506109a37f0000000000000000000000000000000000000000000000000000000000000000828e878151811061097f5761097f612f01565b6020026020010151606001516001600160a01b03166121ce9092919063ffffffff16565b808585815181106109b6576109b6612f01565b6020026020010181815250505050610a6e565b8382815181106109db576109db612f01565b60200260200101516001600160a01b03168a83815181106109fe576109fe612f01565b6020026020010151604001516001600160a01b031614610a31576040516385f4bd3b60e01b815260040160405180910390fd5b898281518110610a4357610a43612f01565b602002602001015160800151838381518110610a6157610a61612f01565b6020026020010181815250505b505b610a7981612f2d565b9050610652565b5060018187604051602001610a97939291906130b0565b60408051808303601f1901815291815284810191909152516370a0823160e01b8152306004820152600091506001600160a01b038a16906370a0823190602401602060405180830381865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190612da3565b60405163172b958560e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890610b6d908890309081908990600401613170565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190612da3565b610c1391906131a2565b9050600088516001600160401b03811115610c3057610c306125e8565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b509050600089516001600160401b03811115610c7757610c776125e8565b604051908082528060200260200182016040528015610ca0578160200160208202803683370190505b50905060005b8a51811015610dfc5760008b8281518110610cc357610cc3612f01565b602002602001015160400151905080838381518110610ce457610ce4612f01565b60200260200101906001600160a01b031690816001600160a01b0316815250508b8281518110610d1657610d16612f01565b602002602001015160800151848381518110610d3457610d34612f01565b602002602001018181525050610d83838381518110610d5557610d55612f01565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000612250565b60008c8381518110610d9757610d97612f01565b602002602001015160600151905060006001600160a01b0316816001600160a01b031614610de957610de9817f0000000000000000000000000000000000000000000000000000000000000000612250565b505080610df590612f2d565b9050610ca6565b506000866001600160a01b031663b333a17583858f6040518463ffffffff1660e01b8152600401610e2f939291906131b5565b602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612da3565b9050610ea98163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b841015610ec9576040516336bedbd960e11b815260040160405180910390fd5b505050505050505050505050565b604051633204ed5b60e21b815260040160405180910390fd5b600080600083806020019051810190610f0991906131f3565b90925090506001600160a01b038116610f8c576040516370a0823160e01b81523360048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190612da3565b949350505050565b6040516370a0823160e01b815233600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190612da3565b6040516370a0823160e01b815233600482015290915081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190612da3565b6110709190613222565b9695505050505050565b60606000826001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111739190810190612e34565b50509050610f848482611f48565b60006040516020016111c4906020808252601b908201527f42616c616e63657220506f6f6c2041646170746f72205620312e300000000000604082015260600190565b60405160208183030381529060405280519060200120905090565b6111e983836122fe565b60006111f5848361214d565b60405163095ea7b360e01b81526001600160a01b03808616600483015260248201839052919250849186169063095ea7b3906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613235565b50604051636e553f6560e01b8152600481018390523060248201526001600160a01b03821690636e553f6590604401600060405180830381600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506112d88582612250565b5050505050565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa1580156113ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113d69190810190612e34565b5050905060006113e68783611f48565b905083606001511561140b57604051636d22518360e01b815260040160405180910390fd5b600081516001600160401b03811115611426576114266125e8565b60405190808252806020026020018201604052801561144f578160200160208202803683370190505b50905060005b82518110156115115782818151811061147057611470612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e49190612da3565b8282815181106114f6576114f6612f01565b602090810291909101015261150a81612f2d565b9050611455565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612da3565b604051638bdb391360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638bdb3913906115d2908890309081908c90600401613170565b600060405180830381600087803b1580156115ec57600080fd5b505af1158015611600573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190612da3565b61167690826131a2565b905060005b835181101561175b5782818151811061169657611696612f01565b60200260200101518482815181106116b0576116b0612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612da3565b61172e91906131a2565b83828151811061174057611740612f01565b602090810291909101015261175481612f2d565b905061167b565b506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190612dbc565b905083518951146117e45760405163967575bd60e01b815260040160405180910390fd5b60005b8451811015611c035783818151811061180257611802612f01565b602002602001015160000315611bf35784818151811061182457611824612f01565b60200260200101516001600160a01b03168a828151811061184757611847612f01565b6020026020010151604001516001600160a01b03161461187a576040516385f4bd3b60e01b815260040160405180910390fd5b60006001600160a01b03168a828151811061189757611897612f01565b6020026020010151606001516001600160a01b031614611b41576119217f00000000000000000000000000000000000000000000000000000000000000008583815181106118e7576118e7612f01565b602002602001015187848151811061190157611901612f01565b60200260200101516001600160a01b03166121ce9092919063ffffffff16565b6040805160808101825230808252600060208301819052928201526060810191909152845185908390811061195857611958612f01565b60200260200101518b838151811061197257611972612f01565b60209081029190910101516080015260008b838151811061199557611995612f01565b60200260200101516020015160018111156119b2576119b2612f46565b146119d0576040516374c0729b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166352bbbe298c8481518110611a1157611a11612f01565b6020026020010151838d600001518681518110611a3057611a30612f01565b60200260200101518e602001518781518110611a4e57611a4e612f01565b60200260200101516040518563ffffffff1660e01b8152600401611a759493929190612fa2565b6020604051808303816000875af1158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190612da3565b858381518110611aca57611aca612f01565b602002602001018181525050611aeb868381518110610d5557610d55612f01565b8a8281518110611afd57611afd612f01565b602002602001015160600151868381518110611b1b57611b1b612f01565b60200260200101906001600160a01b031690816001600160a01b03168152505050611bf3565b816001600160a01b0316634f129c53868381518110611b6257611b62612f01565b60200260200101516040518263ffffffff1660e01b8152600401611b9591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190613235565b611bf3576040516301da6c4960e11b815260040160405180910390fd5b611bfc81612f2d565b90506117e7565b506000816001600160a01b031663b333a17586868e6040518463ffffffff1660e01b8152600401611c36939291906131b5565b602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190612da3565b9050611cb08363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b811015611cd0576040516336bedbd960e11b815260040160405180910390fd5b5050505050505050505050565b60408051600180825281830190925260609160208083019080368337019050509050611d0882611ea3565b81600081518110611d1b57611d1b612f01565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b611d49836124c4565b60008083806020019051810190611d6091906131f3565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190612da3565b905080871115611df5576000611de682896131a2565b9050611df3848483611e12565b505b611e096001600160a01b038416878961255b565b50505050505050565b611e1c83836122fe565b81611e27818361214d565b604051632e1a7d4d60e01b8152600481018290529092506001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050505050505050565b611e9f6001600160a01b0383168260006121ce565b5050565b600081806020019051810190611eb99190612dbc565b92915050565b6040516335313c2160e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a62784290602401600060405180830381600087803b158015611f2257600080fd5b505af11580156112d8573d6000803e3d6000fd5b6000611f4183610ef0565b9392505050565b80516060906000805b82811015611fa457856001600160a01b0316858281518110611f7557611f75612f01565b60200260200101516001600160a01b031603611f945760019150611fa4565b611f9d81612f2d565b9050611f51565b5080156120a057611fb66001836131a2565b6001600160401b03811115611fcd57611fcd6125e8565b604051908082528060200260200182016040528015611ff6578160200160208202803683370190505b5092506000805b8381101561209957866001600160a01b031686828151811061202157612021612f01565b60200260200101516001600160a01b0316146120895785818151811061204957612049612f01565b602002602001015185838151811061206357612063612f01565b6001600160a01b03909216602092830291909101909101528161208581612f2d565b9250505b61209281612f2d565b9050611ffd565b5050612145565b816001600160401b038111156120b8576120b86125e8565b6040519080825280602002602001820160405280156120e1578160200160208202803683370190505b50925060005b828110156121435784818151811061210157612101612f01565b602002602001015184828151811061211b5761211b612f01565b6001600160a01b039092166020928302919091019091015261213c81612f2d565b90506120e7565b505b505092915050565b600060001982036121c7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c09190612da3565b9050611eb9565b5080611eb9565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612da3565b1115611e9f57611e9f6001600160a01b0383168260006121ce565b8282028115158415858304851417166122f757600080fd5b0492915050565b6000612308611181565b604080516001600160a01b038681166020830152851681830152815180820383018152606082019092526123429291600091608001613252565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be9190612dbc565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016123eb91815260200190565b602060405180830381865afa158015612408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242c919061327c565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613235565b61224a5760405163114322b960e31b81526001600160a01b03808616600483015284166024820152604401612241565b6001600160a01b038116301480159061253a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190613235565b15612558576040516307de9b5160e21b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401612241565b6001600160a01b038116811461255857600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612620576126206125e8565b60405290565b604051608081016001600160401b0381118282101715612620576126206125e8565b604051601f8201601f191681016001600160401b0381118282101715612670576126706125e8565b604052919050565b60006001600160401b03821115612691576126916125e8565b5060051b60200190565b8035600281106126aa57600080fd5b919050565b80356126aa816125d3565b600082601f8301126126cb57600080fd5b81356001600160401b038111156126e4576126e46125e8565b6126f7601f8201601f1916602001612648565b81815284602083860101111561270c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261273a57600080fd5b8135602061274f61274a83612678565b612648565b82815260059290921b8401810191818101908684111561276e57600080fd5b8286015b848110156128315780356001600160401b03808211156127925760008081fd5b9088019060c0828b03601f19018113156127ac5760008081fd5b6127b46125fe565b87840135815260406127c781860161269b565b8983015260606127d88187016126af565b82840152608091506127eb8287016126af565b9083015260a0858101358284015292850135928484111561280e57600091508182fd5b61281c8e8b868901016126ba565b90830152508652505050918301918301612772565b509695505050505050565b600082601f83011261284d57600080fd5b8135602061285d61274a83612678565b82815260059290921b8401810191818101908684111561287c57600080fd5b8286015b848110156128315780358352918301918301612880565b6000604082840312156128a957600080fd5b604051604081016001600160401b0382821081831117156128cc576128cc6125e8565b8160405282935084359150808211156128e457600080fd5b6128f08683870161283c565b8352602085013591508082111561290657600080fd5b506129138582860161283c565b6020830152505092915050565b6000806000806080858703121561293657600080fd5b8435612941816125d3565b935060208501356001600160401b038082111561295d57600080fd5b61296988838901612729565b9450604087013591508082111561297f57600080fd5b5061298c87828801612897565b949793965093946060013593505050565b6000806000606084860312156129b257600080fd5b8335925060208401356001600160401b03808211156129d057600080fd5b6129dc878388016126ba565b935060408601359150808211156129f257600080fd5b506129ff868287016126ba565b9150509250925092565b600060208284031215612a1b57600080fd5b81356001600160401b03811115612a3157600080fd5b610f84848285016126ba565b600060208284031215612a4f57600080fd5b8135611f41816125d3565b600081518084526020808501945080840160005b83811015612a935781516001600160a01b031687529582019590820190600101612a6e565b509495945050505050565b602081526000611f416020830184612a5a565b600080600060608486031215612ac657600080fd5b8335612ad1816125d3565b92506020840135612ae1816125d3565b929592945050506040919091013590565b801515811461255857600080fd5b80356126aa81612af2565b60008060008060808587031215612b2157600080fd5b8435612b2c816125d3565b93506020858101356001600160401b0380821115612b4957600080fd5b612b5589838a01612729565b95506040880135915080821115612b6b57600080fd5b612b7789838a01612897565b94506060880135915080821115612b8d57600080fd5b908701906080828a031215612ba157600080fd5b612ba9612626565b823582811115612bb857600080fd5b8301601f81018b13612bc957600080fd5b8035612bd761274a82612678565b81815260059190911b8201860190868101908d831115612bf657600080fd5b928701925b82841015612c1d578335612c0e816125d3565b82529287019290870190612bfb565b84525050508284013582811115612c3357600080fd5b612c3f8b82860161283c565b85830152506040830135935081841115612c5857600080fd5b612c648a8585016126ba565b6040820152612c7560608401612b00565b6060820152969995985093965050505050565b60008060008060808587031215612c9e57600080fd5b843593506020850135612cb0816125d3565b925060408501356001600160401b0380821115612ccc57600080fd5b612cd8888389016126ba565b93506060870135915080821115612cee57600080fd5b50612cfb878288016126ba565b91505092959194509250565b60008060408385031215612d1a57600080fd5b8235612d25816125d3565b91506020830135612d35816125d3565b809150509250929050565b60008060408385031215612d5357600080fd5b82356001600160401b0380821115612d6a57600080fd5b612d76868387016126ba565b93506020850135915080821115612d8c57600080fd5b50612d99858286016126ba565b9150509250929050565b600060208284031215612db557600080fd5b5051919050565b600060208284031215612dce57600080fd5b8151611f41816125d3565b600082601f830112612dea57600080fd5b81516020612dfa61274a83612678565b82815260059290921b84018101918181019086841115612e1957600080fd5b8286015b848110156128315780518352918301918301612e1d565b600080600060608486031215612e4957600080fd5b83516001600160401b0380821115612e6057600080fd5b818601915086601f830112612e7457600080fd5b81516020612e8461274a83612678565b82815260059290921b8401810191818101908a841115612ea357600080fd5b948201945b83861015612eca578551612ebb816125d3565b82529482019490820190612ea8565b91890151919750909350505080821115612ee357600080fd5b50612ef086828701612dd9565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f3f57612f3f612f17565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b81811015612f8257602081850181015186830182015201612f66565b506000602082860101526020601f19601f83011685010191505092915050565b60e08152845160e08201526000602086015160028110612fd257634e487b7160e01b600052602160045260246000fd5b61010083015260408601516001600160a01b031661012083015260608601516130076101408401826001600160a01b03169052565b50608086015161016083015260a086015160c061018084015261302e6101a0840182612f5c565b91505061306e602083018680516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b60a082019390935260c0015292915050565b600081518084526020808501945080840160005b83811015612a9357815187529582019590820190600101613094565b8381526060602082015260006130c96060830185613080565b9050826040830152949350505050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561311e5783516001600160a01b0316835292840192918401916001016130f9565b5050828501519150858103838701526131378183613080565b92505050604083015184820360408601526131528282612f5c565b9150506060830151613168606086018215159052565b509392505050565b8481526001600160a01b03848116602083015283166040820152608060608201819052600090611070908301846130d9565b81810381811115611eb957611eb9612f17565b6060815260006131c86060830186612a5a565b82810360208401526131da8186613080565b91505060018060a01b0383166040830152949350505050565b6000806040838503121561320657600080fd5b8251613211816125d3565b6020840151909250612d35816125d3565b80820180821115611eb957611eb9612f17565b60006020828403121561324757600080fd5b8151611f4181612af2565b83815282151560208201526060604082015260006132736060830184612f5c565b95945050505050565b60006020828403121561328e57600080fd5b815163ffffffff81168114611f4157600080fdfea2646970667358221220e48af7fc1918b05774447b5653292647bc83aaf31e5961d06468bfb34426483a64736f6c63430008100033", + "sourceMap": "1103:24489:79:-:0;;;5807:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5912:5;5892:17;:25;;;:52;;;;5941:3;5921:17;:23;;;5892:52;5888:127;;;5965:50;;-1:-1:-1;;;5965:50:79;;;;;;;;;;;5888:127;-1:-1:-1;;;;;6025:22:79;;;;;6057:33;;;;6100:36;;;;1103:24489;;14:177:93;93:13;;-1:-1:-1;;;;;135:31:93;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:450::-;283:6;291;299;352:2;340:9;331:7;327:23;323:32;320:52;;;368:1;365;358:12;320:52;391:40;421:9;391:40;:::i;:::-;381:50;;450:49;495:2;484:9;480:18;450:49;:::i;:::-;440:59;;542:2;531:9;527:18;521:25;586:10;579:5;575:22;568:5;565:33;555:61;;612:1;609;602:12;555:61;635:5;625:15;;;196:450;;;;;:::o;:::-;1103:24489:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806397194b13116100ad578063e170a9bf11610071578063e170a9bf14610288578063ef5cfb8c1461029b578063f7e69b16146102ae578063fa50e5d2146102d5578063fbfa77cf146102e857600080fd5b806397194b1314610229578063aeffddde1461023c578063c9111bd71461024f578063d2e8580614610262578063d3bfe76a1461027557600080fd5b806378415365116100f457806378415365146101cc5780637906afbf146101df5780637998a1c4146101ff57806389353a09146102075780638f210a6a1461021657600080fd5b806307546172146101315780630e222e52146101755780633e032a3b1461018b5780635c14acdb146101a457806369445c31146101b9575b600080fd5b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61017d600181565b60405190815260200161016c565b6123285b60405163ffffffff909116815260200161016c565b6101b76101b2366004612920565b61030f565b005b6101b76101c736600461299d565b610ed7565b61017d6101da366004612a09565b610ef0565b6101f26101ed366004612a3d565b61107a565b60405161016c9190612a9e565b61017d611181565b6040516000815260200161016c565b6101b7610224366004612ab1565b6111df565b6101b7610237366004612b0b565b6112df565b6101f261024a366004612a09565b611cdd565b6101b761025d366004612c88565b611d40565b6101b7610270366004612ab1565b611e12565b6101b7610283366004612d07565b611e8a565b610158610296366004612a09565b611ea3565b6101b76102a9366004612a3d565b611ebf565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102e3366004612d40565b611f36565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103739190612da3565b90506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190612dbc565b905061040860405180608001604052806060815260200160608152602001606081526020016000151581525090565b60006060828101829052604051631f29a8cd60e31b8152600481018690529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f94d466890602401600060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a29190810190612e34565b505090506104b08982611f48565b915080516001600160401b038111156104cb576104cb6125e8565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b50835260005b815181101561055b5781818151811061051557610515612f01565b60200260200101518460000151828151811061053357610533612f01565b6001600160a01b039092166020928302919091019091015261055481612f2d565b90506104fa565b5080516001600160401b03811115610575576105756125e8565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50602084015260005b81518110156105e457600019846020015182815181106105c9576105c9612f01565b60209081029190910101526105dd81612f2d565b90506105a7565b505080518751146106085760405163967575bd60e01b815260040160405180910390fd5b600081516001600160401b03811115610623576106236125e8565b60405190808252806020026020018201604052801561064c578160200160208202803683370190505b50905060005b8851811015610a805788818151811061066d5761066d612f01565b60200260200101516080015160000315610a7057600089828151811061069557610695612f01565b60200260200101516040015190506106ca818b84815181106106b9576106b9612f01565b60200260200101516080015161214d565b8a83815181106106dc576106dc612f01565b602002602001015160800181815250506107477f00000000000000000000000000000000000000000000000000000000000000008b848151811061072257610722612f01565b602002602001015160800151836001600160a01b03166121ce9092919063ffffffff16565b60006001600160a01b03168a838151811061076457610764612f01565b6020026020010151606001516001600160a01b0316146109c95783828151811061079057610790612f01565b60200260200101516001600160a01b03168a83815181106107b3576107b3612f01565b6020026020010151606001516001600160a01b0316146107e6576040516385f4bd3b60e01b815260040160405180910390fd5b60008a83815181106107fa576107fa612f01565b602002602001015160200151600181111561081757610817612f46565b14610835576040516374c0729b60e01b815260040160405180910390fd5b604080516080810182523080825260006020830181905292820152606081018290528b519091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352bbbe29908e908790811061089f5761089f612f01565b6020026020010151848e6000015188815181106108be576108be612f01565b60200260200101518f6020015189815181106108dc576108dc612f01565b60200260200101516040518563ffffffff1660e01b81526004016109039493929190612fa2565b6020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190612da3565b90506109a37f0000000000000000000000000000000000000000000000000000000000000000828e878151811061097f5761097f612f01565b6020026020010151606001516001600160a01b03166121ce9092919063ffffffff16565b808585815181106109b6576109b6612f01565b6020026020010181815250505050610a6e565b8382815181106109db576109db612f01565b60200260200101516001600160a01b03168a83815181106109fe576109fe612f01565b6020026020010151604001516001600160a01b031614610a31576040516385f4bd3b60e01b815260040160405180910390fd5b898281518110610a4357610a43612f01565b602002602001015160800151838381518110610a6157610a61612f01565b6020026020010181815250505b505b610a7981612f2d565b9050610652565b5060018187604051602001610a97939291906130b0565b60408051808303601f1901815291815284810191909152516370a0823160e01b8152306004820152600091506001600160a01b038a16906370a0823190602401602060405180830381865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190612da3565b60405163172b958560e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890610b6d908890309081908990600401613170565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190612da3565b610c1391906131a2565b9050600088516001600160401b03811115610c3057610c306125e8565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b509050600089516001600160401b03811115610c7757610c776125e8565b604051908082528060200260200182016040528015610ca0578160200160208202803683370190505b50905060005b8a51811015610dfc5760008b8281518110610cc357610cc3612f01565b602002602001015160400151905080838381518110610ce457610ce4612f01565b60200260200101906001600160a01b031690816001600160a01b0316815250508b8281518110610d1657610d16612f01565b602002602001015160800151848381518110610d3457610d34612f01565b602002602001018181525050610d83838381518110610d5557610d55612f01565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000612250565b60008c8381518110610d9757610d97612f01565b602002602001015160600151905060006001600160a01b0316816001600160a01b031614610de957610de9817f0000000000000000000000000000000000000000000000000000000000000000612250565b505080610df590612f2d565b9050610ca6565b506000866001600160a01b031663b333a17583858f6040518463ffffffff1660e01b8152600401610e2f939291906131b5565b602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612da3565b9050610ea98163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b841015610ec9576040516336bedbd960e11b815260040160405180910390fd5b505050505050505050505050565b604051633204ed5b60e21b815260040160405180910390fd5b600080600083806020019051810190610f0991906131f3565b90925090506001600160a01b038116610f8c576040516370a0823160e01b81523360048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190612da3565b949350505050565b6040516370a0823160e01b815233600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190612da3565b6040516370a0823160e01b815233600482015290915081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190612da3565b6110709190613222565b9695505050505050565b60606000826001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111739190810190612e34565b50509050610f848482611f48565b60006040516020016111c4906020808252601b908201527f42616c616e63657220506f6f6c2041646170746f72205620312e300000000000604082015260600190565b60405160208183030381529060405280519060200120905090565b6111e983836122fe565b60006111f5848361214d565b60405163095ea7b360e01b81526001600160a01b03808616600483015260248201839052919250849186169063095ea7b3906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613235565b50604051636e553f6560e01b8152600481018390523060248201526001600160a01b03821690636e553f6590604401600060405180830381600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506112d88582612250565b5050505050565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa1580156113ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113d69190810190612e34565b5050905060006113e68783611f48565b905083606001511561140b57604051636d22518360e01b815260040160405180910390fd5b600081516001600160401b03811115611426576114266125e8565b60405190808252806020026020018201604052801561144f578160200160208202803683370190505b50905060005b82518110156115115782818151811061147057611470612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e49190612da3565b8282815181106114f6576114f6612f01565b602090810291909101015261150a81612f2d565b9050611455565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612da3565b604051638bdb391360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638bdb3913906115d2908890309081908c90600401613170565b600060405180830381600087803b1580156115ec57600080fd5b505af1158015611600573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190612da3565b61167690826131a2565b905060005b835181101561175b5782818151811061169657611696612f01565b60200260200101518482815181106116b0576116b0612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612da3565b61172e91906131a2565b83828151811061174057611740612f01565b602090810291909101015261175481612f2d565b905061167b565b506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190612dbc565b905083518951146117e45760405163967575bd60e01b815260040160405180910390fd5b60005b8451811015611c035783818151811061180257611802612f01565b602002602001015160000315611bf35784818151811061182457611824612f01565b60200260200101516001600160a01b03168a828151811061184757611847612f01565b6020026020010151604001516001600160a01b03161461187a576040516385f4bd3b60e01b815260040160405180910390fd5b60006001600160a01b03168a828151811061189757611897612f01565b6020026020010151606001516001600160a01b031614611b41576119217f00000000000000000000000000000000000000000000000000000000000000008583815181106118e7576118e7612f01565b602002602001015187848151811061190157611901612f01565b60200260200101516001600160a01b03166121ce9092919063ffffffff16565b6040805160808101825230808252600060208301819052928201526060810191909152845185908390811061195857611958612f01565b60200260200101518b838151811061197257611972612f01565b60209081029190910101516080015260008b838151811061199557611995612f01565b60200260200101516020015160018111156119b2576119b2612f46565b146119d0576040516374c0729b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166352bbbe298c8481518110611a1157611a11612f01565b6020026020010151838d600001518681518110611a3057611a30612f01565b60200260200101518e602001518781518110611a4e57611a4e612f01565b60200260200101516040518563ffffffff1660e01b8152600401611a759493929190612fa2565b6020604051808303816000875af1158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190612da3565b858381518110611aca57611aca612f01565b602002602001018181525050611aeb868381518110610d5557610d55612f01565b8a8281518110611afd57611afd612f01565b602002602001015160600151868381518110611b1b57611b1b612f01565b60200260200101906001600160a01b031690816001600160a01b03168152505050611bf3565b816001600160a01b0316634f129c53868381518110611b6257611b62612f01565b60200260200101516040518263ffffffff1660e01b8152600401611b9591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190613235565b611bf3576040516301da6c4960e11b815260040160405180910390fd5b611bfc81612f2d565b90506117e7565b506000816001600160a01b031663b333a17586868e6040518463ffffffff1660e01b8152600401611c36939291906131b5565b602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190612da3565b9050611cb08363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b811015611cd0576040516336bedbd960e11b815260040160405180910390fd5b5050505050505050505050565b60408051600180825281830190925260609160208083019080368337019050509050611d0882611ea3565b81600081518110611d1b57611d1b612f01565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b611d49836124c4565b60008083806020019051810190611d6091906131f3565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190612da3565b905080871115611df5576000611de682896131a2565b9050611df3848483611e12565b505b611e096001600160a01b038416878961255b565b50505050505050565b611e1c83836122fe565b81611e27818361214d565b604051632e1a7d4d60e01b8152600481018290529092506001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050505050505050565b611e9f6001600160a01b0383168260006121ce565b5050565b600081806020019051810190611eb99190612dbc565b92915050565b6040516335313c2160e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a62784290602401600060405180830381600087803b158015611f2257600080fd5b505af11580156112d8573d6000803e3d6000fd5b6000611f4183610ef0565b9392505050565b80516060906000805b82811015611fa457856001600160a01b0316858281518110611f7557611f75612f01565b60200260200101516001600160a01b031603611f945760019150611fa4565b611f9d81612f2d565b9050611f51565b5080156120a057611fb66001836131a2565b6001600160401b03811115611fcd57611fcd6125e8565b604051908082528060200260200182016040528015611ff6578160200160208202803683370190505b5092506000805b8381101561209957866001600160a01b031686828151811061202157612021612f01565b60200260200101516001600160a01b0316146120895785818151811061204957612049612f01565b602002602001015185838151811061206357612063612f01565b6001600160a01b03909216602092830291909101909101528161208581612f2d565b9250505b61209281612f2d565b9050611ffd565b5050612145565b816001600160401b038111156120b8576120b86125e8565b6040519080825280602002602001820160405280156120e1578160200160208202803683370190505b50925060005b828110156121435784818151811061210157612101612f01565b602002602001015184828151811061211b5761211b612f01565b6001600160a01b039092166020928302919091019091015261213c81612f2d565b90506120e7565b505b505092915050565b600060001982036121c7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c09190612da3565b9050611eb9565b5080611eb9565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612da3565b1115611e9f57611e9f6001600160a01b0383168260006121ce565b8282028115158415858304851417166122f757600080fd5b0492915050565b6000612308611181565b604080516001600160a01b038681166020830152851681830152815180820383018152606082019092526123429291600091608001613252565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be9190612dbc565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016123eb91815260200190565b602060405180830381865afa158015612408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242c919061327c565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613235565b61224a5760405163114322b960e31b81526001600160a01b03808616600483015284166024820152604401612241565b6001600160a01b038116301480159061253a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190613235565b15612558576040516307de9b5160e21b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401612241565b6001600160a01b038116811461255857600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612620576126206125e8565b60405290565b604051608081016001600160401b0381118282101715612620576126206125e8565b604051601f8201601f191681016001600160401b0381118282101715612670576126706125e8565b604052919050565b60006001600160401b03821115612691576126916125e8565b5060051b60200190565b8035600281106126aa57600080fd5b919050565b80356126aa816125d3565b600082601f8301126126cb57600080fd5b81356001600160401b038111156126e4576126e46125e8565b6126f7601f8201601f1916602001612648565b81815284602083860101111561270c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261273a57600080fd5b8135602061274f61274a83612678565b612648565b82815260059290921b8401810191818101908684111561276e57600080fd5b8286015b848110156128315780356001600160401b03808211156127925760008081fd5b9088019060c0828b03601f19018113156127ac5760008081fd5b6127b46125fe565b87840135815260406127c781860161269b565b8983015260606127d88187016126af565b82840152608091506127eb8287016126af565b9083015260a0858101358284015292850135928484111561280e57600091508182fd5b61281c8e8b868901016126ba565b90830152508652505050918301918301612772565b509695505050505050565b600082601f83011261284d57600080fd5b8135602061285d61274a83612678565b82815260059290921b8401810191818101908684111561287c57600080fd5b8286015b848110156128315780358352918301918301612880565b6000604082840312156128a957600080fd5b604051604081016001600160401b0382821081831117156128cc576128cc6125e8565b8160405282935084359150808211156128e457600080fd5b6128f08683870161283c565b8352602085013591508082111561290657600080fd5b506129138582860161283c565b6020830152505092915050565b6000806000806080858703121561293657600080fd5b8435612941816125d3565b935060208501356001600160401b038082111561295d57600080fd5b61296988838901612729565b9450604087013591508082111561297f57600080fd5b5061298c87828801612897565b949793965093946060013593505050565b6000806000606084860312156129b257600080fd5b8335925060208401356001600160401b03808211156129d057600080fd5b6129dc878388016126ba565b935060408601359150808211156129f257600080fd5b506129ff868287016126ba565b9150509250925092565b600060208284031215612a1b57600080fd5b81356001600160401b03811115612a3157600080fd5b610f84848285016126ba565b600060208284031215612a4f57600080fd5b8135611f41816125d3565b600081518084526020808501945080840160005b83811015612a935781516001600160a01b031687529582019590820190600101612a6e565b509495945050505050565b602081526000611f416020830184612a5a565b600080600060608486031215612ac657600080fd5b8335612ad1816125d3565b92506020840135612ae1816125d3565b929592945050506040919091013590565b801515811461255857600080fd5b80356126aa81612af2565b60008060008060808587031215612b2157600080fd5b8435612b2c816125d3565b93506020858101356001600160401b0380821115612b4957600080fd5b612b5589838a01612729565b95506040880135915080821115612b6b57600080fd5b612b7789838a01612897565b94506060880135915080821115612b8d57600080fd5b908701906080828a031215612ba157600080fd5b612ba9612626565b823582811115612bb857600080fd5b8301601f81018b13612bc957600080fd5b8035612bd761274a82612678565b81815260059190911b8201860190868101908d831115612bf657600080fd5b928701925b82841015612c1d578335612c0e816125d3565b82529287019290870190612bfb565b84525050508284013582811115612c3357600080fd5b612c3f8b82860161283c565b85830152506040830135935081841115612c5857600080fd5b612c648a8585016126ba565b6040820152612c7560608401612b00565b6060820152969995985093965050505050565b60008060008060808587031215612c9e57600080fd5b843593506020850135612cb0816125d3565b925060408501356001600160401b0380821115612ccc57600080fd5b612cd8888389016126ba565b93506060870135915080821115612cee57600080fd5b50612cfb878288016126ba565b91505092959194509250565b60008060408385031215612d1a57600080fd5b8235612d25816125d3565b91506020830135612d35816125d3565b809150509250929050565b60008060408385031215612d5357600080fd5b82356001600160401b0380821115612d6a57600080fd5b612d76868387016126ba565b93506020850135915080821115612d8c57600080fd5b50612d99858286016126ba565b9150509250929050565b600060208284031215612db557600080fd5b5051919050565b600060208284031215612dce57600080fd5b8151611f41816125d3565b600082601f830112612dea57600080fd5b81516020612dfa61274a83612678565b82815260059290921b84018101918181019086841115612e1957600080fd5b8286015b848110156128315780518352918301918301612e1d565b600080600060608486031215612e4957600080fd5b83516001600160401b0380821115612e6057600080fd5b818601915086601f830112612e7457600080fd5b81516020612e8461274a83612678565b82815260059290921b8401810191818101908a841115612ea357600080fd5b948201945b83861015612eca578551612ebb816125d3565b82529482019490820190612ea8565b91890151919750909350505080821115612ee357600080fd5b50612ef086828701612dd9565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f3f57612f3f612f17565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b81811015612f8257602081850181015186830182015201612f66565b506000602082860101526020601f19601f83011685010191505092915050565b60e08152845160e08201526000602086015160028110612fd257634e487b7160e01b600052602160045260246000fd5b61010083015260408601516001600160a01b031661012083015260608601516130076101408401826001600160a01b03169052565b50608086015161016083015260a086015160c061018084015261302e6101a0840182612f5c565b91505061306e602083018680516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b60a082019390935260c0015292915050565b600081518084526020808501945080840160005b83811015612a9357815187529582019590820190600101613094565b8381526060602082015260006130c96060830185613080565b9050826040830152949350505050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561311e5783516001600160a01b0316835292840192918401916001016130f9565b5050828501519150858103838701526131378183613080565b92505050604083015184820360408601526131528282612f5c565b9150506060830151613168606086018215159052565b509392505050565b8481526001600160a01b03848116602083015283166040820152608060608201819052600090611070908301846130d9565b81810381811115611eb957611eb9612f17565b6060815260006131c86060830186612a5a565b82810360208401526131da8186613080565b91505060018060a01b0383166040830152949350505050565b6000806040838503121561320657600080fd5b8251613211816125d3565b6020840151909250612d35816125d3565b80820180821115611eb957611eb9612f17565b60006020828403121561324757600080fd5b8151611f4181612af2565b83815282151560208201526060604082015260006132736060830184612f5c565b95945050505050565b60006020828403121561328e57600080fd5b815163ffffffff81168114611f4157600080fdfea2646970667358221220e48af7fc1918b05774447b5653292647bc83aaf31e5961d06468bfb34426483a64736f6c63430008100033", + "sourceMap": "1103:24489:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5204:39;;;;;;;;-1:-1:-1;;;;;329:32:93;;;311:51;;299:2;284:18;5204:39:79;;;;;;;;5637:55;;5691:1;5637:55;;;;;519:25:93;;;507:2;492:18;5637:55:79;373:177:93;2415:78:80;2481:5;2415:78;;;729:10:93;717:23;;;699:42;;687:2;672:18;2415:78:80;555:192:93;10857:5846:79;;;;;;:::i;:::-;;:::i;:::-;;6947:136;;;;;;:::i;:::-;;:::i;8547:465::-;;;;;;:::i;:::-;;:::i;25262:328::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6594:145::-;;;:::i;10252:83::-;;;10300:4;9393:41:93;;9381:2;9366:18;10252:83:79;9253:187:93;21510:480:79;;;;;;:::i;:::-;;:::i;17221:4029::-;;;;;;:::i;:::-;;:::i;9934:183::-;;;;;;:::i;:::-;;:::i;7257:680::-;;;;;;:::i;:::-;;:::i;22257:369::-;;;;;;:::i;:::-;;:::i;9204:107:80:-;;;;;;:::i;:::-;;:::i;9285:147:79:-;;;;;;:::i;:::-;;:::i;22759:79::-;;;;;;:::i;:::-;;:::i;5489:40::-;;;;;8066:153;;;;;;:::i;:::-;;:::i;4934:29::-;;;;;10857:5846;11039:14;11074:9;-1:-1:-1;;;;;11056:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11039:58;;11107:23;11148:4;-1:-1:-1;;;;;11133:33:79;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11107:61;;11217:37;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11217:37:79;11294:5;11264:27;;;;:35;;;11399:27;;-1:-1:-1;;;11399:27:79;;;;;519:25:93;;;11264:27:79;;11294:5;11399;-1:-1:-1;;;;;11399:19:79;;;;492:18:93;;11399:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11399:27:79;;;;;;;;;;;;:::i;:::-;11364:62;;;;11459:64;11500:9;11512:10;11459:32;:64::i;:::-;11440:83;;11567:10;:17;-1:-1:-1;;;;;11554:31:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11554:31:79;-1:-1:-1;11537:48:79;;:14;11599:94;11619:10;:17;11615:1;:21;11599:94;;;11678:10;11689:1;11678:13;;;;;;;;:::i;:::-;;;;;;;11643:7;:14;;;11658:1;11643:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11643:50:79;;;:17;;;;;;;;;;;:50;11638:3;;;:::i;:::-;;;11599:94;;;;11744:10;:17;-1:-1:-1;;;;;11730:32:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11730:32:79;-1:-1:-1;11707:20:79;;;:55;11963:9;11958:87;11978:10;:17;11974:1;:21;11958:87;;;-1:-1:-1;;12002:7:79;:20;;;12023:1;12002:23;;;;;;;;:::i;:::-;;;;;;;;;;:43;11997:3;;;:::i;:::-;;;11958:87;;;;11350:706;12171:16;:23;12145:15;:22;:49;12141:100;;12203:38;;-1:-1:-1;;;12203:38:79;;;;;;;;;;;12141:100;12360:28;12405:16;:23;-1:-1:-1;;;;;12391:38:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12391:38:79;;12360:69;;12448:9;12443:2700;12463:15;:22;12459:1;:26;12443:2700;;;12622:15;12638:1;12622:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12651:1;12622:30;12618:44;12654:8;12618:44;12787:16;12820:15;12836:1;12820:18;;;;;;;;:::i;:::-;;;;;;;:26;;;12787:61;;12894:52;12908:10;12920:15;12936:1;12920:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12894:13;:52::i;:::-;12866:15;12882:1;12866:18;;;;;;;;:::i;:::-;;;;;;;:25;;:80;;;;;12964:65;12995:5;13003:15;13019:1;13003:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12964:10;-1:-1:-1;;;;;12964:22:79;;;:65;;;;;:::i;:::-;13186:1;-1:-1:-1;;;;;13138:50:79;13146:15;13162:1;13146:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;13138:50:79;;13134:1995;;13367:16;13384:1;13367:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13319:68:79;13327:15;13343:1;13327:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;13319:68:79;;13315:162;;13420:57;;-1:-1:-1;;;13420:57:79;;;;;;;;;;;13315:162;13587:24;13560:15;13576:1;13560:18;;;;;;;;:::i;:::-;;;;;;;:23;;;:51;;;;;;;;:::i;:::-;;13556:125;;13644:37;;-1:-1:-1;;;13644:37:79;;;;;;;;;;;13556:125;13806:253;;;;;;;;13870:4;13806:253;;;13760:43;13806:253;;;;;;;;;;;;;;;;14312:18;;13806:253;;13760:43;14276:5;-1:-1:-1;;;;;14276:10:79;;;;14312:15;;14328:1;;14312:18;;;;;;:::i;:::-;;;;;;;14356:14;14396:8;:27;;;14424:1;14396:30;;;;;;;;:::i;:::-;;;;;;;14452:8;:22;;;14475:1;14452:25;;;;;;;;:::i;:::-;;;;;;;14276:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14252:247;;14582:86;14646:5;14654:13;14596:15;14612:1;14596:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;14582:55:79;;;:86;;;;;:::i;:::-;14708:13;14691:11;14703:1;14691:14;;;;;;;;:::i;:::-;;;;;;:30;;;;;13190:1550;;13134:1995;;;14936:16;14953:1;14936:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;14889:67:79;14897:15;14913:1;14897:18;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;14889:67:79;;14885:161;;14989:57;;-1:-1:-1;;;14989:57:79;;;;;;;;;;;14885:161;15085:15;15101:1;15085:18;;;;;;;;:::i;:::-;;;;;;;:25;;;15068:11;15080:1;15068:14;;;;;;;;:::i;:::-;;;;;;:42;;;;;13134:1995;12492:2651;12443:2700;12487:3;;;:::i;:::-;;;12443:2700;;;;5691:1;15215:11;15228:10;15175:64;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15175:64:79;;;;;;15156:16;;;:83;;;;15282:34;-1:-1:-1;;;15282:34:79;;15310:4;15282:34;;;311:51:93;15260:19:79;;-1:-1:-1;;;;;;15282:19:79;;;;;284:18:93;;15282:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15326:61;;-1:-1:-1;;;15326:61:79;;15260:56;;-1:-1:-1;;;;;;15326:5:79;:14;;;;:61;;15341:6;;15357:4;;;;15379:7;;15326:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15411:34:79;;-1:-1:-1;;;15411:34:79;;15439:4;15411:34;;;311:51:93;15448:11:79;;-1:-1:-1;;;;;;15411:19:79;;;-1:-1:-1;15411:19:79;;284:18:93;;15411:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;:::i;:::-;15397:62;;15563:29;15609:15;:22;-1:-1:-1;;;;;15595:37:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15595:37:79;;15563:69;;15642:26;15683:15;:22;-1:-1:-1;;;;;15671:35:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15671:35:79;;15642:64;;15802:9;15797:578;15817:15;:22;15813:1;:26;15797:578;;;15860:15;15886;15902:1;15886:18;;;;;;;;:::i;:::-;;;;;;;:26;;;15860:53;;15958:7;15927:11;15939:1;15927:14;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1;;;;;15927:40:79;;;-1:-1:-1;;;;;15927:40:79;;;;;15999:15;16015:1;15999:18;;;;;;;;:::i;:::-;;;;;;;:25;;;15981:12;15994:1;15981:15;;;;;;;;:::i;:::-;;;;;;:43;;;;;16082:55;16106:11;16118:1;16106:14;;;;;;;;:::i;:::-;;;;;;;16130:5;16082:23;:55::i;:::-;16211:16;16238:15;16254:1;16238:18;;;;;;;;:::i;:::-;;;;;;;:27;;;16211:55;;16304:1;-1:-1:-1;;;;;16284:22:79;:8;-1:-1:-1;;;;;16284:22:79;;16280:84;;16308:56;16338:8;16357:5;16308:23;:56::i;:::-;15846:529;;15841:3;;;;:::i;:::-;;;15797:578;;;;16463:32;16498:11;-1:-1:-1;;;;;16498:21:79;;16520:11;16533:12;16547:9;16498:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16463:94;-1:-1:-1;16585:58:79;16463:94;16585:58;16621:16;16585:58;;;16639:3;;16585:35;:58;:::i;:::-;16571:11;:72;16567:129;;;16664:32;;-1:-1:-1;;;16664:32:79;;;;;;;;;;;16567:129;11029:5674;;;;;;;;10857:5846;;;;:::o;6947:136::-;7039:37;;-1:-1:-1;;;7039:37:79;;;;;;;;;;;8547:465;8623:7;8643:9;8654:22;8691:12;8680:42;;;;;;;;;;;;:::i;:::-;8642:80;;-1:-1:-1;8642:80:79;-1:-1:-1;;;;;;8736:28:79;;8732:73;;8773:32;;-1:-1:-1;;;8773:32:79;;8794:10;8773:32;;;311:51:93;-1:-1:-1;;;;;8773:20:79;;;;;284:18:93;;8773:32:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8766:39;8547:465;-1:-1:-1;;;;8547:465:79:o;8732:73::-;8903:41;;-1:-1:-1;;;8903:41:79;;8933:10;8903:41;;;311:51:93;8857:14:79;;8815:25;;-1:-1:-1;;;;;8903:29:79;;;;;284:18:93;;8903:41:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8961:32;;-1:-1:-1;;;8961:32:79;;8982:10;8961:32;;;311:51:93;8883:61:79;;-1:-1:-1;8883:61:79;;-1:-1:-1;;;;;8961:20:79;;;;;284:18:93;;8961:32:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;;:::i;:::-;8954:51;8547:465;-1:-1:-1;;;;;;8547:465:79:o;25262:328::-;25331:29;25372:14;25407:9;-1:-1:-1;;;;;25389:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25475:27;;-1:-1:-1;;;25475:27:79;;;;;519:25:93;;;25372:58:79;;-1:-1:-1;25441:26:79;;-1:-1:-1;;;;;25475:5:79;:19;;;;492:18:93;;25475:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25475:27:79;;;;;;;;;;;;:::i;:::-;25440:62;;;;25519:64;25560:9;25572:10;25519:32;:64::i;6594:145::-;6654:7;6690:41;;;;;;24143:2:93;24125:21;;;24182:2;24162:18;;;24155:30;24221:29;24216:2;24201:18;;24194:57;24283:2;24268:18;;23941:351;6690:41:79;;;;;;;;;;;;;6680:52;;;;;;6673:59;;6594:145;:::o;21510:480::-;21603:52;21632:4;21639:15;21603:20;:52::i;:::-;21665:16;21684:30;21698:4;21704:9;21684:13;:30::i;:::-;21815:47;;-1:-1:-1;;;21815:47:79;;-1:-1:-1;;;;;24489:32:93;;;21815:47:79;;;24471:51:93;24538:18;;;24531:34;;;21665:49:79;;-1:-1:-1;21789:15:79;;21815:12;;;;;24444:18:93;;21815:47:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21872:47:79;;-1:-1:-1;;;21872:47:79;;;;;25000:25:93;;;21913:4:79;25041:18:93;;;25034:60;-1:-1:-1;;;;;21872:22:79;;;;;24973:18:93;;21872:47:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21929:54;21953:4;21967:14;21929:23;:54::i;:::-;21593:397;;21510:480;;;:::o;17221:4029::-;17421:14;17456:9;-1:-1:-1;;;;;17438:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17568:27;;-1:-1:-1;;;17568:27:79;;;;;519:25:93;;;17421:58:79;;-1:-1:-1;17534:26:79;;-1:-1:-1;;;;;17568:5:79;:19;;;;492:18:93;;17568:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17568:27:79;;;;;;;;;;;;:::i;:::-;17533:62;;;;17605:32;17640:64;17681:9;17693:10;17640:32;:64::i;:::-;17605:99;;17765:7;:25;;;17761:90;;;17799:52;;-1:-1:-1;;;17799:52:79;;;;;;;;;;;17761:90;17963:31;18011:17;:24;-1:-1:-1;;;;;17997:39:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17997:39:79;;17963:73;;18051:9;18046:128;18066:17;:24;18062:1;:28;18046:128;;;18129:17;18147:1;18129:20;;;;;;;;:::i;:::-;;;;;;;;;;;:45;;-1:-1:-1;;;18129:45:79;;18168:4;18129:45;;;311:51:93;-1:-1:-1;;;;;18129:30:79;;;;;;284:18:93;;18129:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18109:14;18124:1;18109:17;;;;;;;;:::i;:::-;;;;;;;;;;:65;18092:3;;;:::i;:::-;;;18046:128;;;-1:-1:-1;18207:34:79;;-1:-1:-1;;;18207:34:79;;18235:4;18207:34;;;311:51:93;18185:19:79;;-1:-1:-1;;;;;18207:19:79;;;;;284:18:93;;18207:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18251:70;;-1:-1:-1;;;18251:70:79;;18185:56;;-1:-1:-1;;;;;;18251:5:79;:14;;;;:70;;18266:6;;18282:4;;;;18313:7;;18251:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18359:34:79;;-1:-1:-1;;;18359:34:79;;18387:4;18359:34;;;311:51:93;-1:-1:-1;;;;;18359:19:79;;;-1:-1:-1;18359:19:79;;-1:-1:-1;284:18:93;;18359:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18345:48;;:11;:48;:::i;:::-;18331:62;;18408:9;18403:148;18423:17;:24;18419:1;:28;18403:148;;;18534:14;18549:1;18534:17;;;;;;;;:::i;:::-;;;;;;;18486;18504:1;18486:20;;;;;;;;:::i;:::-;;;;;;;;;;;:45;;-1:-1:-1;;;18486:45:79;;18525:4;18486:45;;;311:51:93;-1:-1:-1;;;;;18486:30:79;;;;;;284:18:93;;18486:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;;:::i;:::-;18466:14;18481:1;18466:17;;;;;;;;:::i;:::-;;;;;;;;;;:85;18449:3;;;:::i;:::-;;;18403:148;;;;18562:23;18603:4;-1:-1:-1;;;;;18588:33:79;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18562:61;;18662:17;:24;18637:14;:21;:49;18633:100;;18695:38;;-1:-1:-1;;;18695:38:79;;;;;;;;;;;18633:100;18748:9;18743:2169;18763:17;:24;18759:1;:28;18743:2169;;;18877:14;18892:1;18877:17;;;;;;;;:::i;:::-;;;;;;;18898:1;18877:22;18873:36;18901:8;18873:36;19038:17;19056:1;19038:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;18992:67:79;19000:14;19015:1;19000:17;;;;;;;;:::i;:::-;;;;;;;:25;;;-1:-1:-1;;;;;18992:67:79;;18988:153;;19084:57;;-1:-1:-1;;;19084:57:79;;;;;;;;;;;18988:153;19207:1;-1:-1:-1;;;;;19160:49:79;19168:14;19183:1;19168:17;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;19160:49:79;;19156:1746;;19229:67;19270:5;19278:14;19293:1;19278:17;;;;;;;;:::i;:::-;;;;;;;19229;19247:1;19229:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;19229:32:79;;;:67;;;;;:::i;:::-;19443:233;;;;;;;;19503:4;19443:233;;;19397:43;19443:233;;;;;;;;;;;;;;;;;19793:17;;:14;;19808:1;;19793:17;;;;;;:::i;:::-;;;;;;;19766:14;19781:1;19766:17;;;;;;;;:::i;:::-;;;;;;;;;;;:24;;:44;19911:24;19885:14;19900:1;19885:17;;;;;;;;:::i;:::-;;;;;;;:22;;;:50;;;;;;;;:::i;:::-;;19881:100;;19944:37;;-1:-1:-1;;;19944:37:79;;;;;;;;;;;19881:100;20103:5;-1:-1:-1;;;;;20103:10:79;;20135:14;20150:1;20135:17;;;;;;;;:::i;:::-;;;;;;;20174:14;20210:8;:27;;;20238:1;20210:30;;;;;;;;:::i;:::-;;;;;;;20262:8;:22;;;20285:1;20262:25;;;;;;;;:::i;:::-;;;;;;;20103:202;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20083:14;20098:1;20083:17;;;;;;;;:::i;:::-;;;;;;:222;;;;;20364:61;20388:17;20406:1;20388:20;;;;;;;;:::i;20364:61::-;20558:14;20573:1;20558:17;;;;;;;;:::i;:::-;;;;;;;:26;;;20521:17;20539:1;20521:20;;;;;;;;:::i;:::-;;;;;;:65;-1:-1:-1;;;;;20521:65:79;;;-1:-1:-1;;;;;20521:65:79;;;;;19211:1390;19156:1746;;;20612:11;-1:-1:-1;;;;;20612:23:79;;20636:17;20654:1;20636:20;;;;;;;;:::i;:::-;;;;;;;20612:45;;;;;;;;;;;;;;-1:-1:-1;;;;;329:32:93;;;;311:51;;299:2;284:18;;140:228;20612:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20607:295;;20837:50;;-1:-1:-1;;;20837:50:79;;;;;;;;;;;20607:295;18789:3;;;:::i;:::-;;;18743:2169;;;;21000:33;21036:11;-1:-1:-1;;;;;21036:21:79;;21058:17;21077:14;21093:9;21036:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21000:103;-1:-1:-1;21145:45:79;:11;:45;21168:16;21145:45;;;21186:3;;21145:22;:45;:::i;:::-;21117:25;:73;21113:130;;;21211:32;;-1:-1:-1;;;21211:32:79;;;;;;;;;;;21113:130;17411:3839;;;;;;;17221:4029;;;;:::o;9934:183::-;10053:14;;;10065:1;10053:14;;;;;;;;;10011:21;;10053:14;;;;;;;;;;;-1:-1:-1;10053:14:79;10044:23;;10089:21;10097:12;10089:7;:21::i;:::-;10077:6;10084:1;10077:9;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;10077:33:79;;;-1:-1:-1;;;;;10077:33:79;;;;;9934:183;;;:::o;7257:680::-;7466:34;7489:10;7466:22;:34::i;:::-;7511:9;7522:22;7559:12;7548:42;;;;;;;;;;;;:::i;:::-;7634:28;;-1:-1:-1;;;7634:28:79;;7656:4;7634:28;;;311:51:93;7510:80:79;;-1:-1:-1;7510:80:79;-1:-1:-1;7600:31:79;;-1:-1:-1;;;;;7634:13:79;;;;;284:18:93;;7634:28:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7600:62;;7695:23;7676:16;:42;7672:203;;;7734:23;7760:42;7779:23;7760:16;:42;:::i;:::-;7734:68;;7816:48;7827:3;7832:14;7848:15;7816:10;:48::i;:::-;7720:155;7672:203;7884:46;-1:-1:-1;;;;;7884:16:79;;7901:10;7913:16;7884;:46::i;:::-;7416:521;;;7257:680;;;;:::o;22257:369::-;22351:52;22380:4;22387:15;22351:20;:52::i;:::-;22478:15;22517:57;22478:15;22563:10;22517:13;:57::i;:::-;22584:35;;-1:-1:-1;;;22584:35:79;;;;;519:25:93;;;22504:70:79;;-1:-1:-1;;;;;;22584:23:79;;;;;492:18:93;;22584:35:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22341:285;22257:369;;;:::o;9204:107:80:-;9275:29;-1:-1:-1;;;;;9275:17:80;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;9285:147:79:-;9359:5;9400:12;9389:35;;;;;;;;;;;;:::i;:::-;9376:49;9285:147;-1:-1:-1;;9285:147:79:o;22759:79::-;22813:18;;-1:-1:-1;;;22813:18:79;;-1:-1:-1;;;;;329:32:93;;;22813:18:79;;;311:51:93;22813:6:79;:11;;;;284:18:93;;22813::79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8066:153;8163:7;8189:23;8199:12;8189:9;:23::i;:::-;8182:30;8066:153;-1:-1:-1;;;8066:153:79:o;23963:1066::-;24151:17;;24091:21;;24124:24;;24288:184;24308:16;24304:1;:20;24288:184;;;24375:3;-1:-1:-1;;;;;24349:29:79;24357:10;24368:1;24357:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;24349:29:79;;24345:117;;24420:4;24398:26;;24442:5;;24345:117;24326:3;;;:::i;:::-;;;24288:184;;;;24485:19;24481:542;;;24541:20;24560:1;24541:16;:20;:::i;:::-;-1:-1:-1;;;;;24529:33:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24529:33:79;;24520:42;;24576:19;24614:9;24609:237;24629:16;24625:1;:20;24609:237;;;24700:3;-1:-1:-1;;;;;24674:29:79;24682:10;24693:1;24682:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;24674:29:79;;24670:162;;24763:10;24774:1;24763:13;;;;;;;;:::i;:::-;;;;;;;24727:6;24734:11;24727:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24727:51:79;;;:19;;;;;;;;;;;:51;24800:13;;;;:::i;:::-;;;;24670:162;24647:3;;;:::i;:::-;;;24609:237;;;;24506:350;24481:542;;;24897:16;-1:-1:-1;;;;;24885:29:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24885:29:79;;24876:38;;24933:9;24928:84;24948:16;24944:1;:20;24928:84;;;24997:10;25008:1;24997:13;;;;;;;;:::i;:::-;;;;;;;24971:6;24978:1;24971:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24971:41:79;;;:9;;;;;;;;;;;:41;24966:3;;;:::i;:::-;;;24928:84;;;;24481:542;24114:915;;23963:1066;;;;:::o;7816:207:80:-;7899:7;-1:-1:-1;;7922:6:80;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:80;;7982:4;7958:30;;;311:51:93;-1:-1:-1;;;;;7958:15:80;;;;;284:18:93;;7958:30:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:80;8003:13;;4327:1454:46;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:46;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:46;;26154:2:93;5740:34:46;;;26136:21:93;26193:2;26173:18;;;26166:30;-1:-1:-1;;;26212:18:93;;;26205:44;26266:18;;5740:34:46;;;;;;;;;4428:1353;4327:1454;;;:::o;8158:167:80:-;8244:39;;-1:-1:-1;;;8244:39:80;;8268:4;8244:39;;;26507:34:93;-1:-1:-1;;;;;26577:15:93;;;26557:18;;;26550:43;8286:1:80;;8244:15;;;;;;26442:18:93;;8244:39:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:80;;8307:7;8316:1;8289:17;:29::i;1357:535:90:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:90:o;23379:461:79:-;23472:20;23516:12;:10;:12::i;:::-;23537:33;;;-1:-1:-1;;;;;26525:15:93;;;23537:33:79;;;26507:34:93;26577:15;;26557:18;;;26550:43;23537:33:79;;;;;;;;;26442:18:93;;;23537:33:79;;;23505:66;;;-1:-1:-1;;23505:66:79;;;:::i;:::-;;;;;;;;;;;;;23495:77;;;;;;23472:100;;23582:17;23617:4;-1:-1:-1;;;;;23602:30:79;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23602:60:79;;23663:12;23602:74;;;;;;;;;;;;;519:25:93;;507:2;492:18;;373:177;23602:74:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23691:48;;-1:-1:-1;;;23691:48:79;;729:10:93;717:23;;23691:48:79;;;699:42:93;23582:94:79;;-1:-1:-1;23706:4:79;;23691:36;;672:18:93;;23691:48:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23686:147;;23760:73;;-1:-1:-1;;;23760:73:79;;-1:-1:-1;;;;;26525:15:93;;;23760:73:79;;;26507:34:93;26577:15;;26557:18;;;26550:43;26442:18;;23760:73:79;26295:304:93;8425:218:80;-1:-1:-1;;;;;8503:25:80;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:80;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:80;;;;;;;;;;;8499:137;8425:218;:::o;2865:1456:46:-;2977:12;3104:4;3098:11;-1:-1:-1;;;3227:17:46;3220:93;3360:2;3356:1;3337:17;3333:25;3326:37;3440:6;3435:2;3416:17;3412:26;3405:42;4242:2;4239:1;4235:2;4216:17;4213:1;4206:5;4199;4194:51;3763:16;3756:24;3750:2;3732:16;3729:24;3725:1;3721;3715:8;3712:15;3708:46;3705:76;3505:754;3494:765;;;4287:7;4279:35;;;;-1:-1:-1;;;4279:35:46;;27944:2:93;4279:35:46;;;27926:21:93;27983:2;27963:18;;;27956:30;-1:-1:-1;;;28002:18:93;;;27995:45;28057:18;;4279:35:46;27742:339:93;752:138;-1:-1:-1;;;;;834:31:93;;824:42;;814:70;;880:1;877;870:12;895:127;956:10;951:3;947:20;944:1;937:31;987:4;984:1;977:15;1011:4;1008:1;1001:15;1027:253;1099:2;1093:9;1141:4;1129:17;;-1:-1:-1;;;;;1161:34:93;;1197:22;;;1158:62;1155:88;;;1223:18;;:::i;:::-;1259:2;1252:22;1027:253;:::o;1285:252::-;1357:2;1351:9;1399:3;1387:16;;-1:-1:-1;;;;;1418:34:93;;1454:22;;;1415:62;1412:88;;;1480:18;;:::i;1542:275::-;1613:2;1607:9;1678:2;1659:13;;-1:-1:-1;;1655:27:93;1643:40;;-1:-1:-1;;;;;1698:34:93;;1734:22;;;1695:62;1692:88;;;1760:18;;:::i;:::-;1796:2;1789:22;1542:275;;-1:-1:-1;1542:275:93:o;1822:193::-;1892:4;-1:-1:-1;;;;;1917:6:93;1914:30;1911:56;;;1947:18;;:::i;:::-;-1:-1:-1;1992:1:93;1988:14;2004:4;1984:25;;1822:193::o;2020:149::-;2094:20;;2143:1;2133:12;;2123:40;;2159:1;2156;2149:12;2123:40;2020:149;;;:::o;2174:::-;2250:20;;2279:38;2250:20;2279:38;:::i;2328:530::-;2370:5;2423:3;2416:4;2408:6;2404:17;2400:27;2390:55;;2441:1;2438;2431:12;2390:55;2477:6;2464:20;-1:-1:-1;;;;;2499:2:93;2496:26;2493:52;;;2525:18;;:::i;:::-;2569:55;2612:2;2593:13;;-1:-1:-1;;2589:27:93;2618:4;2585:38;2569:55;:::i;:::-;2649:2;2640:7;2633:19;2695:3;2688:4;2683:2;2675:6;2671:15;2667:26;2664:35;2661:55;;;2712:1;2709;2702:12;2661:55;2777:2;2770:4;2762:6;2758:17;2751:4;2742:7;2738:18;2725:55;2825:1;2800:16;;;2818:4;2796:27;2789:38;;;;2804:7;2328:530;-1:-1:-1;;;2328:530:93:o;2863:1853::-;2927:5;2980:3;2973:4;2965:6;2961:17;2957:27;2947:55;;2998:1;2995;2988:12;2947:55;3034:6;3021:20;3060:4;3084:70;3100:53;3150:2;3100:53;:::i;:::-;3084:70;:::i;:::-;3188:15;;;3274:1;3270:10;;;;3258:23;;3254:32;;;3219:12;;;;3298:15;;;3295:35;;;3326:1;3323;3316:12;3295:35;3362:2;3354:6;3350:15;3374:1313;3390:6;3385:3;3382:15;3374:1313;;;3476:3;3463:17;-1:-1:-1;;;;;3553:2:93;3540:11;3537:19;3534:109;;;3597:1;3626:2;3622;3615:14;3534:109;3666:24;;;;3713:4;3741:12;;;-1:-1:-1;;3737:26:93;3733:35;-1:-1:-1;3730:125:93;;;3809:1;3838:2;3834;3827:14;3730:125;3881:22;;:::i;:::-;3951:2;3947;3943:11;3930:25;3923:5;3916:40;3979:2;4017:37;4050:2;4046;4042:11;4017:37;:::i;:::-;4012:2;4005:5;4001:14;3994:61;4078:2;4116:39;4151:2;4147;4143:11;4116:39;:::i;:::-;4111:2;4104:5;4100:14;4093:63;4180:3;4169:14;;4219:40;4254:3;4250:2;4246:12;4219:40;:::i;:::-;4203:14;;;4196:64;4284:3;4337:12;;;4324:26;4307:15;;;4300:51;4393:11;;;4380:25;;4421:16;;;4418:109;;;4479:1;4468:12;;4509:3;4504;4497:16;4418:109;4564:49;4609:3;4604:2;4593:8;4589:2;4585:17;4581:26;4564:49;:::i;:::-;4547:15;;;4540:74;-1:-1:-1;4627:18:93;;-1:-1:-1;;;4665:12:93;;;;3407;;3374:1313;;;-1:-1:-1;4705:5:93;2863:1853;-1:-1:-1;;;;;;2863:1853:93:o;4721:672::-;4775:5;4828:3;4821:4;4813:6;4809:17;4805:27;4795:55;;4846:1;4843;4836:12;4795:55;4882:6;4869:20;4908:4;4932:70;4948:53;4998:2;4948:53;:::i;4932:70::-;5036:15;;;5122:1;5118:10;;;;5106:23;;5102:32;;;5067:12;;;;5146:15;;;5143:35;;;5174:1;5171;5164:12;5143:35;5210:2;5202:6;5198:15;5222:142;5238:6;5233:3;5230:15;5222:142;;;5304:17;;5292:30;;5342:12;;;;5255;;5222:142;;5398:750;5453:5;5501:4;5489:9;5484:3;5480:19;5476:30;5473:50;;;5519:1;5516;5509:12;5473:50;5552:4;5546:11;5596:4;5588:6;5584:17;-1:-1:-1;;;;;5688:6:93;5676:10;5673:22;5668:2;5656:10;5653:18;5650:46;5647:72;;;5699:18;;:::i;:::-;5741:10;5735:4;5728:24;5770:6;5761:15;;5812:9;5799:23;5785:37;;5845:2;5837:6;5834:14;5831:34;;;5861:1;5858;5851:12;5831:34;5889:57;5942:3;5933:6;5922:9;5918:22;5889:57;:::i;:::-;5881:6;5874:73;6000:2;5989:9;5985:18;5972:32;5956:48;;6029:2;6019:8;6016:16;6013:36;;;6045:1;6042;6035:12;6013:36;;6082:59;6137:3;6126:8;6115:9;6111:24;6082:59;:::i;:::-;6077:2;6069:6;6065:15;6058:84;;;5398:750;;;;:::o;6153:860::-;6335:6;6343;6351;6359;6412:3;6400:9;6391:7;6387:23;6383:33;6380:53;;;6429:1;6426;6419:12;6380:53;6468:9;6455:23;6487:38;6519:5;6487:38;:::i;:::-;6544:5;-1:-1:-1;6600:2:93;6585:18;;6572:32;-1:-1:-1;;;;;6653:14:93;;;6650:34;;;6680:1;6677;6670:12;6650:34;6703:71;6766:7;6757:6;6746:9;6742:22;6703:71;:::i;:::-;6693:81;;6827:2;6816:9;6812:18;6799:32;6783:48;;6856:2;6846:8;6843:16;6840:36;;;6872:1;6869;6862:12;6840:36;;6895:61;6948:7;6937:8;6926:9;6922:24;6895:61;:::i;:::-;6153:860;;;;-1:-1:-1;6885:71:93;;7003:2;6988:18;6975:32;;-1:-1:-1;;;6153:860:93:o;7018:607::-;7113:6;7121;7129;7182:2;7170:9;7161:7;7157:23;7153:32;7150:52;;;7198:1;7195;7188:12;7150:52;7234:9;7221:23;7211:33;;7295:2;7284:9;7280:18;7267:32;-1:-1:-1;;;;;7359:2:93;7351:6;7348:14;7345:34;;;7375:1;7372;7365:12;7345:34;7398:49;7439:7;7430:6;7419:9;7415:22;7398:49;:::i;:::-;7388:59;;7500:2;7489:9;7485:18;7472:32;7456:48;;7529:2;7519:8;7516:16;7513:36;;;7545:1;7542;7535:12;7513:36;;7568:51;7611:7;7600:8;7589:9;7585:24;7568:51;:::i;:::-;7558:61;;;7018:607;;;;;:::o;7630:320::-;7698:6;7751:2;7739:9;7730:7;7726:23;7722:32;7719:52;;;7767:1;7764;7757:12;7719:52;7807:9;7794:23;-1:-1:-1;;;;;7832:6:93;7829:30;7826:50;;;7872:1;7869;7862:12;7826:50;7895:49;7936:7;7927:6;7916:9;7912:22;7895:49;:::i;7955:254::-;8014:6;8067:2;8055:9;8046:7;8042:23;8038:32;8035:52;;;8083:1;8080;8073:12;8035:52;8122:9;8109:23;8141:38;8173:5;8141:38;:::i;8214:468::-;8274:3;8312:5;8306:12;8339:6;8334:3;8327:19;8365:4;8394:2;8389:3;8385:12;8378:19;;8431:2;8424:5;8420:14;8452:1;8462:195;8476:6;8473:1;8470:13;8462:195;;;8541:13;;-1:-1:-1;;;;;8537:39:93;8525:52;;8597:12;;;;8632:15;;;;8573:1;8491:9;8462:195;;;-1:-1:-1;8673:3:93;;8214:468;-1:-1:-1;;;;;8214:468:93:o;8687:283::-;8881:2;8870:9;8863:21;8844:4;8901:63;8960:2;8949:9;8945:18;8937:6;8901:63;:::i;9445:485::-;9537:6;9545;9553;9606:2;9594:9;9585:7;9581:23;9577:32;9574:52;;;9622:1;9619;9612:12;9574:52;9661:9;9648:23;9680:38;9712:5;9680:38;:::i;:::-;9737:5;-1:-1:-1;9794:2:93;9779:18;;9766:32;9807:40;9766:32;9807:40;:::i;:::-;9445:485;;9866:7;;-1:-1:-1;;;9920:2:93;9905:18;;;;9892:32;;9445:485::o;9935:118::-;10021:5;10014:13;10007:21;10000:5;9997:32;9987:60;;10043:1;10040;10033:12;10058:128;10123:20;;10152:28;10123:20;10152:28;:::i;10191:2347::-;10407:6;10415;10423;10431;10484:3;10472:9;10463:7;10459:23;10455:33;10452:53;;;10501:1;10498;10491:12;10452:53;10540:9;10527:23;10559:38;10591:5;10559:38;:::i;:::-;10616:5;-1:-1:-1;10640:2:93;10678:18;;;10665:32;-1:-1:-1;;;;;10746:14:93;;;10743:34;;;10773:1;10770;10763:12;10743:34;10796:71;10859:7;10850:6;10839:9;10835:22;10796:71;:::i;:::-;10786:81;;10920:2;10909:9;10905:18;10892:32;10876:48;;10949:2;10939:8;10936:16;10933:36;;;10965:1;10962;10955:12;10933:36;10988:61;11041:7;11030:8;11019:9;11015:24;10988:61;:::i;:::-;10978:71;;11102:2;11091:9;11087:18;11074:32;11058:48;;11131:2;11121:8;11118:16;11115:36;;;11147:1;11144;11137:12;11115:36;11170:24;;;;11228:3;11210:16;;;11206:26;11203:46;;;11245:1;11242;11235:12;11203:46;11273:22;;:::i;:::-;11333:2;11320:16;11361:2;11351:8;11348:16;11345:36;;;11377:1;11374;11367:12;11345:36;11400:17;;11448:4;11440:13;;11436:27;-1:-1:-1;11426:55:93;;11477:1;11474;11467:12;11426:55;11513:2;11500:16;11536:70;11552:53;11602:2;11552:53;:::i;11536:70::-;11640:15;;;11722:1;11718:10;;;;11710:19;;11706:28;;;11671:12;;;;11746:19;;;11743:39;;;11778:1;11775;11768:12;11743:39;11802:11;;;;11822:230;11838:6;11833:3;11830:15;11822:230;;;11920:3;11907:17;11937:40;11969:7;11937:40;:::i;:::-;11990:20;;11855:12;;;;12030;;;;11822:230;;;12061:22;;-1:-1:-1;;;12121:11:93;;;12108:25;12145:16;;;12142:36;;;12174:1;12171;12164:12;12142:36;12212:56;12260:7;12249:8;12245:2;12241:17;12212:56;:::i;:::-;12207:2;12198:7;12194:16;12187:82;;12315:2;12311;12307:11;12294:25;12278:41;;12344:2;12334:8;12331:16;12328:36;;;12360:1;12357;12350:12;12328:36;12398:44;12434:7;12423:8;12419:2;12415:17;12398:44;:::i;:::-;12393:2;12384:7;12380:16;12373:70;12477:28;12501:2;12497;12493:11;12477:28;:::i;:::-;12472:2;12459:16;;12452:54;10191:2347;;;;-1:-1:-1;10191:2347:93;;-1:-1:-1;;;;;10191:2347:93:o;12543:750::-;12647:6;12655;12663;12671;12724:3;12712:9;12703:7;12699:23;12695:33;12692:53;;;12741:1;12738;12731:12;12692:53;12777:9;12764:23;12754:33;;12837:2;12826:9;12822:18;12809:32;12850:38;12882:5;12850:38;:::i;:::-;12907:5;-1:-1:-1;12963:2:93;12948:18;;12935:32;-1:-1:-1;;;;;13016:14:93;;;13013:34;;;13043:1;13040;13033:12;13013:34;13066:49;13107:7;13098:6;13087:9;13083:22;13066:49;:::i;:::-;13056:59;;13168:2;13157:9;13153:18;13140:32;13124:48;;13197:2;13187:8;13184:16;13181:36;;;13213:1;13210;13203:12;13181:36;;13236:51;13279:7;13268:8;13257:9;13253:24;13236:51;:::i;:::-;13226:61;;;12543:750;;;;;;;:::o;13298:417::-;13381:6;13389;13442:2;13430:9;13421:7;13417:23;13413:32;13410:52;;;13458:1;13455;13448:12;13410:52;13497:9;13484:23;13516:38;13548:5;13516:38;:::i;:::-;13573:5;-1:-1:-1;13630:2:93;13615:18;;13602:32;13643:40;13602:32;13643:40;:::i;:::-;13702:7;13692:17;;;13298:417;;;;;:::o;13943:539::-;14029:6;14037;14090:2;14078:9;14069:7;14065:23;14061:32;14058:52;;;14106:1;14103;14096:12;14058:52;14146:9;14133:23;-1:-1:-1;;;;;14216:2:93;14208:6;14205:14;14202:34;;;14232:1;14229;14222:12;14202:34;14255:49;14296:7;14287:6;14276:9;14272:22;14255:49;:::i;:::-;14245:59;;14357:2;14346:9;14342:18;14329:32;14313:48;;14386:2;14376:8;14373:16;14370:36;;;14402:1;14399;14392:12;14370:36;;14425:51;14468:7;14457:8;14446:9;14442:24;14425:51;:::i;:::-;14415:61;;;13943:539;;;;;:::o;14711:184::-;14781:6;14834:2;14822:9;14813:7;14809:23;14805:32;14802:52;;;14850:1;14847;14840:12;14802:52;-1:-1:-1;14873:16:93;;14711:184;-1:-1:-1;14711:184:93:o;14900:279::-;14991:6;15044:2;15032:9;15023:7;15019:23;15015:32;15012:52;;;15060:1;15057;15050:12;15012:52;15092:9;15086:16;15111:38;15143:5;15111:38;:::i;15184:669::-;15249:5;15302:3;15295:4;15287:6;15283:17;15279:27;15269:55;;15320:1;15317;15310:12;15269:55;15349:6;15343:13;15375:4;15399:70;15415:53;15465:2;15415:53;:::i;15399:70::-;15503:15;;;15589:1;15585:10;;;;15573:23;;15569:32;;;15534:12;;;;15613:15;;;15610:35;;;15641:1;15638;15631:12;15610:35;15677:2;15669:6;15665:15;15689:135;15705:6;15700:3;15697:15;15689:135;;;15771:10;;15759:23;;15802:12;;;;15722;;15689:135;;15858:1303;16012:6;16020;16028;16081:2;16069:9;16060:7;16056:23;16052:32;16049:52;;;16097:1;16094;16087:12;16049:52;16130:9;16124:16;-1:-1:-1;;;;;16200:2:93;16192:6;16189:14;16186:34;;;16216:1;16213;16206:12;16186:34;16254:6;16243:9;16239:22;16229:32;;16299:7;16292:4;16288:2;16284:13;16280:27;16270:55;;16321:1;16318;16311:12;16270:55;16350:2;16344:9;16372:4;16396:70;16412:53;16462:2;16412:53;:::i;16396:70::-;16500:15;;;16582:1;16578:10;;;;16570:19;;16566:28;;;16531:12;;;;16606:19;;;16603:39;;;16638:1;16635;16628:12;16603:39;16662:11;;;;16682:217;16698:6;16693:3;16690:15;16682:217;;;16771:3;16765:10;16788:38;16820:5;16788:38;:::i;:::-;16839:18;;16715:12;;;;16877;;;;16682:217;;;16954:18;;;16948:25;16918:5;;-1:-1:-1;16948:25:93;;-1:-1:-1;;;16985:16:93;;;16982:36;;;17014:1;17011;17004:12;16982:36;;17037:74;17103:7;17092:8;17081:9;17077:24;17037:74;:::i;:::-;17027:84;;;17151:2;17140:9;17136:18;17130:25;17120:35;;15858:1303;;;;;:::o;17166:127::-;17227:10;17222:3;17218:20;17215:1;17208:31;17258:4;17255:1;17248:15;17282:4;17279:1;17272:15;17298:127;17359:10;17354:3;17350:20;17347:1;17340:31;17390:4;17387:1;17380:15;17414:4;17411:1;17404:15;17430:135;17469:3;17490:17;;;17487:43;;17510:18;;:::i;:::-;-1:-1:-1;17557:1:93;17546:13;;17430:135::o;17570:127::-;17631:10;17626:3;17622:20;17619:1;17612:31;17662:4;17659:1;17652:15;17686:4;17683:1;17676:15;17702:422;17743:3;17781:5;17775:12;17808:6;17803:3;17796:19;17833:1;17843:162;17857:6;17854:1;17851:13;17843:162;;;17919:4;17975:13;;;17971:22;;17965:29;17947:11;;;17943:20;;17936:59;17872:12;17843:162;;;17847:3;18050:1;18043:4;18034:6;18029:3;18025:16;18021:27;18014:38;18113:4;18106:2;18102:7;18097:2;18089:6;18085:15;18081:29;18076:3;18072:39;18068:50;18061:57;;;17702:422;;;;:::o;18489:1274::-;18826:3;18815:9;18808:22;18873:6;18867:13;18861:3;18850:9;18846:19;18839:42;18789:4;18928;18920:6;18916:17;18910:24;18970:1;18956:12;18953:19;18943:150;;19015:10;19010:3;19006:20;19003:1;18996:31;19050:4;19047:1;19040:15;19078:4;19075:1;19068:15;18943:150;19124:3;19109:19;;19102:41;19202:4;19190:17;;19184:24;-1:-1:-1;;;;;19180:50:93;19174:3;19159:19;;19152:79;19280:4;19268:17;;19262:24;19295:72;19362:3;19347:19;;19262:24;-1:-1:-1;;;;;97:31:93;85:44;;14:121;19295:72;;19422:4;19414:6;19410:17;19404:24;19398:3;19387:9;19383:19;19376:53;19478:4;19470:6;19466:17;19460:24;19521:4;19515:3;19504:9;19500:19;19493:33;19543:53;19591:3;19580:9;19576:19;19560:14;19543:53;:::i;:::-;19535:61;;;19605:62;19661:4;19650:9;19646:20;19638:6;18251:12;;-1:-1:-1;;;;;18247:21:93;;;18235:34;;18332:4;18321:16;;;18315:23;18308:31;18301:39;18285:14;;;18278:63;18394:4;18383:16;;;18377:23;18373:32;;;18357:14;;;18350:56;18469:4;18458:16;;;18452:23;18445:31;18438:39;18422:14;;18415:63;18129:355;19605:62;19698:4;19683:20;;19676:36;;;;19743:4;19728:20;19721:36;18489:1274;;-1:-1:-1;;18489:1274:93:o;19957:435::-;20010:3;20048:5;20042:12;20075:6;20070:3;20063:19;20101:4;20130:2;20125:3;20121:12;20114:19;;20167:2;20160:5;20156:14;20188:1;20198:169;20212:6;20209:1;20206:13;20198:169;;;20273:13;;20261:26;;20307:12;;;;20342:15;;;;20234:1;20227:9;20198:169;;20397:403;20632:6;20621:9;20614:25;20675:2;20670;20659:9;20655:18;20648:30;20595:4;20695:56;20747:2;20736:9;20732:18;20724:6;20695:56;:::i;:::-;20687:64;;20787:6;20782:2;20771:9;20767:18;20760:34;20397:403;;;;;;:::o;21013:1069::-;21144:12;;21110:4;21165:17;;;21231:19;;21101:14;;;21259:20;;;21071:3;;21329:4;;21356:21;;;;21306:3;21297:13;;;21071:3;21405:201;21419:6;21416:1;21413:13;21405:201;;;21486:13;;-1:-1:-1;;;;;21482:39:93;21468:54;;21581:15;;;;21544:14;;;;21518:1;21434:9;21405:201;;;21409:3;;21654:2;21647:5;21643:14;21637:21;21615:43;;21699:3;21692:5;21688:15;21683:2;21678:3;21674:12;21667:37;21727:51;21772:5;21756:14;21727:51;:::i;:::-;21713:65;;;;21826:4;21819:5;21815:16;21809:23;21876:3;21868:6;21864:16;21857:4;21852:3;21848:14;21841:40;21904;21937:6;21921:14;21904:40;:::i;:::-;21890:54;;;21992:4;21985:5;21981:16;21975:23;22007:47;22048:4;22043:3;22039:14;22023;9227:13;9220:21;9208:34;;9157:91;22007:47;-1:-1:-1;22070:6:93;21013:1069;-1:-1:-1;;;21013:1069:93:o;22087:555::-;22350:25;;;-1:-1:-1;;;;;22449:15:93;;;22444:2;22429:18;;22422:43;22501:15;;22496:2;22481:18;;22474:43;22553:3;22548:2;22533:18;;22526:31;;;22331:4;;22574:62;;22616:19;;22608:6;22574:62;:::i;22647:128::-;22714:9;;;22735:11;;;22732:37;;;22749:18;;:::i;22780:599::-;23095:2;23084:9;23077:21;23058:4;23121:63;23180:2;23169:9;23165:18;23157:6;23121:63;:::i;:::-;23232:9;23224:6;23220:22;23215:2;23204:9;23200:18;23193:50;23260:44;23297:6;23289;23260:44;:::i;:::-;23252:52;;;23369:1;23365;23360:3;23356:11;23352:19;23344:6;23340:32;23335:2;23324:9;23320:18;23313:60;22780:599;;;;;;:::o;23384:422::-;23486:6;23494;23547:2;23535:9;23526:7;23522:23;23518:32;23515:52;;;23563:1;23560;23553:12;23515:52;23595:9;23589:16;23614:38;23646:5;23614:38;:::i;:::-;23721:2;23706:18;;23700:25;23671:5;;-1:-1:-1;23734:40:93;23700:25;23734:40;:::i;23811:125::-;23876:9;;;23897:10;;;23894:36;;;23910:18;;:::i;24576:245::-;24643:6;24696:2;24684:9;24675:7;24671:23;24667:32;24664:52;;;24712:1;24709;24702:12;24664:52;24744:9;24738:16;24763:28;24785:5;24763:28;:::i;26604:369::-;26801:6;26790:9;26783:25;26858:6;26851:14;26844:22;26839:2;26828:9;26824:18;26817:50;26903:2;26898;26887:9;26883:18;26876:30;26764:4;26923:44;26963:2;26952:9;26948:18;26940:6;26923:44;:::i;:::-;26915:52;26604:369;-1:-1:-1;;;;;26604:369:93:o;27259:280::-;27328:6;27381:2;27369:9;27360:7;27356:23;27352:32;27349:52;;;27397:1;27394;27387:12;27349:52;27429:9;27423:16;27479:10;27472:5;27468:22;27461:5;27458:33;27448:61;;27505:1;27502;27495:12", + "linkReferences": {}, + "immutableReferences": { + "36690": [ + { + "start": 749, + "length": 32 + }, + { + "start": 1067, + "length": 32 + }, + { + "start": 1777, + "length": 32 + }, + { + "start": 2142, + "length": 32 + }, + { + "start": 2381, + "length": 32 + }, + { + "start": 2866, + "length": 32 + }, + { + "start": 3423, + "length": 32 + }, + { + "start": 3525, + "length": 32 + }, + { + "start": 4356, + "length": 32 + }, + { + "start": 4967, + "length": 32 + }, + { + "start": 5527, + "length": 32 + }, + { + "start": 6326, + "length": 32 + }, + { + "start": 6610, + "length": 32 + } + ], + "36694": [ + { + "start": 310, + "length": 32 + }, + { + "start": 7902, + "length": 32 + } + ], + "36697": [ + { + "start": 691, + "length": 32 + }, + { + "start": 3709, + "length": 32 + }, + { + "start": 7300, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "EXACT_TOKENS_IN_FOR_BPT_OUT()": "0e222e52", + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "balancerSlippage()": "f7e69b16", + "claimRewards(address)": "ef5cfb8c", + "deposit(uint256,bytes,bytes)": "69445c31", + "exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))": "97194b13", + "getExpectedTokens(address)": "7906afbf", + "identifier()": "7998a1c4", + "isDebt()": "89353a09", + "joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)": "5c14acdb", + "minter()": "07546172", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "stakeBPT(address,address,uint256)": "8f210a6a", + "unstakeBPT(address,address,uint256)": "d2e85806", + "vault()": "fbfa77cf", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_balancerSlippage\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bpt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityGauge\",\"type\":\"address\"}],\"name\":\"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___InternalBalancesNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___InvalidConstructorSlippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalancerPoolAdaptor___WrongSwapKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EXACT_TOKENS_IN_FOR_BPT_OUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balancerSlippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"targetBpt\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap[]\",\"name\":\"swapsAfterExit\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"minAmountsForSwaps\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"swapDeadlines\",\"type\":\"uint256[]\"}],\"internalType\":\"struct BalancerPoolAdaptor.SwapData\",\"name\":\"swapData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetBpt\",\"type\":\"address\"}],\"name\":\"getExpectedTokens\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"expectedTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"targetBpt\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap[]\",\"name\":\"swapsBeforeJoin\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"minAmountsForSwaps\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"swapDeadlines\",\"type\":\"uint256[]\"}],\"internalType\":\"struct BalancerPoolAdaptor.SwapData\",\"name\":\"swapData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumBpt\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"contract IBalancerMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"_bpt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_liquidityGauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"}],\"name\":\"stakeBPT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"_bpt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_liquidityGauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountOut\",\"type\":\"uint256\"}],\"name\":\"unstakeBPT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountBPTToSend\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0xEinCodes and CrispyMangoes\",\"errors\":{\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch()\":[{\"details\":\"Swap information passed to `joinPool` and `exitPool` MUST line up with the expected tokens array. Example: BB A USD has 4 constituents BB A DAI, BB A USDT, BB A USDC, BB A USD but the pool has pre-minted BPTs in its tokens array. So the expected tokens array will only contain the first 3 constituents. The swap data must be in the following order. 0 - Swap data to swap DAI for BB A DAI. 1 - Swap data to swap USDT for BB A USDT. 2 - Swap data to swap USDC for BB A USDC. If the swap data is not in the order above, or tries swapping using tokens that are NOT in the BPT, the call will revert with the below error.\"}]},\"kind\":\"dev\",\"methods\":{\"assetOf(bytes)\":{\"params\":{\"_adaptorData\":\"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\"},\"returns\":{\"_0\":\"bpt for Cellar's respective balancer pool position\"}},\"assetsUsed(bytes)\":{\"details\":\"all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)\",\"params\":{\"_adaptorData\":\"specified bpt of interest\"},\"returns\":{\"assets\":\"for Cellar's respective balancer pool position\"}},\"balanceOf(bytes)\":{\"params\":{\"_adaptorData\":\"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\"},\"returns\":{\"_0\":\"total balance of bpt for Cellar, including liquid bpt and staked bpt\"}},\"claimRewards(address)\":{\"details\":\"rewards are only accrued for staked positions\"},\"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\":{\"details\":\"The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.`swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to swap BB A DAI.Max Available logic IS NOT supported.\"},\"getExpectedTokens(address)\":{\"details\":\"This function is NOT used by the adaptor, but could be used by strategists when formulating Balancer rebalances.\"},\"identifier()\":{\"returns\":{\"_0\":\"encoded adaptor identifier\"}},\"isDebt()\":{\"returns\":{\"_0\":\"whether adaptor returns debt or not\"}},\"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\":{\"details\":\"`swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.Max Available logic IS supported.\"},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}},\"stakeBPT(address,address,uint256)\":{\"details\":\"Interface custom as Balancer/Curve do not provide for liquidityGauges.\",\"params\":{\"_amountIn\":\"number of BPTs to stake\",\"_bpt\":\"address of BPTs to stake\"}},\"unstakeBPT(address,address,uint256)\":{\"details\":\"Interface custom as Balancer/Curve do not provide for liquidityGauges.\",\"params\":{\"_amountOut\":\"number of BPTs to unstake\",\"_bpt\":\"address of BPTs to unstake\"}},\"withdrawableFrom(bytes,bytes)\":{\"details\":\"See `balanceOf`.\"}},\"title\":\"Balancer Pool Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked(address,address)\":[{\"notice\":\"Tried using a bpt and/or liquidityGauge that is not setup as a position.\"}],\"BalancerPoolAdaptor___InternalBalancesNotSupported()\":[{\"notice\":\"Provided swap information tried to work with internal balances.\"}],\"BalancerPoolAdaptor___InvalidConstructorSlippage()\":[{\"notice\":\"Constructor param for slippage too high\"}],\"BalancerPoolAdaptor___LengthMismatch()\":[{\"notice\":\"Provided swap array length differs from expected tokens array length.\"}],\"BalancerPoolAdaptor___Slippage()\":[{\"notice\":\"Attempted balancer pool joins, exits, staking, unstaking, etc. with bad slippage\"}],\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch()\":[{\"notice\":\"Provided swap information does not match expected tokens array.\"}],\"BalancerPoolAdaptor___UnsupportedTokenNotSwapped()\":[{\"notice\":\"Provided swap information chose to keep an asset that is not supported for pricing.\"}],\"BalancerPoolAdaptor___WrongSwapKind()\":[{\"notice\":\"Provided swap information with wrong swap kind.\"}],\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}]},\"kind\":\"user\",\"methods\":{\"EXACT_TOKENS_IN_FOR_BPT_OUT()\":{\"notice\":\"The enum value needed to specify an Exact Tokens in for BPT out join.\"},\"assetOf(bytes)\":{\"notice\":\"Returns the positions underlying assets.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Calculates the Cellar's balance of the positions creditAsset, a specific bpt.\"},\"balancerSlippage()\":{\"notice\":\"Number between 0.9e4, and 1e4 representing the amount of slippage that can be tolerated when entering/exiting a pool. - 0.90e4: 10% slippage - 0.95e4: 5% slippage\"},\"claimRewards(address)\":{\"notice\":\"claim rewards ($BAL) from LP position\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"User deposits are NOT allowed into this position.\"},\"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\":{\"notice\":\"Allows strategists to exit Balancer pools using any exit.\"},\"getExpectedTokens(address)\":{\"notice\":\"Returns the expected tokens array for a given `targetBpt`.\"},\"identifier()\":{\"notice\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"isDebt()\":{\"notice\":\"This adaptor returns collateral, and not debt.\"},\"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\":{\"notice\":\"Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins.\"},\"minter()\":{\"notice\":\"The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for CellarFor mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"stakeBPT(address,address,uint256)\":{\"notice\":\"stake (deposit) BPTs into respective pool gauge\"},\"unstakeBPT(address,address,uint256)\":{\"notice\":\"unstake (withdraw) BPT from respective pool gauge\"},\"vault()\":{\"notice\":\"The Balancer Vault contractFor mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"If a user withdraw needs more BPTs than what is in the Cellar's wallet, then the Cellar will unstake BPTs from the gauge.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"Accounts for BPTs in the Cellar's wallet, and staked in gauge.\"}},\"notice\":\"Allows Cellars to interact with Weighted, Stable, and Linear Balancer Pools (BPs).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\":\"BalancerPoolAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0xb39cd1d5220cb474947b131e15a4538334b7e886af244b440ae5c9c6bba96a54\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3101520221449ac0070bda3881311a71d9aa87e5210765e875246922cb5cb5f5\",\"dweb:/ipfs/Qmbg6kAHNoG7ox9N9Xqd9Ere2H2XixMFWFqvyPwFCzB3Gr\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x9d09c1e55cd508d3376cff9961625d51d73f8ce075ec1e9deed41408a4556e00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8880c5551daf337ab91665a9ce593df67a9eb11b0bee820f631d324d2fdd3a8b\",\"dweb:/ipfs/QmNpvSBGnS9Jr6Swd6XKsijG59a4yjYemWCFwprjKFkpNC\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x1297a1cc393bc8163ccf143e5335536e78cb25ac24a4f6dfdb25f5746dd4827e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://945ccffad9fc09d2aa0ac200a80dcfa2f491dba8680fc9c3d3d450d891284b87\",\"dweb:/ipfs/QmYSfFb1L6LN1ZB9KWzZqxt2iAbpuFDskBcU1Bz4RiyuQ5\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x6c9cbd51234372b66bf7c146870edf0855770c46e960a8fae8f354ddf382876b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd0ff1f449294dd1447b9d483c52d78e137d8cac518646e76df9fdd4d185d6c2\",\"dweb:/ipfs/QmS3JP4vKgvAWo8Tc7zVrGxbdR7t37ayk1mTHN3seD6UAZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x1a5767028a0c3985e991456fc9650055e28b01b787c56b11f66ac30498a153ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f86887212eacca450a15a8a5bf9fe83fd91a2ba623df8e9c32c75a31824c8ea2\",\"dweb:/ipfs/QmTUHBNdZwntgjbFZne7fY9ZJLNGYWaq3uWfGk6FyqdAkB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xbeb823fcdb356244a83aaccdf828ad019ecc1ffaa3dff18e624fc6d5714ea671\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cbe9400340e5f9ec55e2aff3bad1c15fa3afbbe37e80800e6f3fed2ad26854f\",\"dweb:/ipfs/QmdJBABsuXkvWxVzEyGXsTE3vyfBPXDdw5xvvtUz3JeoYW\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/Balancer/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"src/interfaces/external/Balancer/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"src/interfaces/external/Balancer/IBalancerQueries.sol\":{\"keccak256\":\"0xd2a015dec53a45644f66938705bbf5d2d349dbab8eaa7e8aea07fc7575845315\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21f696084aa156ec1a76dbe6309064eba1dbf5e0b918f4b68e3eec23b073b5e4\",\"dweb:/ipfs/Qmda3i1QwsbR2VEd27K8Cu9Roqc1oyev6C5kcMJX2iUtzw\"]},\"src/interfaces/external/Balancer/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xcf36a2692ab694e72a4ab32dd114ff091f678dc1e3edf2622f9c900a7919567e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9eeeeda4d19a3c105947a3ec85cb83a2c7c4fd17089a06f84caa5298a9698351\",\"dweb:/ipfs/QmRoDsWbrDwrz1M32j67WqYSEqRy5xKTsA3uyyKG6hCciC\"]},\"src/interfaces/external/Balancer/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol\":{\"keccak256\":\"0x1c33a4019f711891aa62f481832f77639da019a9ae4c9b1283715bb53cdbe100\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8374ce49f71fad7e2204648accf4aa306fa54da0e84b2252d83170b7b9e92a93\",\"dweb:/ipfs/QmSPQBrP1faYR55LuyVj7V2Eze2yZfWi9Qu6QXSymXUGQ7\"]},\"src/interfaces/external/Balancer/IProtocolFeesCollector.sol\":{\"keccak256\":\"0x38a5f11987a9b2ee47dc9b007c4fe3eda05a101736ee304edf6032301c85efac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ba2ccfef9369591e001e3db317bd29d564c63e7e8c5c33f4c9d1eb0c12c2347\",\"dweb:/ipfs/QmdXiRj7nazhzHUpz27aDTh8Lk2e5KV1fXBcpKiBBRZ3n2\"]},\"src/interfaces/external/Balancer/IRewardTokenDistributor.sol\":{\"keccak256\":\"0xd99e3f4c1e9863d08d1ebcc7ba45455082a17f63c53702508fee40d96817de73\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4e0cd3b1d84a1583d0ca556f810097c7f8a098846b1a7106c7c3472a167a6e0\",\"dweb:/ipfs/Qma9guNWTcGv3qkYRQwzPyEAzr6KFa8MbeBgQZ8dTSC4X5\"]},\"src/interfaces/external/Balancer/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xb17cc68fd51d53b2c6e91940c95d96f3f91dae1cfff06a87b9cc0446ac997c91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://54b34ab9993baf19e5fbb02dc925424854b46b588bd88875c69a4ab1e9c44968\",\"dweb:/ipfs/QmRZdftoKSDu23yPYHpyNhdBPdpsQVv4TnfXjRpW3tvW3j\"]},\"src/interfaces/external/Balancer/IVault.sol\":{\"keccak256\":\"0x1b5b8788f45f9f5d333b811c90697bb9f82dd4abacde21152cfd9a758687e638\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85bd77d6e8cfd898f48c8841a7cfe5b910171f4b133be9c171b55d25a8f1d47f\",\"dweb:/ipfs/QmbkLPEZrLjjoMtpnmddsJnuUa2R7nwjeD174i4iZeX6my\"]},\"src/interfaces/external/Balancer/solidity-utils/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"src/interfaces/external/Balancer/solidity-utils/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"src/interfaces/external/Balancer/solidity-utils/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"src/interfaces/external/Balancer/solidity-utils/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"src/interfaces/external/Balancer/solidity-utils/IWETH.sol\":{\"keccak256\":\"0xf0485638c64f7f11ff8a9235833219d6b59a090a4348860c3129eee017ddafce\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://70de99834cb5192830a30faf1aa0b40daf246b77f57aef7b18b6d1251e8f7f3c\",\"dweb:/ipfs/QmWLEkeZELYY39VvotCJMCbp1ghA7aKfEZ8WSKz4wiideY\"]},\"src/interfaces/external/Balancer/typically-npm/IBasePool.sol\":{\"keccak256\":\"0x1cdc55054804cf084d5e48e8977517e1bb962079d37960a0812d1371664ed78d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5fb94acd0d362dee4195e5bd669a9aa60877d41106de84201fde8722efeccfd5\",\"dweb:/ipfs/QmbuuVLnk4GH1RkjoDQADkKQfwLVPKiNG4Ccn4TK4kcDNF\"]},\"src/interfaces/external/Balancer/typically-npm/IPoolSwapStructs.sol\":{\"keccak256\":\"0xe6f1065866cb963ac63cfb565acc006b9512afcb5312fa4be0862253248aeeb4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://df94fb1239cd0279ca45158f5a214a9ded846db5753a4af729c5f0505bae224f\",\"dweb:/ipfs/QmYxLtmuT5rUGgAh2AeMCuECVk1hgukpzgfeY5LfWramd3\"]},\"src/interfaces/external/IBalancerMinter.sol\":{\"keccak256\":\"0x7496841fa2a00ab19381cdcbad117fadd6087dc8a928a78eab7e5bcf56d227f1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ed91329ba6e4f3ca38eaef7f69271cfd445eddf82834510c48c79ca8a2e70bd\",\"dweb:/ipfs/QmaPEHin5iZG8dCi3LMAdCyf9Fdi9vkQjLwKf2CrbkKJLu\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\":{\"keccak256\":\"0x2364e19fbc8a2322829933148bc4994527a783791d4ccc0530153975d92752c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b7f05b70dace2c3867855a60c348b2428792ef7f810a314e3f289560166c4e43\",\"dweb:/ipfs/Qme9cjbUhpidVHwVKMcR8VdvheFY7GCqTwgEaxKLkyuR7c\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_minter", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_balancerSlippage", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidityGauge", + "type": "address" + } + ], + "type": "error", + "name": "BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___InternalBalancesNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___InvalidConstructorSlippage" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___LengthMismatch" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___UnsupportedTokenNotSwapped" + }, + { + "inputs": [], + "type": "error", + "name": "BalancerPoolAdaptor___WrongSwapKind" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "EXACT_TOKENS_IN_FOR_BPT_OUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "balancerSlippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "gauge", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "claimRewards" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "targetBpt", + "type": "address" + }, + { + "internalType": "struct IVault.SingleSwap[]", + "name": "swapsAfterExit", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ] + }, + { + "internalType": "struct BalancerPoolAdaptor.SwapData", + "name": "swapData", + "type": "tuple", + "components": [ + { + "internalType": "uint256[]", + "name": "minAmountsForSwaps", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapDeadlines", + "type": "uint256[]" + } + ] + }, + { + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "exitPool" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetBpt", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getExpectedTokens", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "expectedTokens", + "type": "address[]" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "targetBpt", + "type": "address" + }, + { + "internalType": "struct IVault.SingleSwap[]", + "name": "swapsBeforeJoin", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ] + }, + { + "internalType": "struct BalancerPoolAdaptor.SwapData", + "name": "swapData", + "type": "tuple", + "components": [ + { + "internalType": "uint256[]", + "name": "minAmountsForSwaps", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapDeadlines", + "type": "uint256[]" + } + ] + }, + { + "internalType": "uint256", + "name": "minimumBpt", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "joinPool" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "minter", + "outputs": [ + { + "internalType": "contract IBalancerMinter", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "_bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityGauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "stakeBPT" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "_bpt", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityGauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "unstakeBPT" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "vault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountBPTToSend", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "assetOf(bytes)": { + "params": { + "_adaptorData": "encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)" + }, + "returns": { + "_0": "bpt for Cellar's respective balancer pool position" + } + }, + "assetsUsed(bytes)": { + "details": "all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)", + "params": { + "_adaptorData": "specified bpt of interest" + }, + "returns": { + "assets": "for Cellar's respective balancer pool position" + } + }, + "balanceOf(bytes)": { + "params": { + "_adaptorData": "encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)" + }, + "returns": { + "_0": "total balance of bpt for Cellar, including liquid bpt and staked bpt" + } + }, + "claimRewards(address)": { + "details": "rewards are only accrued for staked positions" + }, + "exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))": { + "details": "The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.`swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to swap BB A DAI.Max Available logic IS NOT supported." + }, + "getExpectedTokens(address)": { + "details": "This function is NOT used by the adaptor, but could be used by strategists when formulating Balancer rebalances." + }, + "identifier()": { + "returns": { + "_0": "encoded adaptor identifier" + } + }, + "isDebt()": { + "returns": { + "_0": "whether adaptor returns debt or not" + } + }, + "joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)": { + "details": "`swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.Max Available logic IS supported." + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + }, + "stakeBPT(address,address,uint256)": { + "details": "Interface custom as Balancer/Curve do not provide for liquidityGauges.", + "params": { + "_amountIn": "number of BPTs to stake", + "_bpt": "address of BPTs to stake" + } + }, + "unstakeBPT(address,address,uint256)": { + "details": "Interface custom as Balancer/Curve do not provide for liquidityGauges.", + "params": { + "_amountOut": "number of BPTs to unstake", + "_bpt": "address of BPTs to unstake" + } + }, + "withdrawableFrom(bytes,bytes)": { + "details": "See `balanceOf`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "EXACT_TOKENS_IN_FOR_BPT_OUT()": { + "notice": "The enum value needed to specify an Exact Tokens in for BPT out join." + }, + "assetOf(bytes)": { + "notice": "Returns the positions underlying assets." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Calculates the Cellar's balance of the positions creditAsset, a specific bpt." + }, + "balancerSlippage()": { + "notice": "Number between 0.9e4, and 1e4 representing the amount of slippage that can be tolerated when entering/exiting a pool. - 0.90e4: 10% slippage - 0.95e4: 5% slippage" + }, + "claimRewards(address)": { + "notice": "claim rewards ($BAL) from LP position" + }, + "deposit(uint256,bytes,bytes)": { + "notice": "User deposits are NOT allowed into this position." + }, + "exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))": { + "notice": "Allows strategists to exit Balancer pools using any exit." + }, + "getExpectedTokens(address)": { + "notice": "Returns the expected tokens array for a given `targetBpt`." + }, + "identifier()": { + "notice": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "isDebt()": { + "notice": "This adaptor returns collateral, and not debt." + }, + "joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)": { + "notice": "Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins." + }, + "minter()": { + "notice": "The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for CellarFor mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b" + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "stakeBPT(address,address,uint256)": { + "notice": "stake (deposit) BPTs into respective pool gauge" + }, + "unstakeBPT(address,address,uint256)": { + "notice": "unstake (withdraw) BPT from respective pool gauge" + }, + "vault()": { + "notice": "The Balancer Vault contractFor mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8" + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "If a user withdraw needs more BPTs than what is in the Cellar's wallet, then the Cellar will unstake BPTs from the gauge." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "Accounts for BPTs in the Cellar's wallet, and staked in gauge." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol": "BalancerPoolAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/forge-std/lib/ds-test/src/test.sol": { + "keccak256": "0xb39cd1d5220cb474947b131e15a4538334b7e886af244b440ae5c9c6bba96a54", + "urls": [ + "bzz-raw://3101520221449ac0070bda3881311a71d9aa87e5210765e875246922cb5cb5f5", + "dweb:/ipfs/Qmbg6kAHNoG7ox9N9Xqd9Ere2H2XixMFWFqvyPwFCzB3Gr" + ], + "license": "GPL-3.0-or-later" + }, + "lib/forge-std/src/Script.sol": { + "keccak256": "0x9d09c1e55cd508d3376cff9961625d51d73f8ce075ec1e9deed41408a4556e00", + "urls": [ + "bzz-raw://8880c5551daf337ab91665a9ce593df67a9eb11b0bee820f631d324d2fdd3a8b", + "dweb:/ipfs/QmNpvSBGnS9Jr6Swd6XKsijG59a4yjYemWCFwprjKFkpNC" + ], + "license": "MIT" + }, + "lib/forge-std/src/StdJson.sol": { + "keccak256": "0x1297a1cc393bc8163ccf143e5335536e78cb25ac24a4f6dfdb25f5746dd4827e", + "urls": [ + "bzz-raw://945ccffad9fc09d2aa0ac200a80dcfa2f491dba8680fc9c3d3d450d891284b87", + "dweb:/ipfs/QmYSfFb1L6LN1ZB9KWzZqxt2iAbpuFDskBcU1Bz4RiyuQ5" + ], + "license": "MIT" + }, + "lib/forge-std/src/Test.sol": { + "keccak256": "0x6c9cbd51234372b66bf7c146870edf0855770c46e960a8fae8f354ddf382876b", + "urls": [ + "bzz-raw://fd0ff1f449294dd1447b9d483c52d78e137d8cac518646e76df9fdd4d185d6c2", + "dweb:/ipfs/QmS3JP4vKgvAWo8Tc7zVrGxbdR7t37ayk1mTHN3seD6UAZ" + ], + "license": "MIT" + }, + "lib/forge-std/src/Vm.sol": { + "keccak256": "0x1a5767028a0c3985e991456fc9650055e28b01b787c56b11f66ac30498a153ab", + "urls": [ + "bzz-raw://f86887212eacca450a15a8a5bf9fe83fd91a2ba623df8e9c32c75a31824c8ea2", + "dweb:/ipfs/QmTUHBNdZwntgjbFZne7fY9ZJLNGYWaq3uWfGk6FyqdAkB" + ], + "license": "MIT" + }, + "lib/forge-std/src/console.sol": { + "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", + "urls": [ + "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", + "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" + ], + "license": "MIT" + }, + "lib/forge-std/src/console2.sol": { + "keccak256": "0xbeb823fcdb356244a83aaccdf828ad019ecc1ffaa3dff18e624fc6d5714ea671", + "urls": [ + "bzz-raw://4cbe9400340e5f9ec55e2aff3bad1c15fa3afbbe37e80800e6f3fed2ad26854f", + "dweb:/ipfs/QmdJBABsuXkvWxVzEyGXsTE3vyfBPXDdw5xvvtUz3JeoYW" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Balancer/IAsset.sol": { + "keccak256": "0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d", + "urls": [ + "bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b", + "dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IAuthorizer.sol": { + "keccak256": "0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6", + "urls": [ + "bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831", + "dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IBalancerQueries.sol": { + "keccak256": "0xd2a015dec53a45644f66938705bbf5d2d349dbab8eaa7e8aea07fc7575845315", + "urls": [ + "bzz-raw://21f696084aa156ec1a76dbe6309064eba1dbf5e0b918f4b68e3eec23b073b5e4", + "dweb:/ipfs/Qmda3i1QwsbR2VEd27K8Cu9Roqc1oyev6C5kcMJX2iUtzw" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IFlashLoanRecipient.sol": { + "keccak256": "0xcf36a2692ab694e72a4ab32dd114ff091f678dc1e3edf2622f9c900a7919567e", + "urls": [ + "bzz-raw://9eeeeda4d19a3c105947a3ec85cb83a2c7c4fd17089a06f84caa5298a9698351", + "dweb:/ipfs/QmRoDsWbrDwrz1M32j67WqYSEqRy5xKTsA3uyyKG6hCciC" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/ILiquidityGauge.sol": { + "keccak256": "0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937", + "urls": [ + "bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603", + "dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol": { + "keccak256": "0x1c33a4019f711891aa62f481832f77639da019a9ae4c9b1283715bb53cdbe100", + "urls": [ + "bzz-raw://8374ce49f71fad7e2204648accf4aa306fa54da0e84b2252d83170b7b9e92a93", + "dweb:/ipfs/QmSPQBrP1faYR55LuyVj7V2Eze2yZfWi9Qu6QXSymXUGQ7" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IProtocolFeesCollector.sol": { + "keccak256": "0x38a5f11987a9b2ee47dc9b007c4fe3eda05a101736ee304edf6032301c85efac", + "urls": [ + "bzz-raw://0ba2ccfef9369591e001e3db317bd29d564c63e7e8c5c33f4c9d1eb0c12c2347", + "dweb:/ipfs/QmdXiRj7nazhzHUpz27aDTh8Lk2e5KV1fXBcpKiBBRZ3n2" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IRewardTokenDistributor.sol": { + "keccak256": "0xd99e3f4c1e9863d08d1ebcc7ba45455082a17f63c53702508fee40d96817de73", + "urls": [ + "bzz-raw://a4e0cd3b1d84a1583d0ca556f810097c7f8a098846b1a7106c7c3472a167a6e0", + "dweb:/ipfs/Qma9guNWTcGv3qkYRQwzPyEAzr6KFa8MbeBgQZ8dTSC4X5" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IStakingLiquidityGauge.sol": { + "keccak256": "0xb17cc68fd51d53b2c6e91940c95d96f3f91dae1cfff06a87b9cc0446ac997c91", + "urls": [ + "bzz-raw://54b34ab9993baf19e5fbb02dc925424854b46b588bd88875c69a4ab1e9c44968", + "dweb:/ipfs/QmRZdftoKSDu23yPYHpyNhdBPdpsQVv4TnfXjRpW3tvW3j" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/IVault.sol": { + "keccak256": "0x1b5b8788f45f9f5d333b811c90697bb9f82dd4abacde21152cfd9a758687e638", + "urls": [ + "bzz-raw://85bd77d6e8cfd898f48c8841a7cfe5b910171f4b133be9c171b55d25a8f1d47f", + "dweb:/ipfs/QmbkLPEZrLjjoMtpnmddsJnuUa2R7nwjeD174i4iZeX6my" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/solidity-utils/IAuthentication.sol": { + "keccak256": "0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655", + "urls": [ + "bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a", + "dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/solidity-utils/IERC20.sol": { + "keccak256": "0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249", + "urls": [ + "bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d", + "dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt" + ], + "license": "MIT" + }, + "src/interfaces/external/Balancer/solidity-utils/ISignaturesValidator.sol": { + "keccak256": "0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627", + "urls": [ + "bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e", + "dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/solidity-utils/ITemporarilyPausable.sol": { + "keccak256": "0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3", + "urls": [ + "bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae", + "dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/solidity-utils/IWETH.sol": { + "keccak256": "0xf0485638c64f7f11ff8a9235833219d6b59a090a4348860c3129eee017ddafce", + "urls": [ + "bzz-raw://70de99834cb5192830a30faf1aa0b40daf246b77f57aef7b18b6d1251e8f7f3c", + "dweb:/ipfs/QmWLEkeZELYY39VvotCJMCbp1ghA7aKfEZ8WSKz4wiideY" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/typically-npm/IBasePool.sol": { + "keccak256": "0x1cdc55054804cf084d5e48e8977517e1bb962079d37960a0812d1371664ed78d", + "urls": [ + "bzz-raw://5fb94acd0d362dee4195e5bd669a9aa60877d41106de84201fde8722efeccfd5", + "dweb:/ipfs/QmbuuVLnk4GH1RkjoDQADkKQfwLVPKiNG4Ccn4TK4kcDNF" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/Balancer/typically-npm/IPoolSwapStructs.sol": { + "keccak256": "0xe6f1065866cb963ac63cfb565acc006b9512afcb5312fa4be0862253248aeeb4", + "urls": [ + "bzz-raw://df94fb1239cd0279ca45158f5a214a9ded846db5753a4af729c5f0505bae224f", + "dweb:/ipfs/QmYxLtmuT5rUGgAh2AeMCuECVk1hgukpzgfeY5LfWramd3" + ], + "license": "GPL-3.0-or-later" + }, + "src/interfaces/external/IBalancerMinter.sol": { + "keccak256": "0x7496841fa2a00ab19381cdcbad117fadd6087dc8a928a78eab7e5bcf56d227f1", + "urls": [ + "bzz-raw://6ed91329ba6e4f3ca38eaef7f69271cfd445eddf82834510c48c79ca8a2e70bd", + "dweb:/ipfs/QmaPEHin5iZG8dCi3LMAdCyf9Fdi9vkQjLwKf2CrbkKJLu" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol": { + "keccak256": "0x2364e19fbc8a2322829933148bc4994527a783791d4ccc0530153975d92752c3", + "urls": [ + "bzz-raw://b7f05b70dace2c3867855a60c348b2428792ef7f810a314e3f289560166c4e43", + "dweb:/ipfs/Qme9cjbUhpidVHwVKMcR8VdvheFY7GCqTwgEaxKLkyuR7c" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol", + "id": 38237, + "exportedSymbols": { + "BalancerPoolAdaptor": [ + 38236 + ], + "BaseAdaptor": [ + 38526 + ], + "Cellar": [ + 32635 + ], + "ERC20": [ + 33219 + ], + "IAsset": [ + 33988 + ], + "IBalancerMinter": [ + 35222 + ], + "IBalancerQueries": [ + 34074 + ], + "IBasePool": [ + 35186 + ], + "IERC20": [ + 35010 + ], + "ILiquidityGauge": [ + 34177 + ], + "ILiquidityGaugev3Custom": [ + 34218 + ], + "IStakingLiquidityGauge": [ + 34408 + ], + "IVault": [ + 34921 + ], + "Math": [ + 42528 + ], + "PriceRouter": [ + 41904 + ], + "Registry": [ + 29225 + ], + "SafeTransferLib": [ + 33970 + ], + "SwapRouter": [ + 42399 + ], + "console": [ + 16144 + ] + }, + "nodeType": "SourceUnit", + "src": "39:25554:79", + "nodes": [ + { + "id": 36613, + "nodeType": "PragmaDirective", + "src": "39:23:79", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 36621, + "nodeType": "ImportDirective", + "src": "64:134:79", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 38527, + "symbolAliases": [ + { + "foreign": { + "id": 36614, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38526, + "src": "73:11:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36615, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "86:5:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36616, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33970, + "src": "93:15:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36617, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "110:6:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36618, + "name": "SwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42399, + "src": "118:10:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36619, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29225, + "src": "130:8:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36620, + "name": "PriceRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41904, + "src": "140:11:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36623, + "nodeType": "ImportDirective", + "src": "199:89:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/IBalancerQueries.sol", + "file": "src/interfaces/external/Balancer/IBalancerQueries.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 34075, + "symbolAliases": [ + { + "foreign": { + "id": 36622, + "name": "IBalancerQueries", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34074, + "src": "208:16:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36627, + "nodeType": "ImportDirective", + "src": "289:85:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/IVault.sol", + "file": "src/interfaces/external/Balancer/IVault.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 34922, + "symbolAliases": [ + { + "foreign": { + "id": 36624, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "298:6:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36625, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35010, + "src": "306:6:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 36626, + "name": "IAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33988, + "src": "314:6:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36629, + "nodeType": "ImportDirective", + "src": "375:101:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/IStakingLiquidityGauge.sol", + "file": "src/interfaces/external/Balancer/IStakingLiquidityGauge.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 34409, + "symbolAliases": [ + { + "foreign": { + "id": 36628, + "name": "IStakingLiquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34408, + "src": "384:22:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36631, + "nodeType": "ImportDirective", + "src": "477:103:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol", + "file": "src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 34219, + "symbolAliases": [ + { + "foreign": { + "id": 36630, + "name": "ILiquidityGaugev3Custom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34218, + "src": "486:23:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36633, + "nodeType": "ImportDirective", + "src": "581:89:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/typically-npm/IBasePool.sol", + "file": "src/interfaces/external/Balancer/typically-npm/IBasePool.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 35187, + "symbolAliases": [ + { + "foreign": { + "id": 36632, + "name": "IBasePool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35186, + "src": "590:9:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36635, + "nodeType": "ImportDirective", + "src": "671:87:79", + "nodes": [], + "absolutePath": "src/interfaces/external/Balancer/ILiquidityGauge.sol", + "file": "src/interfaces/external/Balancer/ILiquidityGauge.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 34178, + "symbolAliases": [ + { + "foreign": { + "id": 36634, + "name": "ILiquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34177, + "src": "680:15:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36637, + "nodeType": "ImportDirective", + "src": "759:42:79", + "nodes": [], + "absolutePath": "src/utils/Math.sol", + "file": "src/utils/Math.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 42529, + "symbolAliases": [ + { + "foreign": { + "id": 36636, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42528, + "src": "768:4:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36639, + "nodeType": "ImportDirective", + "src": "802:46:79", + "nodes": [], + "absolutePath": "lib/forge-std/src/Test.sol", + "file": "@forge-std/Test.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 7301, + "symbolAliases": [ + { + "foreign": { + "id": 36638, + "name": "console", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16144, + "src": "811:7:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 36641, + "nodeType": "ImportDirective", + "src": "849:78:79", + "nodes": [], + "absolutePath": "src/interfaces/external/IBalancerMinter.sol", + "file": "src/interfaces/external/IBalancerMinter.sol", + "nameLocation": "-1:-1:-1", + "scope": 38237, + "sourceUnit": 35223, + "symbolAliases": [ + { + "foreign": { + "id": 36640, + "name": "IBalancerMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35222, + "src": "858:15:79", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 38236, + "nodeType": "ContractDefinition", + "src": "1103:24489:79", + "nodes": [ + { + "id": 36648, + "nodeType": "UsingForDirective", + "src": "1153:32:79", + "nodes": [], + "global": false, + "libraryName": { + "id": 36645, + "name": "SafeTransferLib", + "nameLocations": [ + "1159:15:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33970, + "src": "1159:15:79" + }, + "typeName": { + "id": 36647, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36646, + "name": "ERC20", + "nameLocations": [ + "1179:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "1179:5:79" + }, + "referencedDeclaration": 33219, + "src": "1179:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + }, + { + "id": 36651, + "nodeType": "UsingForDirective", + "src": "1190:23:79", + "nodes": [], + "global": false, + "libraryName": { + "id": 36649, + "name": "Math", + "nameLocations": [ + "1196:4:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 42528, + "src": "1196:4:79" + }, + "typeName": { + "id": 36650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1205:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 36658, + "nodeType": "ErrorDefinition", + "src": "2424:94:79", + "nodes": [], + "documentation": { + "id": 36652, + "nodeType": "StructuredDocumentation", + "src": "2320:99:79", + "text": " @notice Tried using a bpt and/or liquidityGauge that is not setup as a position." + }, + "errorSelector": "8a1915c8", + "name": "BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked", + "nameLocation": "2430:50:79", + "parameters": { + "id": 36657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36654, + "mutability": "mutable", + "name": "bpt", + "nameLocation": "2489:3:79", + "nodeType": "VariableDeclaration", + "scope": 36658, + "src": "2481:11:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2481:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36656, + "mutability": "mutable", + "name": "liquidityGauge", + "nameLocation": "2502:14:79", + "nodeType": "VariableDeclaration", + "scope": 36658, + "src": "2494:22:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2494:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2480:37:79" + } + }, + { + "id": 36661, + "nodeType": "ErrorDefinition", + "src": "2636:39:79", + "nodes": [], + "documentation": { + "id": 36659, + "nodeType": "StructuredDocumentation", + "src": "2524:107:79", + "text": " @notice Attempted balancer pool joins, exits, staking, unstaking, etc. with bad slippage" + }, + "errorSelector": "6d7db7b2", + "name": "BalancerPoolAdaptor___Slippage", + "nameLocation": "2642:30:79", + "parameters": { + "id": 36660, + "nodeType": "ParameterList", + "parameters": [], + "src": "2672:2:79" + } + }, + { + "id": 36664, + "nodeType": "ErrorDefinition", + "src": "2752:57:79", + "nodes": [], + "documentation": { + "id": 36662, + "nodeType": "StructuredDocumentation", + "src": "2681:66:79", + "text": " @notice Constructor param for slippage too high" + }, + "errorSelector": "3aa8bcf1", + "name": "BalancerPoolAdaptor___InvalidConstructorSlippage", + "nameLocation": "2758:48:79", + "parameters": { + "id": 36663, + "nodeType": "ParameterList", + "parameters": [], + "src": "2806:2:79" + } + }, + { + "id": 36667, + "nodeType": "ErrorDefinition", + "src": "2916:45:79", + "nodes": [], + "documentation": { + "id": 36665, + "nodeType": "StructuredDocumentation", + "src": "2815:96:79", + "text": " @notice Provided swap array length differs from expected tokens array length." + }, + "errorSelector": "967575bd", + "name": "BalancerPoolAdaptor___LengthMismatch", + "nameLocation": "2922:36:79", + "parameters": { + "id": 36666, + "nodeType": "ParameterList", + "parameters": [], + "src": "2958:2:79" + } + }, + { + "id": 36670, + "nodeType": "ErrorDefinition", + "src": "3046:44:79", + "nodes": [], + "documentation": { + "id": 36668, + "nodeType": "StructuredDocumentation", + "src": "2967:74:79", + "text": " @notice Provided swap information with wrong swap kind." + }, + "errorSelector": "74c0729b", + "name": "BalancerPoolAdaptor___WrongSwapKind", + "nameLocation": "3052:35:79", + "parameters": { + "id": 36669, + "nodeType": "ParameterList", + "parameters": [], + "src": "3087:2:79" + } + }, + { + "id": 36673, + "nodeType": "ErrorDefinition", + "src": "4011:64:79", + "nodes": [], + "documentation": { + "id": 36671, + "nodeType": "StructuredDocumentation", + "src": "3096:910:79", + "text": " @notice Provided swap information does not match expected tokens array.\n @dev Swap information passed to `joinPool` and `exitPool` MUST line up with\n the expected tokens array.\n Example: BB A USD has 4 constituents BB A DAI, BB A USDT, BB A USDC, BB A USD\n but the pool has pre-minted BPTs in its tokens array.\n So the expected tokens array will only contain the first 3 constituents.\n The swap data must be in the following order.\n 0 - Swap data to swap DAI for BB A DAI.\n 1 - Swap data to swap USDT for BB A USDT.\n 2 - Swap data to swap USDC for BB A USDC.\n If the swap data is not in the order above, or tries swapping using tokens\n that are NOT in the BPT, the call will revert with the below error." + }, + "errorSelector": "85f4bd3b", + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch", + "nameLocation": "4017:55:79", + "parameters": { + "id": 36672, + "nodeType": "ParameterList", + "parameters": [], + "src": "4072:2:79" + } + }, + { + "id": 36676, + "nodeType": "ErrorDefinition", + "src": "4176:59:79", + "nodes": [], + "documentation": { + "id": 36674, + "nodeType": "StructuredDocumentation", + "src": "4081:90:79", + "text": " @notice Provided swap information tried to work with internal balances." + }, + "errorSelector": "6d225183", + "name": "BalancerPoolAdaptor___InternalBalancesNotSupported", + "nameLocation": "4182:50:79", + "parameters": { + "id": 36675, + "nodeType": "ParameterList", + "parameters": [], + "src": "4232:2:79" + } + }, + { + "id": 36679, + "nodeType": "ErrorDefinition", + "src": "4371:57:79", + "nodes": [], + "documentation": { + "id": 36677, + "nodeType": "StructuredDocumentation", + "src": "4241:125:79", + "text": " @notice Provided swap information chose to keep an asset that is not supported\n for pricing." + }, + "errorSelector": "03b4d892", + "name": "BalancerPoolAdaptor___UnsupportedTokenNotSwapped", + "nameLocation": "4377:48:79", + "parameters": { + "id": 36678, + "nodeType": "ParameterList", + "parameters": [], + "src": "4425:2:79" + } + }, + { + "id": 36686, + "nodeType": "StructDefinition", + "src": "4563:94:79", + "nodes": [], + "canonicalName": "BalancerPoolAdaptor.SwapData", + "members": [ + { + "constant": false, + "id": 36682, + "mutability": "mutable", + "name": "minAmountsForSwaps", + "nameLocation": "4599:18:79", + "nodeType": "VariableDeclaration", + "scope": 36686, + "src": "4589:28:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 36680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4589:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 36681, + "nodeType": "ArrayTypeName", + "src": "4589:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36685, + "mutability": "mutable", + "name": "swapDeadlines", + "nameLocation": "4637:13:79", + "nodeType": "VariableDeclaration", + "scope": 36686, + "src": "4627:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 36683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4627:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 36684, + "nodeType": "ArrayTypeName", + "src": "4627:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "name": "SwapData", + "nameLocation": "4570:8:79", + "scope": 38236, + "visibility": "public" + }, + { + "id": 36690, + "nodeType": "VariableDeclaration", + "src": "4934:29:79", + "nodes": [], + "constant": false, + "documentation": { + "id": 36687, + "nodeType": "StructuredDocumentation", + "src": "4801:128:79", + "text": " @notice The Balancer Vault contract\n @notice For mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8" + }, + "functionSelector": "fbfa77cf", + "mutability": "immutable", + "name": "vault", + "nameLocation": "4958:5:79", + "scope": 38236, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + }, + "typeName": { + "id": 36689, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36688, + "name": "IVault", + "nameLocations": [ + "4934:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34921, + "src": "4934:6:79" + }, + "referencedDeclaration": 34921, + "src": "4934:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "visibility": "public" + }, + { + "id": 36694, + "nodeType": "VariableDeclaration", + "src": "5204:39:79", + "nodes": [], + "constant": false, + "documentation": { + "id": 36691, + "nodeType": "StructuredDocumentation", + "src": "4970:229:79", + "text": " @notice The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for Cellar\n @notice For mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b" + }, + "functionSelector": "07546172", + "mutability": "immutable", + "name": "minter", + "nameLocation": "5237:6:79", + "scope": 38236, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + }, + "typeName": { + "id": 36693, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36692, + "name": "IBalancerMinter", + "nameLocations": [ + "5204:15:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35222, + "src": "5204:15:79" + }, + "referencedDeclaration": 35222, + "src": "5204:15:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + } + }, + "visibility": "public" + }, + { + "id": 36697, + "nodeType": "VariableDeclaration", + "src": "5489:40:79", + "nodes": [], + "constant": false, + "documentation": { + "id": 36695, + "nodeType": "StructuredDocumentation", + "src": "5250:234:79", + "text": " @notice Number between 0.9e4, and 1e4 representing the amount of slippage that can be\n tolerated when entering/exiting a pool.\n - 0.90e4: 10% slippage\n - 0.95e4: 5% slippage" + }, + "functionSelector": "f7e69b16", + "mutability": "immutable", + "name": "balancerSlippage", + "nameLocation": "5513:16:79", + "scope": 38236, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 36696, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5489:6:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "public" + }, + { + "id": 36701, + "nodeType": "VariableDeclaration", + "src": "5637:55:79", + "nodes": [], + "constant": true, + "documentation": { + "id": 36698, + "nodeType": "StructuredDocumentation", + "src": "5536:96:79", + "text": " @notice The enum value needed to specify an Exact Tokens in for BPT out join." + }, + "functionSelector": "0e222e52", + "mutability": "constant", + "name": "EXACT_TOKENS_IN_FOR_BPT_OUT", + "nameLocation": "5661:27:79", + "scope": 38236, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5637:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 36700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5691:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "public" + }, + { + "id": 36738, + "nodeType": "FunctionDefinition", + "src": "5807:336:79", + "nodes": [], + "body": { + "id": 36737, + "nodeType": "Block", + "src": "5878:265:79", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 36716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 36712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 36710, + "name": "_balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36707, + "src": "5892:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "302e396534", + "id": 36711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5912:5:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_9000_by_1", + "typeString": "int_const 9000" + }, + "value": "0.9e4" + }, + "src": "5892:25:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 36715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 36713, + "name": "_balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36707, + "src": "5921:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "316534", + "id": 36714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5941:3:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "1e4" + }, + "src": "5921:23:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5892:52:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 36720, + "nodeType": "IfStatement", + "src": "5888:127:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 36717, + "name": "BalancerPoolAdaptor___InvalidConstructorSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36664, + "src": "5965:48:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 36718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5965:50:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 36719, + "nodeType": "RevertStatement", + "src": "5958:57:79" + } + }, + { + "expression": { + "id": 36725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 36721, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "6025:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 36723, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36703, + "src": "6040:6:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36722, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "6033:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IVault_$34921_$", + "typeString": "type(contract IVault)" + } + }, + "id": 36724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6033:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "src": "6025:22:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 36726, + "nodeType": "ExpressionStatement", + "src": "6025:22:79" + }, + { + "expression": { + "id": 36731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 36727, + "name": "minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36694, + "src": "6057:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 36729, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36705, + "src": "6082:7:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36728, + "name": "IBalancerMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35222, + "src": "6066:15:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBalancerMinter_$35222_$", + "typeString": "type(contract IBalancerMinter)" + } + }, + "id": 36730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6066:24:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + } + }, + "src": "6057:33:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + } + }, + "id": 36732, + "nodeType": "ExpressionStatement", + "src": "6057:33:79" + }, + { + "expression": { + "id": 36735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 36733, + "name": "balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36697, + "src": "6100:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 36734, + "name": "_balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36707, + "src": "6119:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "6100:36:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 36736, + "nodeType": "ExpressionStatement", + "src": "6100:36:79" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 36708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36703, + "mutability": "mutable", + "name": "_vault", + "nameLocation": "5827:6:79", + "nodeType": "VariableDeclaration", + "scope": 36738, + "src": "5819:14:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5819:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36705, + "mutability": "mutable", + "name": "_minter", + "nameLocation": "5843:7:79", + "nodeType": "VariableDeclaration", + "scope": 36738, + "src": "5835:15:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5835:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36707, + "mutability": "mutable", + "name": "_balancerSlippage", + "nameLocation": "5859:17:79", + "nodeType": "VariableDeclaration", + "scope": 36738, + "src": "5852:24:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 36706, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5852:6:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "5818:59:79" + }, + "returnParameters": { + "id": 36709, + "nodeType": "ParameterList", + "parameters": [], + "src": "5878:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 36753, + "nodeType": "FunctionDefinition", + "src": "6594:145:79", + "nodes": [], + "body": { + "id": 36752, + "nodeType": "Block", + "src": "6663:76:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "42616c616e63657220506f6f6c2041646170746f72205620312e30", + "id": 36748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6701:29:79", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d037f6f2d1b4fc1b11465c366f9e23fa741bc28b129e6eb8d57db8b077419162", + "typeString": "literal_string \"Balancer Pool Adaptor V 1.0\"" + }, + "value": "Balancer Pool Adaptor V 1.0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d037f6f2d1b4fc1b11465c366f9e23fa741bc28b129e6eb8d57db8b077419162", + "typeString": "literal_string \"Balancer Pool Adaptor V 1.0\"" + } + ], + "expression": { + "id": 36746, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6690:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 36747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6694:6:79", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6690:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 36749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6690:41:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 36745, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6680:9:79", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 36750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6680:52:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 36744, + "id": 36751, + "nodeType": "Return", + "src": "6673:59:79" + } + ] + }, + "baseFunctions": [ + 38292 + ], + "documentation": { + "id": 36739, + "nodeType": "StructuredDocumentation", + "src": "6262:327:79", + "text": " @notice Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\n @return encoded adaptor identifier" + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "6603:10:79", + "overrides": { + "id": 36741, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6636:8:79" + }, + "parameters": { + "id": 36740, + "nodeType": "ParameterList", + "parameters": [], + "src": "6613:2:79" + }, + "returnParameters": { + "id": 36744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36743, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36753, + "src": "6654:7:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36742, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6654:7:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6653:9:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": true, + "visibility": "public" + }, + { + "id": 36768, + "nodeType": "FunctionDefinition", + "src": "6947:136:79", + "nodes": [], + "body": { + "id": 36767, + "nodeType": "Block", + "src": "7022:61:79", + "nodes": [], + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 36764, + "name": "BaseAdaptor__UserDepositsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38264, + "src": "7039:35:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 36765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7039:37:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 36766, + "nodeType": "RevertStatement", + "src": "7032:44:79" + } + ] + }, + "baseFunctions": [ + 38336 + ], + "documentation": { + "id": 36754, + "nodeType": "StructuredDocumentation", + "src": "6866:76:79", + "text": " @notice User deposits are NOT allowed into this position." + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "6956:7:79", + "overrides": { + "id": 36762, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7013:8:79" + }, + "parameters": { + "id": 36761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36756, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36768, + "src": "6964:7:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36755, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6964:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36758, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36768, + "src": "6973:12:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36757, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6973:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36760, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36768, + "src": "6987:12:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36759, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6987:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6963:37:79" + }, + "returnParameters": { + "id": 36763, + "nodeType": "ParameterList", + "parameters": [], + "src": "7022:0:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 36834, + "nodeType": "FunctionDefinition", + "src": "7257:680:79", + "nodes": [], + "body": { + "id": 36833, + "nodeType": "Block", + "src": "7416:521:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 36782, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36773, + "src": "7489:10:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36781, + "name": "_externalReceiverCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38493, + "src": "7466:22:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 36783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7466:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 36784, + "nodeType": "ExpressionStatement", + "src": "7466:34:79" + }, + { + "assignments": [ + 36787, + 36789 + ], + "declarations": [ + { + "constant": false, + "id": 36787, + "mutability": "mutable", + "name": "bpt", + "nameLocation": "7517:3:79", + "nodeType": "VariableDeclaration", + "scope": 36833, + "src": "7511:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 36786, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36785, + "name": "ERC20", + "nameLocations": [ + "7511:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "7511:5:79" + }, + "referencedDeclaration": 33219, + "src": "7511:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36789, + "mutability": "mutable", + "name": "liquidityGauge", + "nameLocation": "7530:14:79", + "nodeType": "VariableDeclaration", + "scope": 36833, + "src": "7522:22:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7522:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 36798, + "initialValue": { + "arguments": [ + { + "id": 36792, + "name": "_adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36775, + "src": "7559:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 36793, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "7574:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + { + "id": 36795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7581:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7581:7:79", + "typeDescriptions": {} + } + } + ], + "id": 36796, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7573:16:79", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$", + "typeString": "tuple(type(contract ERC20),type(address))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$", + "typeString": "tuple(type(contract ERC20),type(address))" + } + ], + "expression": { + "id": 36790, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7548:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 36791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7552:6:79", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "7548:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 36797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7548:42:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_ERC20_$33219_$_t_address_payable_$", + "typeString": "tuple(contract ERC20,address payable)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7510:80:79" + }, + { + "assignments": [ + 36800 + ], + "declarations": [ + { + "constant": false, + "id": 36800, + "mutability": "mutable", + "name": "liquidBptBeforeWithdraw", + "nameLocation": "7608:23:79", + "nodeType": "VariableDeclaration", + "scope": 36833, + "src": "7600:31:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36799, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7600:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 36808, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 36805, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7656:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 36804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7648:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7648:7:79", + "typeDescriptions": {} + } + }, + "id": 36806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7648:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 36801, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36787, + "src": "7634:3:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7638:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "7634:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 36807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7634:28:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7600:62:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 36811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 36809, + "name": "_amountBPTToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36771, + "src": "7676:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 36810, + "name": "liquidBptBeforeWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36800, + "src": "7695:23:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7676:42:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 36825, + "nodeType": "IfStatement", + "src": "7672:203:79", + "trueBody": { + "id": 36824, + "nodeType": "Block", + "src": "7720:155:79", + "statements": [ + { + "assignments": [ + 36813 + ], + "declarations": [ + { + "constant": false, + "id": 36813, + "mutability": "mutable", + "name": "amountToUnstake", + "nameLocation": "7742:15:79", + "nodeType": "VariableDeclaration", + "scope": 36824, + "src": "7734:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7734:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 36817, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 36816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 36814, + "name": "_amountBPTToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36771, + "src": "7760:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 36815, + "name": "liquidBptBeforeWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36800, + "src": "7779:23:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7760:42:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7734:68:79" + }, + { + "expression": { + "arguments": [ + { + "id": 36819, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36787, + "src": "7827:3:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "id": 36820, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36789, + "src": "7832:14:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 36821, + "name": "amountToUnstake", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36813, + "src": "7848:15:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 36818, + "name": "unstakeBPT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37991, + "src": "7816:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 36822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7816:48:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 36823, + "nodeType": "ExpressionStatement", + "src": "7816:48:79" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 36829, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36773, + "src": "7901:10:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 36830, + "name": "_amountBPTToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36771, + "src": "7913:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 36826, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36787, + "src": "7884:3:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7888:12:79", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 33949, + "src": "7884:16:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 36831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7884:46:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 36832, + "nodeType": "ExpressionStatement", + "src": "7884:46:79" + } + ] + }, + "baseFunctions": [ + 38348 + ], + "documentation": { + "id": 36769, + "nodeType": "StructuredDocumentation", + "src": "7089:163:79", + "text": " @notice If a user withdraw needs more BPTs than what is in the Cellar's\n wallet, then the Cellar will unstake BPTs from the gauge." + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "7266:8:79", + "overrides": { + "id": 36779, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7407:8:79" + }, + "parameters": { + "id": 36778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36771, + "mutability": "mutable", + "name": "_amountBPTToSend", + "nameLocation": "7292:16:79", + "nodeType": "VariableDeclaration", + "scope": 36834, + "src": "7284:24:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7284:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36773, + "mutability": "mutable", + "name": "_recipient", + "nameLocation": "7326:10:79", + "nodeType": "VariableDeclaration", + "scope": 36834, + "src": "7318:18:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7318:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36775, + "mutability": "mutable", + "name": "_adaptorData", + "nameLocation": "7359:12:79", + "nodeType": "VariableDeclaration", + "scope": 36834, + "src": "7346:25:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36774, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7346:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36777, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36834, + "src": "7381:12:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36776, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7381:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7274:125:79" + }, + "returnParameters": { + "id": 36780, + "nodeType": "ParameterList", + "parameters": [], + "src": "7416:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 36850, + "nodeType": "FunctionDefinition", + "src": "8066:153:79", + "nodes": [], + "body": { + "id": 36849, + "nodeType": "Block", + "src": "8172:47:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 36846, + "name": "_adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36837, + "src": "8199:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 36845, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 36917 + ], + "referencedDeclaration": 36917, + "src": "8189:9:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory) view returns (uint256)" + } + }, + "id": 36847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8189:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 36844, + "id": 36848, + "nodeType": "Return", + "src": "8182:30:79" + } + ] + }, + "baseFunctions": [ + 38366 + ], + "documentation": { + "id": 36835, + "nodeType": "StructuredDocumentation", + "src": "7943:118:79", + "text": " @notice Accounts for BPTs in the Cellar's wallet, and staked in gauge.\n @dev See `balanceOf`." + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "8075:16:79", + "overrides": { + "id": 36841, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8145:8:79" + }, + "parameters": { + "id": 36840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36837, + "mutability": "mutable", + "name": "_adaptorData", + "nameLocation": "8105:12:79", + "nodeType": "VariableDeclaration", + "scope": 36850, + "src": "8092:25:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36836, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8092:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36839, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36850, + "src": "8119:12:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36838, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8119:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8091:41:79" + }, + "returnParameters": { + "id": 36844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36843, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36850, + "src": "8163:7:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8163:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8162:9:79" + }, + "scope": 38236, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 36917, + "nodeType": "FunctionDefinition", + "src": "8547:465:79", + "nodes": [], + "body": { + "id": 36916, + "nodeType": "Block", + "src": "8632:380:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 36861, + 36863 + ], + "declarations": [ + { + "constant": false, + "id": 36861, + "mutability": "mutable", + "name": "bpt", + "nameLocation": "8649:3:79", + "nodeType": "VariableDeclaration", + "scope": 36916, + "src": "8643:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 36860, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36859, + "name": "ERC20", + "nameLocations": [ + "8643:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "8643:5:79" + }, + "referencedDeclaration": 33219, + "src": "8643:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36863, + "mutability": "mutable", + "name": "liquidityGauge", + "nameLocation": "8662:14:79", + "nodeType": "VariableDeclaration", + "scope": 36916, + "src": "8654:22:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8654:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 36872, + "initialValue": { + "arguments": [ + { + "id": 36866, + "name": "_adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36853, + "src": "8691:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 36867, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "8706:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + { + "id": 36869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8713:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36868, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8713:7:79", + "typeDescriptions": {} + } + } + ], + "id": 36870, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8705:16:79", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$", + "typeString": "tuple(type(contract ERC20),type(address))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$", + "typeString": "tuple(type(contract ERC20),type(address))" + } + ], + "expression": { + "id": 36864, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8680:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 36865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8684:6:79", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "8680:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 36871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8680:42:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_ERC20_$33219_$_t_address_payable_$", + "typeString": "tuple(contract ERC20,address payable)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8642:80:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 36878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 36873, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36863, + "src": "8736:14:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 36876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8762:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 36875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8754:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36874, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8754:7:79", + "typeDescriptions": {} + } + }, + "id": 36877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8754:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8736:28:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 36887, + "nodeType": "IfStatement", + "src": "8732:73:79", + "trueBody": { + "expression": { + "arguments": [ + { + "expression": { + "id": 36883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8794:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 36884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8798:6:79", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8794:10:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 36880, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36861, + "src": "8779:3:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 36879, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "8773:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 36881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8773:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8784:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "8773:20:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 36885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8773:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 36858, + "id": 36886, + "nodeType": "Return", + "src": "8766:39:79" + } + }, + { + "assignments": [ + 36890 + ], + "declarations": [ + { + "constant": false, + "id": 36890, + "mutability": "mutable", + "name": "liquidityGaugeToken", + "nameLocation": "8821:19:79", + "nodeType": "VariableDeclaration", + "scope": 36916, + "src": "8815:25:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 36889, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36888, + "name": "ERC20", + "nameLocations": [ + "8815:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "8815:5:79" + }, + "referencedDeclaration": 33219, + "src": "8815:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 36897, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 36894, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36863, + "src": "8857:14:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8849:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8849:7:79", + "typeDescriptions": {} + } + }, + "id": 36895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8849:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36891, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "8843:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 36896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8843:30:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8815:58:79" + }, + { + "assignments": [ + 36899 + ], + "declarations": [ + { + "constant": false, + "id": 36899, + "mutability": "mutable", + "name": "stakedBPT", + "nameLocation": "8891:9:79", + "nodeType": "VariableDeclaration", + "scope": 36916, + "src": "8883:17:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8883:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 36905, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 36902, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8933:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 36903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8937:6:79", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8933:10:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 36900, + "name": "liquidityGaugeToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36890, + "src": "8903:19:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8923:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "8903:29:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 36904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8903:41:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8883:61:79" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 36914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 36910, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8982:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 36911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8986:6:79", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8982:10:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 36907, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36861, + "src": "8967:3:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 36906, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "8961:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 36908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8961:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8972:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "8961:20:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 36912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8961:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 36913, + "name": "stakedBPT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36899, + "src": "8996:9:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8961:44:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 36858, + "id": 36915, + "nodeType": "Return", + "src": "8954:51:79" + } + ] + }, + "baseFunctions": [ + 38356 + ], + "documentation": { + "id": 36851, + "nodeType": "StructuredDocumentation", + "src": "8225:317:79", + "text": " @notice Calculates the Cellar's balance of the positions creditAsset, a specific bpt.\n @param _adaptorData encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\n @return total balance of bpt for Cellar, including liquid bpt and staked bpt" + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "8556:9:79", + "overrides": { + "id": 36855, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8605:8:79" + }, + "parameters": { + "id": 36854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36853, + "mutability": "mutable", + "name": "_adaptorData", + "nameLocation": "8579:12:79", + "nodeType": "VariableDeclaration", + "scope": 36917, + "src": "8566:25:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36852, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8566:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8565:27:79" + }, + "returnParameters": { + "id": 36858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36857, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36917, + "src": "8623:7:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8623:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8622:9:79" + }, + "scope": 38236, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 36938, + "nodeType": "FunctionDefinition", + "src": "9285:147:79", + "nodes": [], + "body": { + "id": 36937, + "nodeType": "Block", + "src": "9366:66:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 36930, + "name": "_adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36920, + "src": "9400:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 36932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9415:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9415:7:79", + "typeDescriptions": {} + } + } + ], + "id": 36933, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9414:9:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 36928, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9389:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 36929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9393:6:79", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "9389:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 36934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9389:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 36927, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "9383:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 36935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9383:42:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 36926, + "id": 36936, + "nodeType": "Return", + "src": "9376:49:79" + } + ] + }, + "baseFunctions": [ + 38375 + ], + "documentation": { + "id": 36918, + "nodeType": "StructuredDocumentation", + "src": "9018:262:79", + "text": " @notice Returns the positions underlying assets.\n @param _adaptorData encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\n @return bpt for Cellar's respective balancer pool position" + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "9294:7:79", + "overrides": { + "id": 36922, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9341:8:79" + }, + "parameters": { + "id": 36921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36920, + "mutability": "mutable", + "name": "_adaptorData", + "nameLocation": "9315:12:79", + "nodeType": "VariableDeclaration", + "scope": 36938, + "src": "9302:25:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36919, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9302:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9301:27:79" + }, + "returnParameters": { + "id": 36926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36925, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36938, + "src": "9359:5:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 36924, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36923, + "name": "ERC20", + "nameLocations": [ + "9359:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "9359:5:79" + }, + "referencedDeclaration": 33219, + "src": "9359:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "9358:7:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 36967, + "nodeType": "FunctionDefinition", + "src": "9934:183:79", + "nodes": [], + "body": { + "id": 36966, + "nodeType": "Block", + "src": "10034:83:79", + "nodes": [], + "statements": [ + { + "expression": { + "id": 36956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 36949, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36947, + "src": "10044:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "31", + "id": 36954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10065:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 36953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "10053:11:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (contract ERC20[] memory)" + }, + "typeName": { + "baseType": { + "id": 36951, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36950, + "name": "ERC20", + "nameLocations": [ + "10057:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "10057:5:79" + }, + "referencedDeclaration": 33219, + "src": "10057:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36952, + "nodeType": "ArrayTypeName", + "src": "10057:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + } + }, + "id": 36955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10053:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "src": "10044:23:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 36957, + "nodeType": "ExpressionStatement", + "src": "10044:23:79" + }, + { + "expression": { + "id": 36964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 36958, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36947, + "src": "10077:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 36960, + "indexExpression": { + "hexValue": "30", + "id": 36959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10084:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10077:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 36962, + "name": "_adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36941, + "src": "10097:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 36961, + "name": "assetOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 36938 + ], + "referencedDeclaration": 36938, + "src": "10089:7:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_contract$_ERC20_$33219_$", + "typeString": "function (bytes memory) pure returns (contract ERC20)" + } + }, + "id": 36963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10089:21:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "src": "10077:33:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36965, + "nodeType": "ExpressionStatement", + "src": "10077:33:79" + } + ] + }, + "baseFunctions": [ + 38403 + ], + "documentation": { + "id": 36939, + "nodeType": "StructuredDocumentation", + "src": "9438:491:79", + "text": " @notice When positions are added to the Registry, this function can be used in order to figure out\n what assets this adaptor needs to price, and confirm pricing is properly setup.\n @param _adaptorData specified bpt of interest\n @return assets for Cellar's respective balancer pool position\n @dev all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)" + }, + "functionSelector": "aeffddde", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetsUsed", + "nameLocation": "9943:10:79", + "overrides": { + "id": 36943, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9993:8:79" + }, + "parameters": { + "id": 36942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36941, + "mutability": "mutable", + "name": "_adaptorData", + "nameLocation": "9967:12:79", + "nodeType": "VariableDeclaration", + "scope": 36967, + "src": "9954:25:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 36940, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9954:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9953:27:79" + }, + "returnParameters": { + "id": 36948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36947, + "mutability": "mutable", + "name": "assets", + "nameLocation": "10026:6:79", + "nodeType": "VariableDeclaration", + "scope": 36967, + "src": "10011:21:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 36945, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36944, + "name": "ERC20", + "nameLocations": [ + "10011:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "10011:5:79" + }, + "referencedDeclaration": 33219, + "src": "10011:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 36946, + "nodeType": "ArrayTypeName", + "src": "10011:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "src": "10010:23:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 36977, + "nodeType": "FunctionDefinition", + "src": "10252:83:79", + "nodes": [], + "body": { + "id": 36976, + "nodeType": "Block", + "src": "10306:29:79", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 36974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10323:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 36973, + "id": 36975, + "nodeType": "Return", + "src": "10316:12:79" + } + ] + }, + "baseFunctions": [ + 38409 + ], + "documentation": { + "id": 36968, + "nodeType": "StructuredDocumentation", + "src": "10123:124:79", + "text": " @notice This adaptor returns collateral, and not debt.\n @return whether adaptor returns debt or not" + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "10261:6:79", + "overrides": { + "id": 36970, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10282:8:79" + }, + "parameters": { + "id": 36969, + "nodeType": "ParameterList", + "parameters": [], + "src": "10267:2:79" + }, + "returnParameters": { + "id": 36973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36972, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36977, + "src": "10300:4:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 36971, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10300:4:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10299:6:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 37516, + "nodeType": "FunctionDefinition", + "src": "10857:5846:79", + "nodes": [], + "body": { + "id": 37515, + "nodeType": "Block", + "src": "11029:5674:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 36994 + ], + "declarations": [ + { + "constant": false, + "id": 36994, + "mutability": "mutable", + "name": "poolId", + "nameLocation": "11047:6:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "11039:14:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36993, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11039:7:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 37003, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 36998, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36981, + "src": "11074:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 36997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11066:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 36996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11066:7:79", + "typeDescriptions": {} + } + }, + "id": 36999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11066:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36995, + "name": "IBasePool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35186, + "src": "11056:9:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBasePool_$35186_$", + "typeString": "type(contract IBasePool)" + } + }, + "id": 37000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11056:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasePool_$35186", + "typeString": "contract IBasePool" + } + }, + "id": 37001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11086:9:79", + "memberName": "getPoolId", + "nodeType": "MemberAccess", + "referencedDeclaration": 35126, + "src": "11056:39:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 37002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11056:41:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11039:58:79" + }, + { + "assignments": [ + 37006 + ], + "declarations": [ + { + "constant": false, + "id": 37006, + "mutability": "mutable", + "name": "priceRouter", + "nameLocation": "11119:11:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "11107:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + }, + "typeName": { + "id": 37005, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37004, + "name": "PriceRouter", + "nameLocations": [ + "11107:11:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41904, + "src": "11107:11:79" + }, + "referencedDeclaration": 41904, + "src": "11107:11:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "visibility": "internal" + } + ], + "id": 37015, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37010, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "11148:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11140:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11140:7:79", + "typeDescriptions": {} + } + }, + "id": 37011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11140:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37007, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "11133:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$32635_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 37012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11133:21:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$32635", + "typeString": "contract Cellar" + } + }, + "id": 37013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11155:11:79", + "memberName": "priceRouter", + "nodeType": "MemberAccess", + "referencedDeclaration": 29326, + "src": "11133:33:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_PriceRouter_$41904_$", + "typeString": "function () view external returns (contract PriceRouter)" + } + }, + "id": 37014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11133:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11107:61:79" + }, + { + "assignments": [ + 37020 + ], + "declarations": [ + { + "constant": false, + "id": 37020, + "mutability": "mutable", + "name": "request", + "nameLocation": "11247:7:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "11217:37:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest" + }, + "typeName": { + "id": 37019, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37018, + "name": "IVault.JoinPoolRequest", + "nameLocations": [ + "11217:6:79", + "11224:15:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34672, + "src": "11217:22:79" + }, + "referencedDeclaration": 34672, + "src": "11217:22:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_storage_ptr", + "typeString": "struct IVault.JoinPoolRequest" + } + }, + "visibility": "internal" + } + ], + "id": 37021, + "nodeType": "VariableDeclarationStatement", + "src": "11217:37:79" + }, + { + "expression": { + "id": 37026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 37022, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "11264:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37024, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11272:19:79", + "memberName": "fromInternalBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 34671, + "src": "11264:27:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 37025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11294:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "11264:35:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37027, + "nodeType": "ExpressionStatement", + "src": "11264:35:79" + }, + { + "assignments": [ + 37032 + ], + "declarations": [ + { + "constant": false, + "id": 37032, + "mutability": "mutable", + "name": "expectedTokensIn", + "nameLocation": "11324:16:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "11309:31:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 37030, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37029, + "name": "ERC20", + "nameLocations": [ + "11309:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "11309:5:79" + }, + "referencedDeclaration": 33219, + "src": "11309:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37031, + "nodeType": "ArrayTypeName", + "src": "11309:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "id": 37033, + "nodeType": "VariableDeclarationStatement", + "src": "11309:31:79" + }, + { + "id": 37126, + "nodeType": "Block", + "src": "11350:706:79", + "statements": [ + { + "assignments": [ + 37038, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 37038, + "mutability": "mutable", + "name": "poolTokens", + "nameLocation": "11381:10:79", + "nodeType": "VariableDeclaration", + "scope": 37126, + "src": "11365:26:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 37036, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37035, + "name": "IERC20", + "nameLocations": [ + "11365:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35010, + "src": "11365:6:79" + }, + "referencedDeclaration": 35010, + "src": "11365:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + }, + "id": 37037, + "nodeType": "ArrayTypeName", + "src": "11365:8:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 37043, + "initialValue": { + "arguments": [ + { + "id": 37041, + "name": "poolId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36994, + "src": "11419:6:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 37039, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "11399:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11405:13:79", + "memberName": "getPoolTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 34647, + "src": "11399:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "id": 37042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11399:27:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "tuple(contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11364:62:79" + }, + { + "expression": { + "id": 37052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 37044, + "name": "expectedTokensIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37032, + "src": "11440:16:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 37048, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36981, + "src": "11500:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11492:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11492:7:79", + "typeDescriptions": {} + } + }, + "id": 37049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11492:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37050, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11512:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 37045, + "name": "_getPoolTokensWithNoPremintedBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38195, + "src": "11459:32:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)" + } + }, + "id": 37051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11459:64:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "src": "11440:83:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37053, + "nodeType": "ExpressionStatement", + "src": "11440:83:79" + }, + { + "expression": { + "id": 37064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 37054, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "11537:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11545:6:79", + "memberName": "assets", + "nodeType": "MemberAccess", + "referencedDeclaration": 34664, + "src": "11537:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr", + "typeString": "contract IAsset[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 37061, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11567:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 37062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11578:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11567:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "11554:12:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (contract IAsset[] memory)" + }, + "typeName": { + "baseType": { + "id": 37058, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37057, + "name": "IAsset", + "nameLocations": [ + "11558:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33988, + "src": "11558:6:79" + }, + "referencedDeclaration": 33988, + "src": "11558:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + }, + "id": 37059, + "nodeType": "ArrayTypeName", + "src": "11558:8:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IAsset_$33988_$dyn_storage_ptr", + "typeString": "contract IAsset[]" + } + } + }, + "id": 37063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11554:31:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr", + "typeString": "contract IAsset[] memory" + } + }, + "src": "11537:48:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr", + "typeString": "contract IAsset[] memory" + } + }, + "id": 37065, + "nodeType": "ExpressionStatement", + "src": "11537:48:79" + }, + { + "body": { + "expression": { + "id": 37089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 37076, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "11643:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37079, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11651:6:79", + "memberName": "assets", + "nodeType": "MemberAccess", + "referencedDeclaration": 34664, + "src": "11643:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr", + "typeString": "contract IAsset[] memory" + } + }, + "id": 37080, + "indexExpression": { + "id": 37078, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37067, + "src": "11658:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11643:17:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 37084, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11678:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 37086, + "indexExpression": { + "id": 37085, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37067, + "src": "11689:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11678:13:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + ], + "id": 37083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11670:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11670:7:79", + "typeDescriptions": {} + } + }, + "id": 37087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11670:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37081, + "name": "IAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33988, + "src": "11663:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAsset_$33988_$", + "typeString": "type(contract IAsset)" + } + }, + "id": 37088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11663:30:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + }, + "src": "11643:50:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + }, + "id": 37090, + "nodeType": "ExpressionStatement", + "src": "11643:50:79" + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37069, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37067, + "src": "11615:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37070, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11619:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 37071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11630:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11619:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11615:21:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37091, + "initializationExpression": { + "assignments": [ + 37067 + ], + "declarations": [ + { + "constant": false, + "id": 37067, + "mutability": "mutable", + "name": "i", + "nameLocation": "11612:1:79", + "nodeType": "VariableDeclaration", + "scope": 37091, + "src": "11604:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11604:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37068, + "nodeType": "VariableDeclarationStatement", + "src": "11604:9:79" + }, + "loopExpression": { + "expression": { + "id": 37074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "11638:3:79", + "subExpression": { + "id": 37073, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37067, + "src": "11640:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37075, + "nodeType": "ExpressionStatement", + "src": "11638:3:79" + }, + "nodeType": "ForStatement", + "src": "11599:94:79" + }, + { + "expression": { + "id": 37101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 37092, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "11707:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37094, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11715:12:79", + "memberName": "maxAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34667, + "src": "11707:20:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 37098, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11744:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 37099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11755:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11744:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "11730:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 37095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11734:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37096, + "nodeType": "ArrayTypeName", + "src": "11734:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 37100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11730:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "11707:55:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37102, + "nodeType": "ExpressionStatement", + "src": "11707:55:79" + }, + { + "body": { + "expression": { + "id": 37123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 37113, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "12002:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37116, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12010:12:79", + "memberName": "maxAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34667, + "src": "12002:20:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37117, + "indexExpression": { + "id": 37115, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37104, + "src": "12023:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12002:23:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 37120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12033:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 37119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12033:7:79", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 37118, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "12028:4:79", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12028:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 37122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12042:3:79", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12028:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12002:43:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37124, + "nodeType": "ExpressionStatement", + "src": "12002:43:79" + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37106, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37104, + "src": "11974:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37107, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37038, + "src": "11978:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 37108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11989:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11978:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11974:21:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37125, + "initializationExpression": { + "assignments": [ + 37104 + ], + "declarations": [ + { + "constant": false, + "id": 37104, + "mutability": "mutable", + "name": "i", + "nameLocation": "11971:1:79", + "nodeType": "VariableDeclaration", + "scope": 37125, + "src": "11963:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11963:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37105, + "nodeType": "VariableDeclarationStatement", + "src": "11963:9:79" + }, + "loopExpression": { + "expression": { + "id": 37111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "11997:3:79", + "subExpression": { + "id": 37110, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37104, + "src": "11999:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37112, + "nodeType": "ExpressionStatement", + "src": "11997:3:79" + }, + "nodeType": "ForStatement", + "src": "11958:87:79" + } + ] + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 37127, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12145:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12161:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12145:22:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 37129, + "name": "expectedTokensIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37032, + "src": "12171:16:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12188:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12171:23:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12145:49:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37135, + "nodeType": "IfStatement", + "src": "12141:100:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37132, + "name": "BalancerPoolAdaptor___LengthMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36667, + "src": "12203:36:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12203:38:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37134, + "nodeType": "RevertStatement", + "src": "12196:45:79" + } + }, + { + "id": 37353, + "nodeType": "Block", + "src": "12346:2904:79", + "statements": [ + { + "assignments": [ + 37140 + ], + "declarations": [ + { + "constant": false, + "id": 37140, + "mutability": "mutable", + "name": "joinAmounts", + "nameLocation": "12377:11:79", + "nodeType": "VariableDeclaration", + "scope": 37353, + "src": "12360:28:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 37138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12360:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37139, + "nodeType": "ArrayTypeName", + "src": "12360:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 37147, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 37144, + "name": "expectedTokensIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37032, + "src": "12405:16:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12422:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12405:23:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12391:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 37141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12395:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37142, + "nodeType": "ArrayTypeName", + "src": "12395:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 37146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12391:38:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12360:69:79" + }, + { + "body": { + "id": 37340, + "nodeType": "Block", + "src": "12492:2651:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 37158, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12622:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37160, + "indexExpression": { + "id": 37159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12638:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12622:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37161, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12641:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "12622:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 37162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12651:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12622:30:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37165, + "nodeType": "IfStatement", + "src": "12618:44:79", + "trueBody": { + "id": 37164, + "nodeType": "Continue", + "src": "12654:8:79" + } + }, + { + "assignments": [ + 37168 + ], + "declarations": [ + { + "constant": false, + "id": 37168, + "mutability": "mutable", + "name": "inputToken", + "nameLocation": "12793:10:79", + "nodeType": "VariableDeclaration", + "scope": 37340, + "src": "12787:16:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 37167, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37166, + "name": "ERC20", + "nameLocations": [ + "12787:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "12787:5:79" + }, + "referencedDeclaration": 33219, + "src": "12787:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 37178, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37172, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12820:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37174, + "indexExpression": { + "id": 37173, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12836:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12820:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37175, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12839:7:79", + "memberName": "assetIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34744, + "src": "12820:26:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12812:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12812:7:79", + "typeDescriptions": {} + } + }, + "id": 37176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12812:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37169, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "12806:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12806:42:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12787:61:79" + }, + { + "expression": { + "id": 37190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 37179, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12866:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37181, + "indexExpression": { + "id": 37180, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12882:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12866:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12885:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "12866:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 37184, + "name": "inputToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37168, + "src": "12908:10:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "expression": { + "baseExpression": { + "id": 37185, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12920:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37187, + "indexExpression": { + "id": 37186, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12936:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12920:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12939:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "12920:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37183, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38439, + "src": "12894:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 37189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12894:52:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12866:80:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37191, + "nodeType": "ExpressionStatement", + "src": "12866:80:79" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37197, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "12995:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12987:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12987:7:79", + "typeDescriptions": {} + } + }, + "id": 37198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12987:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "baseExpression": { + "id": 37199, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "13003:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37201, + "indexExpression": { + "id": 37200, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "13019:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13003:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37202, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13022:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "13003:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37192, + "name": "inputToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37168, + "src": "12964:10:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12975:11:79", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 33969, + "src": "12964:22:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 37203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12964:65:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37204, + "nodeType": "ExpressionStatement", + "src": "12964:65:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37207, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "13146:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37209, + "indexExpression": { + "id": 37208, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "13162:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13146:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37210, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13165:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "13146:27:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13138:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13138:7:79", + "typeDescriptions": {} + } + }, + "id": 37211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13138:36:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 37214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13186:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 37213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13178:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13178:7:79", + "typeDescriptions": {} + } + }, + "id": 37215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13178:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13138:50:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 37338, + "nodeType": "Block", + "src": "14746:383:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37313, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "14897:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37315, + "indexExpression": { + "id": 37314, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14913:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14897:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37316, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14916:7:79", + "memberName": "assetIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34744, + "src": "14897:26:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14889:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14889:7:79", + "typeDescriptions": {} + } + }, + "id": 37317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14889:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "baseExpression": { + "id": 37320, + "name": "expectedTokensIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37032, + "src": "14936:16:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37322, + "indexExpression": { + "id": 37321, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14953:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14936:19:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14928:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14928:7:79", + "typeDescriptions": {} + } + }, + "id": 37323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14928:28:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14889:67:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37328, + "nodeType": "IfStatement", + "src": "14885:161:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37325, + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36673, + "src": "14989:55:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14989:57:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37327, + "nodeType": "RevertStatement", + "src": "14982:64:79" + } + }, + { + "expression": { + "id": 37336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37329, + "name": "joinAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37140, + "src": "15068:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37331, + "indexExpression": { + "id": 37330, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "15080:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15068:14:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 37332, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15085:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37334, + "indexExpression": { + "id": 37333, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "15101:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15085:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37335, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15104:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "15085:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15068:42:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37337, + "nodeType": "ExpressionStatement", + "src": "15068:42:79" + } + ] + }, + "id": 37339, + "nodeType": "IfStatement", + "src": "13134:1995:79", + "trueBody": { + "id": 37310, + "nodeType": "Block", + "src": "13190:1550:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37219, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "13327:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37221, + "indexExpression": { + "id": 37220, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "13343:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13327:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13346:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "13327:27:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13319:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13319:7:79", + "typeDescriptions": {} + } + }, + "id": 37223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13319:36:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "baseExpression": { + "id": 37226, + "name": "expectedTokensIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37032, + "src": "13367:16:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37228, + "indexExpression": { + "id": 37227, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "13384:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13367:19:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13359:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13359:7:79", + "typeDescriptions": {} + } + }, + "id": 37229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13359:28:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13319:68:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37234, + "nodeType": "IfStatement", + "src": "13315:162:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37231, + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36673, + "src": "13420:55:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13420:57:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37233, + "nodeType": "RevertStatement", + "src": "13413:64:79" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + }, + "id": 37242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 37235, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "13560:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37237, + "indexExpression": { + "id": 37236, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "13576:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13560:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37238, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13579:4:79", + "memberName": "kind", + "nodeType": "MemberAccess", + "referencedDeclaration": 34741, + "src": "13560:23:79", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 37239, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "13587:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IVault_$34921_$", + "typeString": "type(contract IVault)" + } + }, + "id": 37240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13594:8:79", + "memberName": "SwapKind", + "nodeType": "MemberAccess", + "referencedDeclaration": 34720, + "src": "13587:15:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SwapKind_$34720_$", + "typeString": "type(enum IVault.SwapKind)" + } + }, + "id": 37241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13603:8:79", + "memberName": "GIVEN_IN", + "nodeType": "MemberAccess", + "referencedDeclaration": 34718, + "src": "13587:24:79", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + } + }, + "src": "13560:51:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37246, + "nodeType": "IfStatement", + "src": "13556:125:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37243, + "name": "BalancerPoolAdaptor___WrongSwapKind", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36670, + "src": "13644:35:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13644:37:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37245, + "nodeType": "RevertStatement", + "src": "13637:44:79" + } + }, + { + "assignments": [ + 37251 + ], + "declarations": [ + { + "constant": false, + "id": 37251, + "mutability": "mutable", + "name": "fundManagement", + "nameLocation": "13789:14:79", + "nodeType": "VariableDeclaration", + "scope": 37310, + "src": "13760:43:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement" + }, + "typeName": { + "id": 37250, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37249, + "name": "IVault.FundManagement", + "nameLocations": [ + "13760:6:79", + "13767:14:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34813, + "src": "13760:21:79" + }, + "referencedDeclaration": 34813, + "src": "13760:21:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_storage_ptr", + "typeString": "struct IVault.FundManagement" + } + }, + "visibility": "internal" + } + ], + "id": 37268, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 37256, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13870:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13862:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13862:7:79", + "typeDescriptions": {} + } + }, + "id": 37257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13862:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "66616c7365", + "id": 37258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13922:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 37263, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13980:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13972:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13972:7:79", + "typeDescriptions": {} + } + }, + "id": 37264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13972:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13964:8:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 37259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13964:8:79", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 37265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13964:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "hexValue": "66616c7365", + "id": 37266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14031:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 37252, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "13806:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IVault_$34921_$", + "typeString": "type(contract IVault)" + } + }, + "id": 37253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13813:14:79", + "memberName": "FundManagement", + "nodeType": "MemberAccess", + "referencedDeclaration": 34813, + "src": "13806:21:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_FundManagement_$34813_storage_ptr_$", + "typeString": "type(struct IVault.FundManagement storage pointer)" + } + }, + "id": 37267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "13854:6:79", + "13901:19:79", + "13953:9:79", + "14012:17:79" + ], + "names": [ + "sender", + "fromInternalBalance", + "recipient", + "toInternalBalance" + ], + "nodeType": "FunctionCall", + "src": "13806:253:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13760:299:79" + }, + { + "assignments": [ + 37270 + ], + "declarations": [ + { + "constant": false, + "id": 37270, + "mutability": "mutable", + "name": "swapAmountOut", + "nameLocation": "14260:13:79", + "nodeType": "VariableDeclaration", + "scope": 37310, + "src": "14252:21:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14252:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37286, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 37273, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "14312:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37275, + "indexExpression": { + "id": 37274, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14328:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14312:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + { + "id": 37276, + "name": "fundManagement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37251, + "src": "14356:14:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + } + }, + { + "baseExpression": { + "expression": { + "id": 37277, + "name": "swapData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36988, + "src": "14396:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData memory" + } + }, + "id": 37278, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14405:18:79", + "memberName": "minAmountsForSwaps", + "nodeType": "MemberAccess", + "referencedDeclaration": 36682, + "src": "14396:27:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37280, + "indexExpression": { + "id": 37279, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14424:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14396:30:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 37281, + "name": "swapData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36988, + "src": "14452:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData memory" + } + }, + "id": 37282, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14461:13:79", + "memberName": "swapDeadlines", + "nodeType": "MemberAccess", + "referencedDeclaration": 36685, + "src": "14452:22:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37284, + "indexExpression": { + "id": 37283, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14475:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14452:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + }, + { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37271, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "14276:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14282:4:79", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 34736, + "src": "14276:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_SingleSwap_$34752_memory_ptr_$_t_struct$_FundManagement_$34813_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)" + } + }, + "id": 37285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14276:223:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14252:247:79" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37299, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "14646:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14638:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14638:7:79", + "typeDescriptions": {} + } + }, + "id": 37300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14638:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37301, + "name": "swapAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37270, + "src": "14654:13:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37290, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "14596:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37292, + "indexExpression": { + "id": 37291, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14612:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14596:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37293, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14615:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "14596:27:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14588:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14588:7:79", + "typeDescriptions": {} + } + }, + "id": 37294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14588:36:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37287, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "14582:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14582:43:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14626:11:79", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 33969, + "src": "14582:55:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 37302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14582:86:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37303, + "nodeType": "ExpressionStatement", + "src": "14582:86:79" + }, + { + "expression": { + "id": 37308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37304, + "name": "joinAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37140, + "src": "14691:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37306, + "indexExpression": { + "id": 37305, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "14703:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14691:14:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 37307, + "name": "swapAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37270, + "src": "14708:13:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14691:30:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37309, + "nodeType": "ExpressionStatement", + "src": "14691:30:79" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37151, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12459:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37152, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "12463:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12479:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12463:22:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12459:26:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37341, + "initializationExpression": { + "assignments": [ + 37149 + ], + "declarations": [ + { + "constant": false, + "id": 37149, + "mutability": "mutable", + "name": "i", + "nameLocation": "12456:1:79", + "nodeType": "VariableDeclaration", + "scope": 37341, + "src": "12448:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12448:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37150, + "nodeType": "VariableDeclarationStatement", + "src": "12448:9:79" + }, + "loopExpression": { + "expression": { + "id": 37156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "12487:3:79", + "subExpression": { + "id": 37155, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37149, + "src": "12489:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37157, + "nodeType": "ExpressionStatement", + "src": "12487:3:79" + }, + "nodeType": "ForStatement", + "src": "12443:2700:79" + }, + { + "expression": { + "id": 37351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 37342, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "15156:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + }, + "id": 37344, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15164:8:79", + "memberName": "userData", + "nodeType": "MemberAccess", + "referencedDeclaration": 34669, + "src": "15156:16:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 37347, + "name": "EXACT_TOKENS_IN_FOR_BPT_OUT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36701, + "src": "15186:27:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 37348, + "name": "joinAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37140, + "src": "15215:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 37349, + "name": "minimumBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36990, + "src": "15228:10:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37345, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15175:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 37346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15179:6:79", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "15175:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 37350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15175:64:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "15156:83:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 37352, + "nodeType": "ExpressionStatement", + "src": "15156:83:79" + } + ] + }, + { + "assignments": [ + 37355 + ], + "declarations": [ + { + "constant": false, + "id": 37355, + "mutability": "mutable", + "name": "targetDelta", + "nameLocation": "15268:11:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "15260:19:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15260:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37363, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 37360, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15310:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15302:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15302:7:79", + "typeDescriptions": {} + } + }, + "id": 37361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15302:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37356, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36981, + "src": "15282:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15292:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "15282:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15282:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15260:56:79" + }, + { + "expression": { + "arguments": [ + { + "id": 37367, + "name": "poolId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36994, + "src": "15341:6:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 37370, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15357:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15349:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15349:7:79", + "typeDescriptions": {} + } + }, + "id": 37371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15349:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 37374, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15372:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15364:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15364:7:79", + "typeDescriptions": {} + } + }, + "id": 37375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15364:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37376, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37020, + "src": "15379:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_struct$_JoinPoolRequest_$34672_memory_ptr", + "typeString": "struct IVault.JoinPoolRequest memory" + } + ], + "expression": { + "id": 37364, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "15326:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15332:8:79", + "memberName": "joinPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 34660, + "src": "15326:14:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$34672_memory_ptr_$returns$__$", + "typeString": "function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external" + } + }, + "id": 37377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15326:61:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37378, + "nodeType": "ExpressionStatement", + "src": "15326:61:79" + }, + { + "expression": { + "id": 37389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 37379, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37355, + "src": "15397:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 37384, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15439:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15431:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15431:7:79", + "typeDescriptions": {} + } + }, + "id": 37385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15431:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37380, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36981, + "src": "15411:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15421:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "15411:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15411:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 37387, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37355, + "src": "15448:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15411:48:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15397:62:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37390, + "nodeType": "ExpressionStatement", + "src": "15397:62:79" + }, + { + "assignments": [ + 37395 + ], + "declarations": [ + { + "constant": false, + "id": 37395, + "mutability": "mutable", + "name": "inputAmounts", + "nameLocation": "15580:12:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "15563:29:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 37393, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15563:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37394, + "nodeType": "ArrayTypeName", + "src": "15563:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 37402, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 37399, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15609:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15625:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15609:22:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "15595:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 37396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15599:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37397, + "nodeType": "ArrayTypeName", + "src": "15599:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 37401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15595:37:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15563:69:79" + }, + { + "assignments": [ + 37407 + ], + "declarations": [ + { + "constant": false, + "id": 37407, + "mutability": "mutable", + "name": "inputTokens", + "nameLocation": "15657:11:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "15642:26:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 37405, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37404, + "name": "ERC20", + "nameLocations": [ + "15642:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "15642:5:79" + }, + "referencedDeclaration": 33219, + "src": "15642:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37406, + "nodeType": "ArrayTypeName", + "src": "15642:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "id": 37415, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 37412, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15683:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15699:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15683:22:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "15671:11:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (contract ERC20[] memory)" + }, + "typeName": { + "baseType": { + "id": 37409, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37408, + "name": "ERC20", + "nameLocations": [ + "15675:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "15675:5:79" + }, + "referencedDeclaration": 33219, + "src": "15675:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37410, + "nodeType": "ArrayTypeName", + "src": "15675:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + } + }, + "id": 37414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15671:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15642:64:79" + }, + { + "body": { + "id": 37493, + "nodeType": "Block", + "src": "15846:529:79", + "statements": [ + { + "assignments": [ + 37427 + ], + "declarations": [ + { + "constant": false, + "id": 37427, + "mutability": "mutable", + "name": "assetIn", + "nameLocation": "15868:7:79", + "nodeType": "VariableDeclaration", + "scope": 37493, + "src": "15860:15:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15860:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 37435, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37430, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15886:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37432, + "indexExpression": { + "id": 37431, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "15902:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15886:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37433, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15905:7:79", + "memberName": "assetIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34744, + "src": "15886:26:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15878:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37428, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15878:7:79", + "typeDescriptions": {} + } + }, + "id": 37434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15878:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15860:53:79" + }, + { + "expression": { + "id": 37445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37436, + "name": "inputTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37407, + "src": "15927:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37438, + "indexExpression": { + "id": 37437, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "15939:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15927:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 37442, + "name": "assetIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37427, + "src": "15958:7:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15950:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15950:7:79", + "typeDescriptions": {} + } + }, + "id": 37443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15950:16:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37439, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "15944:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15944:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "src": "15927:40:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37446, + "nodeType": "ExpressionStatement", + "src": "15927:40:79" + }, + { + "expression": { + "id": 37454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37447, + "name": "inputAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37395, + "src": "15981:12:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37449, + "indexExpression": { + "id": 37448, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "15994:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15981:15:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 37450, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15999:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37452, + "indexExpression": { + "id": 37451, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "16015:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15999:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37453, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16018:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "15999:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15981:43:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37455, + "nodeType": "ExpressionStatement", + "src": "15981:43:79" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 37457, + "name": "inputTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37407, + "src": "16106:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37459, + "indexExpression": { + "id": 37458, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "16118:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16106:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 37462, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "16130:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16122:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16122:7:79", + "typeDescriptions": {} + } + }, + "id": 37463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16122:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37456, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38467, + "src": "16082:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 37464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16082:55:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37465, + "nodeType": "ExpressionStatement", + "src": "16082:55:79" + }, + { + "assignments": [ + 37467 + ], + "declarations": [ + { + "constant": false, + "id": 37467, + "mutability": "mutable", + "name": "assetOut", + "nameLocation": "16219:8:79", + "nodeType": "VariableDeclaration", + "scope": 37493, + "src": "16211:16:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16211:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 37475, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37470, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "16238:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37472, + "indexExpression": { + "id": 37471, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "16254:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16238:18:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37473, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16257:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "16238:27:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16230:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16230:7:79", + "typeDescriptions": {} + } + }, + "id": 37474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16230:36:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16211:55:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37476, + "name": "assetOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37467, + "src": "16284:8:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 37479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16304:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 37478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16296:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16296:7:79", + "typeDescriptions": {} + } + }, + "id": 37480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16296:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16284:22:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37492, + "nodeType": "IfStatement", + "src": "16280:84:79", + "trueBody": { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37484, + "name": "assetOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37467, + "src": "16338:8:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37483, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "16332:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16332:15:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 37488, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "16357:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16349:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16349:7:79", + "typeDescriptions": {} + } + }, + "id": 37489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16349:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37482, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38467, + "src": "16308:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 37490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16308:56:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37491, + "nodeType": "ExpressionStatement", + "src": "16308:56:79" + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37419, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "15813:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37420, + "name": "swapsBeforeJoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36985, + "src": "15817:15:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15833:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15817:22:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15813:26:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37494, + "initializationExpression": { + "assignments": [ + 37417 + ], + "declarations": [ + { + "constant": false, + "id": 37417, + "mutability": "mutable", + "name": "i", + "nameLocation": "15810:1:79", + "nodeType": "VariableDeclaration", + "scope": 37494, + "src": "15802:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15802:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37418, + "nodeType": "VariableDeclarationStatement", + "src": "15802:9:79" + }, + "loopExpression": { + "expression": { + "id": 37424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "15841:3:79", + "subExpression": { + "id": 37423, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37417, + "src": "15843:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37425, + "nodeType": "ExpressionStatement", + "src": "15841:3:79" + }, + "nodeType": "ForStatement", + "src": "15797:578:79" + }, + { + "assignments": [ + 37496 + ], + "declarations": [ + { + "constant": false, + "id": 37496, + "mutability": "mutable", + "name": "valueInConvertedToTarget", + "nameLocation": "16471:24:79", + "nodeType": "VariableDeclaration", + "scope": 37515, + "src": "16463:32:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16463:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37503, + "initialValue": { + "arguments": [ + { + "id": 37499, + "name": "inputTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37407, + "src": "16520:11:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + { + "id": 37500, + "name": "inputAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37395, + "src": "16533:12:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 37501, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36981, + "src": "16547:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "expression": { + "id": 37497, + "name": "priceRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37006, + "src": "16498:11:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "id": 37498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16510:9:79", + "memberName": "getValues", + "nodeType": "MemberAccess", + "referencedDeclaration": 40842, + "src": "16498:21:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_contract$_ERC20_$33219_$returns$_t_uint256_$", + "typeString": "function (contract ERC20[] memory,uint256[] memory,contract ERC20) view external returns (uint256)" + } + }, + "id": 37502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16498:59:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16463:94:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37504, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37355, + "src": "16571:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [ + { + "id": 37507, + "name": "balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36697, + "src": "16621:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "hexValue": "316534", + "id": 37508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16639:3:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "1e4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + ], + "expression": { + "id": 37505, + "name": "valueInConvertedToTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37496, + "src": "16585:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16610:10:79", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 42514, + "src": "16585:35:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 37509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16585:58:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16571:72:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37514, + "nodeType": "IfStatement", + "src": "16567:129:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37511, + "name": "BalancerPoolAdaptor___Slippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36661, + "src": "16664:30:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16664:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37513, + "nodeType": "RevertStatement", + "src": "16657:39:79" + } + } + ] + }, + "documentation": { + "id": 36978, + "nodeType": "StructuredDocumentation", + "src": "10458:394:79", + "text": " @notice Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins.\n @dev `swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`.\n IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.\n @dev Max Available logic IS supported." + }, + "functionSelector": "5c14acdb", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "joinPool", + "nameLocation": "10866:8:79", + "parameters": { + "id": 36991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36981, + "mutability": "mutable", + "name": "targetBpt", + "nameLocation": "10890:9:79", + "nodeType": "VariableDeclaration", + "scope": 37516, + "src": "10884:15:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 36980, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36979, + "name": "ERC20", + "nameLocations": [ + "10884:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "10884:5:79" + }, + "referencedDeclaration": 33219, + "src": "10884:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36985, + "mutability": "mutable", + "name": "swapsBeforeJoin", + "nameLocation": "10936:15:79", + "nodeType": "VariableDeclaration", + "scope": 37516, + "src": "10909:42:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap[]" + }, + "typeName": { + "baseType": { + "id": 36983, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36982, + "name": "IVault.SingleSwap", + "nameLocations": [ + "10909:6:79", + "10916:10:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34752, + "src": "10909:17:79" + }, + "referencedDeclaration": 34752, + "src": "10909:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_storage_ptr", + "typeString": "struct IVault.SingleSwap" + } + }, + "id": 36984, + "nodeType": "ArrayTypeName", + "src": "10909:19:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_storage_$dyn_storage_ptr", + "typeString": "struct IVault.SingleSwap[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36988, + "mutability": "mutable", + "name": "swapData", + "nameLocation": "10977:8:79", + "nodeType": "VariableDeclaration", + "scope": 37516, + "src": "10961:24:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData" + }, + "typeName": { + "id": 36987, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 36986, + "name": "SwapData", + "nameLocations": [ + "10961:8:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 36686, + "src": "10961:8:79" + }, + "referencedDeclaration": 36686, + "src": "10961:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_storage_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 36990, + "mutability": "mutable", + "name": "minimumBpt", + "nameLocation": "11003:10:79", + "nodeType": "VariableDeclaration", + "scope": 37516, + "src": "10995:18:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10995:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10874:145:79" + }, + "returnParameters": { + "id": 36992, + "nodeType": "ParameterList", + "parameters": [], + "src": "11029:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 37884, + "nodeType": "FunctionDefinition", + "src": "17221:4029:79", + "nodes": [], + "body": { + "id": 37883, + "nodeType": "Block", + "src": "17411:3839:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 37534 + ], + "declarations": [ + { + "constant": false, + "id": 37534, + "mutability": "mutable", + "name": "poolId", + "nameLocation": "17429:6:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "17421:14:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 37533, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17421:7:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 37543, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37538, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37520, + "src": "17456:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17448:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37536, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17448:7:79", + "typeDescriptions": {} + } + }, + "id": 37539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17448:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37535, + "name": "IBasePool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35186, + "src": "17438:9:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBasePool_$35186_$", + "typeString": "type(contract IBasePool)" + } + }, + "id": 37540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17438:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasePool_$35186", + "typeString": "contract IBasePool" + } + }, + "id": 37541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17468:9:79", + "memberName": "getPoolId", + "nodeType": "MemberAccess", + "referencedDeclaration": 35126, + "src": "17438:39:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 37542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17438:41:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17421:58:79" + }, + { + "assignments": [ + 37548, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 37548, + "mutability": "mutable", + "name": "poolTokens", + "nameLocation": "17550:10:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "17534:26:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 37546, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37545, + "name": "IERC20", + "nameLocations": [ + "17534:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35010, + "src": "17534:6:79" + }, + "referencedDeclaration": 35010, + "src": "17534:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + }, + "id": 37547, + "nodeType": "ArrayTypeName", + "src": "17534:8:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 37553, + "initialValue": { + "arguments": [ + { + "id": 37551, + "name": "poolId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37534, + "src": "17588:6:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 37549, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "17568:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17574:13:79", + "memberName": "getPoolTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 34647, + "src": "17568:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "id": 37552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17568:27:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "tuple(contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17533:62:79" + }, + { + "assignments": [ + 37558 + ], + "declarations": [ + { + "constant": false, + "id": 37558, + "mutability": "mutable", + "name": "expectedTokensOut", + "nameLocation": "17620:17:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "17605:32:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 37556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37555, + "name": "ERC20", + "nameLocations": [ + "17605:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "17605:5:79" + }, + "referencedDeclaration": 33219, + "src": "17605:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37557, + "nodeType": "ArrayTypeName", + "src": "17605:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "id": 37566, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 37562, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37520, + "src": "17681:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17673:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17673:7:79", + "typeDescriptions": {} + } + }, + "id": 37563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17673:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37564, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37548, + "src": "17693:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 37559, + "name": "_getPoolTokensWithNoPremintedBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38195, + "src": "17640:32:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)" + } + }, + "id": 37565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17640:64:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17605:99:79" + }, + { + "condition": { + "expression": { + "id": 37567, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37530, + "src": "17765:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPoolRequest_$34697_memory_ptr", + "typeString": "struct IVault.ExitPoolRequest memory" + } + }, + "id": 37568, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17773:17:79", + "memberName": "toInternalBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 34696, + "src": "17765:25:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37572, + "nodeType": "IfStatement", + "src": "17761:90:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37569, + "name": "BalancerPoolAdaptor___InternalBalancesNotSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36676, + "src": "17799:50:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17799:52:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37571, + "nodeType": "RevertStatement", + "src": "17792:59:79" + } + }, + { + "assignments": [ + 37577 + ], + "declarations": [ + { + "constant": false, + "id": 37577, + "mutability": "mutable", + "name": "tokensOutDelta", + "nameLocation": "17980:14:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "17963:31:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 37575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17963:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37576, + "nodeType": "ArrayTypeName", + "src": "17963:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 37584, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 37581, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18011:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18029:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18011:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "17997:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 37578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18001:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37579, + "nodeType": "ArrayTypeName", + "src": "18001:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 37583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17997:39:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17963:73:79" + }, + { + "body": { + "expression": { + "id": 37607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37595, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "18109:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37597, + "indexExpression": { + "id": 37596, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37586, + "src": "18124:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18109:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 37604, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18168:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18160:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18160:7:79", + "typeDescriptions": {} + } + }, + "id": 37605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18160:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "id": 37598, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18129:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37600, + "indexExpression": { + "id": 37599, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37586, + "src": "18147:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18129:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18150:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "18129:30:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18129:45:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18109:65:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37608, + "nodeType": "ExpressionStatement", + "src": "18109:65:79" + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37588, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37586, + "src": "18062:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37589, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18066:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18084:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18066:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18062:28:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37609, + "initializationExpression": { + "assignments": [ + 37586 + ], + "declarations": [ + { + "constant": false, + "id": 37586, + "mutability": "mutable", + "name": "i", + "nameLocation": "18059:1:79", + "nodeType": "VariableDeclaration", + "scope": 37609, + "src": "18051:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18051:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37587, + "nodeType": "VariableDeclarationStatement", + "src": "18051:9:79" + }, + "loopExpression": { + "expression": { + "id": 37593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "18092:3:79", + "subExpression": { + "id": 37592, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37586, + "src": "18094:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37594, + "nodeType": "ExpressionStatement", + "src": "18092:3:79" + }, + "nodeType": "ForStatement", + "src": "18046:128:79" + }, + { + "assignments": [ + 37611 + ], + "declarations": [ + { + "constant": false, + "id": 37611, + "mutability": "mutable", + "name": "targetDelta", + "nameLocation": "18193:11:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "18185:19:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18185:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37619, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 37616, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18235:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18227:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18227:7:79", + "typeDescriptions": {} + } + }, + "id": 37617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18227:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37612, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37520, + "src": "18207:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18217:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "18207:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18207:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18185:56:79" + }, + { + "expression": { + "arguments": [ + { + "id": 37623, + "name": "poolId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37534, + "src": "18266:6:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 37626, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18282:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18274:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18274:7:79", + "typeDescriptions": {} + } + }, + "id": 37627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18274:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 37632, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18305:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18297:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18297:7:79", + "typeDescriptions": {} + } + }, + "id": 37633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18297:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18289:8:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 37628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18289:8:79", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 37634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18289:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 37635, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37530, + "src": "18313:7:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPoolRequest_$34697_memory_ptr", + "typeString": "struct IVault.ExitPoolRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_struct$_ExitPoolRequest_$34697_memory_ptr", + "typeString": "struct IVault.ExitPoolRequest memory" + } + ], + "expression": { + "id": 37620, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "18251:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18257:8:79", + "memberName": "exitPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 34685, + "src": "18251:14:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$34697_memory_ptr_$returns$__$", + "typeString": "function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external" + } + }, + "id": 37636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18251:70:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37637, + "nodeType": "ExpressionStatement", + "src": "18251:70:79" + }, + { + "expression": { + "id": 37648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 37638, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37611, + "src": "18331:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37639, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37611, + "src": "18345:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 37644, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18387:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18379:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18379:7:79", + "typeDescriptions": {} + } + }, + "id": 37645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18379:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37640, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37520, + "src": "18359:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18369:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "18359:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18359:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18345:48:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18331:62:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37649, + "nodeType": "ExpressionStatement", + "src": "18331:62:79" + }, + { + "body": { + "expression": { + "id": 37676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37660, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "18466:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37662, + "indexExpression": { + "id": 37661, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37651, + "src": "18481:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18466:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 37669, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18525:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18517:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18517:7:79", + "typeDescriptions": {} + } + }, + "id": 37670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18517:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "id": 37663, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18486:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37665, + "indexExpression": { + "id": 37664, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37651, + "src": "18504:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18486:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18507:9:79", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 32862, + "src": "18486:30:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 37671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18486:45:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "baseExpression": { + "id": 37672, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "18534:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37674, + "indexExpression": { + "id": 37673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37651, + "src": "18549:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18534:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18486:65:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18466:85:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37677, + "nodeType": "ExpressionStatement", + "src": "18466:85:79" + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37653, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37651, + "src": "18419:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37654, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18423:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18441:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18423:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18419:28:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37678, + "initializationExpression": { + "assignments": [ + 37651 + ], + "declarations": [ + { + "constant": false, + "id": 37651, + "mutability": "mutable", + "name": "i", + "nameLocation": "18416:1:79", + "nodeType": "VariableDeclaration", + "scope": 37678, + "src": "18408:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18408:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37652, + "nodeType": "VariableDeclarationStatement", + "src": "18408:9:79" + }, + "loopExpression": { + "expression": { + "id": 37658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "18449:3:79", + "subExpression": { + "id": 37657, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37651, + "src": "18451:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37659, + "nodeType": "ExpressionStatement", + "src": "18449:3:79" + }, + "nodeType": "ForStatement", + "src": "18403:148:79" + }, + { + "assignments": [ + 37681 + ], + "declarations": [ + { + "constant": false, + "id": 37681, + "mutability": "mutable", + "name": "priceRouter", + "nameLocation": "18574:11:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "18562:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + }, + "typeName": { + "id": 37680, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37679, + "name": "PriceRouter", + "nameLocations": [ + "18562:11:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41904, + "src": "18562:11:79" + }, + "referencedDeclaration": 41904, + "src": "18562:11:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "visibility": "internal" + } + ], + "id": 37690, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37685, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "18603:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18595:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18595:7:79", + "typeDescriptions": {} + } + }, + "id": 37686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18595:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37682, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "18588:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$32635_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 37687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18588:21:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$32635", + "typeString": "contract Cellar" + } + }, + "id": 37688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18610:11:79", + "memberName": "priceRouter", + "nodeType": "MemberAccess", + "referencedDeclaration": 29326, + "src": "18588:33:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_PriceRouter_$41904_$", + "typeString": "function () view external returns (contract PriceRouter)" + } + }, + "id": 37689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18588:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18562:61:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 37691, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "18637:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18652:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18637:21:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 37693, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18662:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18680:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18662:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18637:49:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37699, + "nodeType": "IfStatement", + "src": "18633:100:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37696, + "name": "BalancerPoolAdaptor___LengthMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36667, + "src": "18695:36:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18695:38:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37698, + "nodeType": "RevertStatement", + "src": "18688:45:79" + } + }, + { + "body": { + "id": 37861, + "nodeType": "Block", + "src": "18794:2118:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 37710, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "18877:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37712, + "indexExpression": { + "id": 37711, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "18892:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18877:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 37713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18898:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18877:22:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37716, + "nodeType": "IfStatement", + "src": "18873:36:79", + "trueBody": { + "id": 37715, + "nodeType": "Continue", + "src": "18901:8:79" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37719, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "19000:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37721, + "indexExpression": { + "id": 37720, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19015:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19000:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37722, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19018:7:79", + "memberName": "assetIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 34744, + "src": "19000:25:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18992:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18992:7:79", + "typeDescriptions": {} + } + }, + "id": 37723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18992:34:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "baseExpression": { + "id": 37726, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "19038:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37728, + "indexExpression": { + "id": 37727, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19056:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19038:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19030:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19030:7:79", + "typeDescriptions": {} + } + }, + "id": 37729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19030:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18992:67:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37734, + "nodeType": "IfStatement", + "src": "18988:153:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37731, + "name": "BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36673, + "src": "19084:55:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19084:57:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37733, + "nodeType": "RevertStatement", + "src": "19077:64:79" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 37746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37737, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "19168:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37739, + "indexExpression": { + "id": 37738, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19183:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19168:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37740, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19186:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "19168:26:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19160:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19160:7:79", + "typeDescriptions": {} + } + }, + "id": 37741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19160:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 37744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19207:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 37743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19199:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19199:7:79", + "typeDescriptions": {} + } + }, + "id": 37745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19199:10:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "19160:49:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 37854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "20611:46:79", + "subExpression": { + "arguments": [ + { + "baseExpression": { + "id": 37850, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "20636:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37852, + "indexExpression": { + "id": 37851, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20654:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20636:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "expression": { + "id": 37848, + "name": "priceRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37681, + "src": "20612:11:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "id": 37849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20624:11:79", + "memberName": "isSupported", + "nodeType": "MemberAccess", + "referencedDeclaration": 40619, + "src": "20612:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_contract$_ERC20_$33219_$returns$_t_bool_$", + "typeString": "function (contract ERC20) view external returns (bool)" + } + }, + "id": 37853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20612:45:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37859, + "nodeType": "IfStatement", + "src": "20607:295:79", + "trueBody": { + "id": 37858, + "nodeType": "Block", + "src": "20659:243:79", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37855, + "name": "BalancerPoolAdaptor___UnsupportedTokenNotSwapped", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36679, + "src": "20837:48:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20837:50:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37857, + "nodeType": "RevertStatement", + "src": "20830:57:79" + } + ] + } + }, + "id": 37860, + "nodeType": "IfStatement", + "src": "19156:1746:79", + "trueBody": { + "id": 37847, + "nodeType": "Block", + "src": "19211:1390:79", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37753, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "19270:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19262:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37751, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19262:7:79", + "typeDescriptions": {} + } + }, + "id": 37754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19262:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 37755, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "19278:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37757, + "indexExpression": { + "id": 37756, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19293:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19278:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 37747, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "19229:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37749, + "indexExpression": { + "id": 37748, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19247:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19229:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19250:11:79", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 33969, + "src": "19229:32:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 37758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19229:67:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37759, + "nodeType": "ExpressionStatement", + "src": "19229:67:79" + }, + { + "assignments": [ + 37764 + ], + "declarations": [ + { + "constant": false, + "id": 37764, + "mutability": "mutable", + "name": "fundManagement", + "nameLocation": "19426:14:79", + "nodeType": "VariableDeclaration", + "scope": 37847, + "src": "19397:43:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement" + }, + "typeName": { + "id": 37763, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37762, + "name": "IVault.FundManagement", + "nameLocations": [ + "19397:6:79", + "19404:14:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34813, + "src": "19397:21:79" + }, + "referencedDeclaration": 34813, + "src": "19397:21:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_storage_ptr", + "typeString": "struct IVault.FundManagement" + } + }, + "visibility": "internal" + } + ], + "id": 37781, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 37769, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "19503:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19495:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19495:7:79", + "typeDescriptions": {} + } + }, + "id": 37770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19495:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "66616c7365", + "id": 37771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19551:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 37776, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "19605:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19597:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37774, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19597:7:79", + "typeDescriptions": {} + } + }, + "id": 37777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19597:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19589:8:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 37772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19589:8:79", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 37778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19589:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "hexValue": "66616c7365", + "id": 37779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19652:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 37765, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "19443:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IVault_$34921_$", + "typeString": "type(contract IVault)" + } + }, + "id": 37766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19450:14:79", + "memberName": "FundManagement", + "nodeType": "MemberAccess", + "referencedDeclaration": 34813, + "src": "19443:21:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_FundManagement_$34813_storage_ptr_$", + "typeString": "type(struct IVault.FundManagement storage pointer)" + } + }, + "id": 37780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "19487:6:79", + "19530:19:79", + "19578:9:79", + "19633:17:79" + ], + "names": [ + "sender", + "fromInternalBalance", + "recipient", + "toInternalBalance" + ], + "nodeType": "FunctionCall", + "src": "19443:233:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19397:279:79" + }, + { + "expression": { + "id": 37789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 37782, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "19766:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37784, + "indexExpression": { + "id": 37783, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19781:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19766:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37785, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "19784:6:79", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 34749, + "src": "19766:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 37786, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "19793:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37788, + "indexExpression": { + "id": 37787, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19808:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19793:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19766:44:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37790, + "nodeType": "ExpressionStatement", + "src": "19766:44:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + }, + "id": 37798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 37791, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "19885:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37793, + "indexExpression": { + "id": 37792, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "19900:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19885:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19903:4:79", + "memberName": "kind", + "nodeType": "MemberAccess", + "referencedDeclaration": 34741, + "src": "19885:22:79", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 37795, + "name": "IVault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34921, + "src": "19911:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IVault_$34921_$", + "typeString": "type(contract IVault)" + } + }, + "id": 37796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19918:8:79", + "memberName": "SwapKind", + "nodeType": "MemberAccess", + "referencedDeclaration": 34720, + "src": "19911:15:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_SwapKind_$34720_$", + "typeString": "type(enum IVault.SwapKind)" + } + }, + "id": 37797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "19927:8:79", + "memberName": "GIVEN_IN", + "nodeType": "MemberAccess", + "referencedDeclaration": 34718, + "src": "19911:24:79", + "typeDescriptions": { + "typeIdentifier": "t_enum$_SwapKind_$34720", + "typeString": "enum IVault.SwapKind" + } + }, + "src": "19885:50:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37802, + "nodeType": "IfStatement", + "src": "19881:100:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37799, + "name": "BalancerPoolAdaptor___WrongSwapKind", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36670, + "src": "19944:35:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19944:37:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37801, + "nodeType": "RevertStatement", + "src": "19937:44:79" + } + }, + { + "expression": { + "id": 37821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37803, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "20083:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37805, + "indexExpression": { + "id": 37804, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20098:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20083:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 37808, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "20135:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37810, + "indexExpression": { + "id": 37809, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20150:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20135:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + { + "id": 37811, + "name": "fundManagement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37764, + "src": "20174:14:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + } + }, + { + "baseExpression": { + "expression": { + "id": 37812, + "name": "swapData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37527, + "src": "20210:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData memory" + } + }, + "id": 37813, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20219:18:79", + "memberName": "minAmountsForSwaps", + "nodeType": "MemberAccess", + "referencedDeclaration": 36682, + "src": "20210:27:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37815, + "indexExpression": { + "id": 37814, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20238:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20210:30:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 37816, + "name": "swapData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37527, + "src": "20262:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData memory" + } + }, + "id": 37817, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20271:13:79", + "memberName": "swapDeadlines", + "nodeType": "MemberAccess", + "referencedDeclaration": 36685, + "src": "20262:22:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 37819, + "indexExpression": { + "id": 37818, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20285:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20262:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + }, + { + "typeIdentifier": "t_struct$_FundManagement_$34813_memory_ptr", + "typeString": "struct IVault.FundManagement memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37806, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "20103:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 37807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20109:4:79", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 34736, + "src": "20103:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_SingleSwap_$34752_memory_ptr_$_t_struct$_FundManagement_$34813_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)" + } + }, + "id": 37820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20103:202:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20083:222:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37822, + "nodeType": "ExpressionStatement", + "src": "20083:222:79" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 37824, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "20388:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37826, + "indexExpression": { + "id": 37825, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20406:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20388:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 37829, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "20418:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + ], + "id": 37828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20410:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20410:7:79", + "typeDescriptions": {} + } + }, + "id": 37830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20410:14:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37823, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38467, + "src": "20364:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 37831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20364:61:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37832, + "nodeType": "ExpressionStatement", + "src": "20364:61:79" + }, + { + "expression": { + "id": 37845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 37833, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "20521:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37835, + "indexExpression": { + "id": 37834, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20539:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20521:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 37839, + "name": "swapsAfterExit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37524, + "src": "20558:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap memory[] memory" + } + }, + "id": 37841, + "indexExpression": { + "id": 37840, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "20573:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20558:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_memory_ptr", + "typeString": "struct IVault.SingleSwap memory" + } + }, + "id": 37842, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20576:8:79", + "memberName": "assetOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 34747, + "src": "20558:26:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAsset_$33988", + "typeString": "contract IAsset" + } + ], + "id": 37838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20550:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20550:7:79", + "typeDescriptions": {} + } + }, + "id": 37843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20550:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37836, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "20544:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20544:42:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "src": "20521:65:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37846, + "nodeType": "ExpressionStatement", + "src": "20521:65:79" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37703, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "18759:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 37704, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "18763:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 37705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18781:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18763:24:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18759:28:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37862, + "initializationExpression": { + "assignments": [ + 37701 + ], + "declarations": [ + { + "constant": false, + "id": 37701, + "mutability": "mutable", + "name": "i", + "nameLocation": "18756:1:79", + "nodeType": "VariableDeclaration", + "scope": 37862, + "src": "18748:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18748:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37702, + "nodeType": "VariableDeclarationStatement", + "src": "18748:9:79" + }, + "loopExpression": { + "expression": { + "id": 37708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "18789:3:79", + "subExpression": { + "id": 37707, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37701, + "src": "18791:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37709, + "nodeType": "ExpressionStatement", + "src": "18789:3:79" + }, + "nodeType": "ForStatement", + "src": "18743:2169:79" + }, + { + "assignments": [ + 37864 + ], + "declarations": [ + { + "constant": false, + "id": 37864, + "mutability": "mutable", + "name": "valueOutConvertedToTarget", + "nameLocation": "21008:25:79", + "nodeType": "VariableDeclaration", + "scope": 37883, + "src": "21000:33:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37863, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21000:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37871, + "initialValue": { + "arguments": [ + { + "id": 37867, + "name": "expectedTokensOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37558, + "src": "21058:17:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + { + "id": 37868, + "name": "tokensOutDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37577, + "src": "21077:14:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 37869, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37520, + "src": "21093:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "expression": { + "id": 37865, + "name": "priceRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37681, + "src": "21036:11:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PriceRouter_$41904", + "typeString": "contract PriceRouter" + } + }, + "id": 37866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21048:9:79", + "memberName": "getValues", + "nodeType": "MemberAccess", + "referencedDeclaration": 40842, + "src": "21036:21:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_contract$_ERC20_$33219_$returns$_t_uint256_$", + "typeString": "function (contract ERC20[] memory,uint256[] memory,contract ERC20) view external returns (uint256)" + } + }, + "id": 37870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21036:67:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21000:103:79" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 37872, + "name": "valueOutConvertedToTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37864, + "src": "21117:25:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [ + { + "id": 37875, + "name": "balancerSlippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36697, + "src": "21168:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "hexValue": "316534", + "id": 37876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21186:3:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "1e4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + ], + "expression": { + "id": 37873, + "name": "targetDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37611, + "src": "21145:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21157:10:79", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 42514, + "src": "21145:22:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 37877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21145:45:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21117:73:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37882, + "nodeType": "IfStatement", + "src": "21113:130:79", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 37879, + "name": "BalancerPoolAdaptor___Slippage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36661, + "src": "21211:30:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 37880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21211:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37881, + "nodeType": "RevertStatement", + "src": "21204:39:79" + } + } + ] + }, + "documentation": { + "id": 37517, + "nodeType": "StructuredDocumentation", + "src": "16709:507:79", + "text": " @notice Allows strategists to exit Balancer pools using any exit.\n @dev The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.\n @dev `swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`.\n IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to\n swap BB A DAI.\n @dev Max Available logic IS NOT supported." + }, + "functionSelector": "97194b13", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exitPool", + "nameLocation": "17230:8:79", + "parameters": { + "id": 37531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 37520, + "mutability": "mutable", + "name": "targetBpt", + "nameLocation": "17254:9:79", + "nodeType": "VariableDeclaration", + "scope": 37884, + "src": "17248:15:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 37519, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37518, + "name": "ERC20", + "nameLocations": [ + "17248:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "17248:5:79" + }, + "referencedDeclaration": 33219, + "src": "17248:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37524, + "mutability": "mutable", + "name": "swapsAfterExit", + "nameLocation": "17300:14:79", + "nodeType": "VariableDeclaration", + "scope": 37884, + "src": "17273:41:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr", + "typeString": "struct IVault.SingleSwap[]" + }, + "typeName": { + "baseType": { + "id": 37522, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37521, + "name": "IVault.SingleSwap", + "nameLocations": [ + "17273:6:79", + "17280:10:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34752, + "src": "17273:17:79" + }, + "referencedDeclaration": 34752, + "src": "17273:17:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SingleSwap_$34752_storage_ptr", + "typeString": "struct IVault.SingleSwap" + } + }, + "id": 37523, + "nodeType": "ArrayTypeName", + "src": "17273:19:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SingleSwap_$34752_storage_$dyn_storage_ptr", + "typeString": "struct IVault.SingleSwap[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37527, + "mutability": "mutable", + "name": "swapData", + "nameLocation": "17340:8:79", + "nodeType": "VariableDeclaration", + "scope": 37884, + "src": "17324:24:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_memory_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData" + }, + "typeName": { + "id": 37526, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37525, + "name": "SwapData", + "nameLocations": [ + "17324:8:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 36686, + "src": "17324:8:79" + }, + "referencedDeclaration": 36686, + "src": "17324:8:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapData_$36686_storage_ptr", + "typeString": "struct BalancerPoolAdaptor.SwapData" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37530, + "mutability": "mutable", + "name": "request", + "nameLocation": "17388:7:79", + "nodeType": "VariableDeclaration", + "scope": 37884, + "src": "17358:37:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPoolRequest_$34697_memory_ptr", + "typeString": "struct IVault.ExitPoolRequest" + }, + "typeName": { + "id": 37529, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37528, + "name": "IVault.ExitPoolRequest", + "nameLocations": [ + "17358:6:79", + "17365:15:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34697, + "src": "17358:22:79" + }, + "referencedDeclaration": 34697, + "src": "17358:22:79", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPoolRequest_$34697_storage_ptr", + "typeString": "struct IVault.ExitPoolRequest" + } + }, + "visibility": "internal" + } + ], + "src": "17238:163:79" + }, + "returnParameters": { + "id": 37532, + "nodeType": "ParameterList", + "parameters": [], + "src": "17411:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 37946, + "nodeType": "FunctionDefinition", + "src": "21510:480:79", + "nodes": [], + "body": { + "id": 37945, + "nodeType": "Block", + "src": "21593:397:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37898, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37888, + "src": "21632:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21624:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37896, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21624:7:79", + "typeDescriptions": {} + } + }, + "id": 37899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21624:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37900, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37890, + "src": "21639:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37895, + "name": "_validateBptAndGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38059, + "src": "21603:20:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) view" + } + }, + "id": 37901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21603:52:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37902, + "nodeType": "ExpressionStatement", + "src": "21603:52:79" + }, + { + "assignments": [ + 37904 + ], + "declarations": [ + { + "constant": false, + "id": 37904, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "21673:8:79", + "nodeType": "VariableDeclaration", + "scope": 37945, + "src": "21665:16:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21665:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37909, + "initialValue": { + "arguments": [ + { + "id": 37906, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37888, + "src": "21698:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "id": 37907, + "name": "_amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37892, + "src": "21704:9:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37905, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38439, + "src": "21684:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 37908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21684:30:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21665:49:79" + }, + { + "assignments": [ + 37912 + ], + "declarations": [ + { + "constant": false, + "id": 37912, + "mutability": "mutable", + "name": "liquidityGauge", + "nameLocation": "21748:14:79", + "nodeType": "VariableDeclaration", + "scope": 37945, + "src": "21724:38:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + }, + "typeName": { + "id": 37911, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37910, + "name": "ILiquidityGaugev3Custom", + "nameLocations": [ + "21724:23:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34218, + "src": "21724:23:79" + }, + "referencedDeclaration": 34218, + "src": "21724:23:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "visibility": "internal" + } + ], + "id": 37916, + "initialValue": { + "arguments": [ + { + "id": 37914, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37890, + "src": "21789:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37913, + "name": "ILiquidityGaugev3Custom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34218, + "src": "21765:23:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILiquidityGaugev3Custom_$34218_$", + "typeString": "type(contract ILiquidityGaugev3Custom)" + } + }, + "id": 37915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21765:40:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21724:81:79" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37922, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37912, + "src": "21836:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + ], + "id": 37921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21828:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21828:7:79", + "typeDescriptions": {} + } + }, + "id": 37923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21828:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37924, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37904, + "src": "21853:8:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37917, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37888, + "src": "21815:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 37919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21820:7:79", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 32936, + "src": "21815:12:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 37925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21815:47:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 37926, + "nodeType": "ExpressionStatement", + "src": "21815:47:79" + }, + { + "expression": { + "arguments": [ + { + "id": 37930, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37904, + "src": "21895:8:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 37933, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "21913:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 37932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21905:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21905:7:79", + "typeDescriptions": {} + } + }, + "id": 37934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21905:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37927, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37912, + "src": "21872:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "id": 37929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21887:7:79", + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 34212, + "src": "21872:22:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) external" + } + }, + "id": 37935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21872:47:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37936, + "nodeType": "ExpressionStatement", + "src": "21872:47:79" + }, + { + "expression": { + "arguments": [ + { + "id": 37938, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37888, + "src": "21953:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 37941, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37912, + "src": "21967:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + ], + "id": 37940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21959:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21959:7:79", + "typeDescriptions": {} + } + }, + "id": 37942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21959:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37937, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38467, + "src": "21929:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 37943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21929:54:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37944, + "nodeType": "ExpressionStatement", + "src": "21929:54:79" + } + ] + }, + "documentation": { + "id": 37885, + "nodeType": "StructuredDocumentation", + "src": "21256:249:79", + "text": " @notice stake (deposit) BPTs into respective pool gauge\n @param _bpt address of BPTs to stake\n @param _amountIn number of BPTs to stake\n @dev Interface custom as Balancer/Curve do not provide for liquidityGauges." + }, + "functionSelector": "8f210a6a", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "stakeBPT", + "nameLocation": "21519:8:79", + "parameters": { + "id": 37893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 37888, + "mutability": "mutable", + "name": "_bpt", + "nameLocation": "21534:4:79", + "nodeType": "VariableDeclaration", + "scope": 37946, + "src": "21528:10:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 37887, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37886, + "name": "ERC20", + "nameLocations": [ + "21528:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "21528:5:79" + }, + "referencedDeclaration": 33219, + "src": "21528:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37890, + "mutability": "mutable", + "name": "_liquidityGauge", + "nameLocation": "21548:15:79", + "nodeType": "VariableDeclaration", + "scope": 37946, + "src": "21540:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21540:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37892, + "mutability": "mutable", + "name": "_amountIn", + "nameLocation": "21573:9:79", + "nodeType": "VariableDeclaration", + "scope": 37946, + "src": "21565:17:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21565:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21527:56:79" + }, + "returnParameters": { + "id": 37894, + "nodeType": "ParameterList", + "parameters": [], + "src": "21593:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 37991, + "nodeType": "FunctionDefinition", + "src": "22257:369:79", + "nodes": [], + "body": { + "id": 37990, + "nodeType": "Block", + "src": "22341:285:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 37960, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37950, + "src": "22380:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + ], + "id": 37959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22372:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22372:7:79", + "typeDescriptions": {} + } + }, + "id": 37961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22372:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 37962, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37952, + "src": "22387:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37957, + "name": "_validateBptAndGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38059, + "src": "22351:20:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) view" + } + }, + "id": 37963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22351:52:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37964, + "nodeType": "ExpressionStatement", + "src": "22351:52:79" + }, + { + "assignments": [ + 37967 + ], + "declarations": [ + { + "constant": false, + "id": 37967, + "mutability": "mutable", + "name": "liquidityGauge", + "nameLocation": "22437:14:79", + "nodeType": "VariableDeclaration", + "scope": 37990, + "src": "22413:38:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + }, + "typeName": { + "id": 37966, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37965, + "name": "ILiquidityGaugev3Custom", + "nameLocations": [ + "22413:23:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 34218, + "src": "22413:23:79" + }, + "referencedDeclaration": 34218, + "src": "22413:23:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "visibility": "internal" + } + ], + "id": 37971, + "initialValue": { + "arguments": [ + { + "id": 37969, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37952, + "src": "22478:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37968, + "name": "ILiquidityGaugev3Custom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34218, + "src": "22454:23:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILiquidityGaugev3Custom_$34218_$", + "typeString": "type(contract ILiquidityGaugev3Custom)" + } + }, + "id": 37970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22454:40:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22413:81:79" + }, + { + "expression": { + "id": 37982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 37972, + "name": "_amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37954, + "src": "22504:10:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 37977, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37967, + "src": "22545:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + ], + "id": 37976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22537:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22537:7:79", + "typeDescriptions": {} + } + }, + "id": 37978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22537:23:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 37974, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "22531:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 37979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22531:30:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + { + "id": 37980, + "name": "_amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37954, + "src": "22563:10:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37973, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38439, + "src": "22517:13:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 37981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22517:57:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22504:70:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 37983, + "nodeType": "ExpressionStatement", + "src": "22504:70:79" + }, + { + "expression": { + "arguments": [ + { + "id": 37987, + "name": "_amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37954, + "src": "22608:10:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 37984, + "name": "liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37967, + "src": "22584:14:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILiquidityGaugev3Custom_$34218", + "typeString": "contract ILiquidityGaugev3Custom" + } + }, + "id": 37986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22599:8:79", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 34217, + "src": "22584:23:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 37988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22584:35:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37989, + "nodeType": "ExpressionStatement", + "src": "22584:35:79" + } + ] + }, + "documentation": { + "id": 37947, + "nodeType": "StructuredDocumentation", + "src": "21996:256:79", + "text": " @notice unstake (withdraw) BPT from respective pool gauge\n @param _bpt address of BPTs to unstake\n @param _amountOut number of BPTs to unstake\n @dev Interface custom as Balancer/Curve do not provide for liquidityGauges." + }, + "functionSelector": "d2e85806", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unstakeBPT", + "nameLocation": "22266:10:79", + "parameters": { + "id": 37955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 37950, + "mutability": "mutable", + "name": "_bpt", + "nameLocation": "22283:4:79", + "nodeType": "VariableDeclaration", + "scope": 37991, + "src": "22277:10:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 37949, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 37948, + "name": "ERC20", + "nameLocations": [ + "22277:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "22277:5:79" + }, + "referencedDeclaration": 33219, + "src": "22277:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37952, + "mutability": "mutable", + "name": "_liquidityGauge", + "nameLocation": "22297:15:79", + "nodeType": "VariableDeclaration", + "scope": 37991, + "src": "22289:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22289:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37954, + "mutability": "mutable", + "name": "_amountOut", + "nameLocation": "22322:10:79", + "nodeType": "VariableDeclaration", + "scope": 37991, + "src": "22314:18:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22314:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22276:57:79" + }, + "returnParameters": { + "id": 37956, + "nodeType": "ParameterList", + "parameters": [], + "src": "22341:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 38004, + "nodeType": "FunctionDefinition", + "src": "22759:79:79", + "nodes": [], + "body": { + "id": 38003, + "nodeType": "Block", + "src": "22803:35:79", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 38000, + "name": "gauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37994, + "src": "22825:5:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 37997, + "name": "minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36694, + "src": "22813:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBalancerMinter_$35222", + "typeString": "contract IBalancerMinter" + } + }, + "id": 37999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22820:4:79", + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 35221, + "src": "22813:11:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 38001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22813:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 38002, + "nodeType": "ExpressionStatement", + "src": "22813:18:79" + } + ] + }, + "documentation": { + "id": 37992, + "nodeType": "StructuredDocumentation", + "src": "22632:122:79", + "text": " @notice claim rewards ($BAL) from LP position\n @dev rewards are only accrued for staked positions" + }, + "functionSelector": "ef5cfb8c", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimRewards", + "nameLocation": "22768:12:79", + "parameters": { + "id": 37995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 37994, + "mutability": "mutable", + "name": "gauge", + "nameLocation": "22789:5:79", + "nodeType": "VariableDeclaration", + "scope": 38004, + "src": "22781:13:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22781:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "22780:15:79" + }, + "returnParameters": { + "id": 37996, + "nodeType": "ParameterList", + "parameters": [], + "src": "22803:0:79" + }, + "scope": 38236, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 38059, + "nodeType": "FunctionDefinition", + "src": "23379:461:79", + "nodes": [], + "body": { + "id": 38058, + "nodeType": "Block", + "src": "23462:378:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 38013 + ], + "declarations": [ + { + "constant": false, + "id": 38013, + "mutability": "mutable", + "name": "positionHash", + "nameLocation": "23480:12:79", + "nodeType": "VariableDeclaration", + "scope": 38058, + "src": "23472:20:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 38012, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23472:7:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 38027, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 38017, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 36753 + ], + "referencedDeclaration": 36753, + "src": "23516:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 38018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23516:12:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "66616c7365", + "id": 38019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23530:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "arguments": [ + { + "id": 38022, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38007, + "src": "23548:4:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 38023, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38009, + "src": "23554:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 38020, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "23537:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 38021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23541:6:79", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "23537:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 38024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23537:33:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 38015, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "23505:3:79", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 38016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23509:6:79", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "23505:10:79", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 38025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23505:66:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 38014, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "23495:9:79", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 38026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23495:77:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23472:100:79" + }, + { + "assignments": [ + 38029 + ], + "declarations": [ + { + "constant": false, + "id": 38029, + "mutability": "mutable", + "name": "positionId", + "nameLocation": "23589:10:79", + "nodeType": "VariableDeclaration", + "scope": 38058, + "src": "23582:17:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 38028, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "23582:6:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 38041, + "initialValue": { + "arguments": [ + { + "id": 38039, + "name": "positionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38013, + "src": "23663:12:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 38033, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "23617:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 38032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23609:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23609:7:79", + "typeDescriptions": {} + } + }, + "id": 38034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23609:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38030, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "23602:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$32635_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 38035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23602:21:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$32635", + "typeString": "contract Cellar" + } + }, + "id": 38036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23624:8:79", + "memberName": "registry", + "nodeType": "MemberAccess", + "referencedDeclaration": 30271, + "src": "23602:30:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Registry_$29225_$", + "typeString": "function () view external returns (contract Registry)" + } + }, + "id": 38037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23602:32:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Registry_$29225", + "typeString": "contract Registry" + } + }, + "id": 38038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23635:27:79", + "memberName": "getPositionHashToPositionId", + "nodeType": "MemberAccess", + "referencedDeclaration": 28972, + "src": "23602:60:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint32_$", + "typeString": "function (bytes32) view external returns (uint32)" + } + }, + "id": 38040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23602:74:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23582:94:79" + }, + { + "condition": { + "id": 38051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23690:49:79", + "subExpression": { + "arguments": [ + { + "id": 38049, + "name": "positionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38029, + "src": "23728:10:79", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 38045, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "23706:4:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BalancerPoolAdaptor_$38236", + "typeString": "contract BalancerPoolAdaptor" + } + ], + "id": 38044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23698:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23698:7:79", + "typeDescriptions": {} + } + }, + "id": 38046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23698:13:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38042, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32635, + "src": "23691:6:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$32635_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 38047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23691:21:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$32635", + "typeString": "contract Cellar" + } + }, + "id": 38048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23713:14:79", + "memberName": "isPositionUsed", + "nodeType": "MemberAccess", + "referencedDeclaration": 29501, + "src": "23691:36:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view external returns (bool)" + } + }, + "id": 38050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23691:48:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38057, + "nodeType": "IfStatement", + "src": "23686:147:79", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 38053, + "name": "_bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38007, + "src": "23811:4:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 38054, + "name": "_liquidityGauge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38009, + "src": "23817:15:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38052, + "name": "BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36658, + "src": "23760:50:79", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 38055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23760:73:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 38056, + "nodeType": "RevertStatement", + "src": "23753:80:79" + } + } + ] + }, + "documentation": { + "id": 38005, + "nodeType": "StructuredDocumentation", + "src": "22957:417:79", + "text": " @notice Validates that a given bpt and liquidityGauge is set up as a position in the Cellar\n @dev This function uses `address(this)` as the address of the Cellar\n @param _bpt of interest\n @param _liquidityGauge corresponding to _bpt\n NOTE: _liquidityGauge can be zeroAddress in cases where Cellar doesn't want to stake or there are no gauges yet available for respective bpt" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_validateBptAndGauge", + "nameLocation": "23388:20:79", + "parameters": { + "id": 38010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38007, + "mutability": "mutable", + "name": "_bpt", + "nameLocation": "23417:4:79", + "nodeType": "VariableDeclaration", + "scope": 38059, + "src": "23409:12:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23409:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38009, + "mutability": "mutable", + "name": "_liquidityGauge", + "nameLocation": "23431:15:79", + "nodeType": "VariableDeclaration", + "scope": 38059, + "src": "23423:23:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23423:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23408:39:79" + }, + "returnParameters": { + "id": 38011, + "nodeType": "ParameterList", + "parameters": [], + "src": "23462:0:79" + }, + "scope": 38236, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 38195, + "nodeType": "FunctionDefinition", + "src": "23963:1066:79", + "nodes": [], + "body": { + "id": 38194, + "nodeType": "Block", + "src": "24114:915:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 38074 + ], + "declarations": [ + { + "constant": false, + "id": 38074, + "mutability": "mutable", + "name": "poolTokensLength", + "nameLocation": "24132:16:79", + "nodeType": "VariableDeclaration", + "scope": 38194, + "src": "24124:24:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24124:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 38077, + "initialValue": { + "expression": { + "id": 38075, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38066, + "src": "24151:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 38076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24162:6:79", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "24151:17:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24124:44:79" + }, + { + "assignments": [ + 38079 + ], + "declarations": [ + { + "constant": false, + "id": 38079, + "mutability": "mutable", + "name": "removePremintedBpts", + "nameLocation": "24183:19:79", + "nodeType": "VariableDeclaration", + "scope": 38194, + "src": "24178:24:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 38078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24178:4:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 38080, + "nodeType": "VariableDeclarationStatement", + "src": "24178:24:79" + }, + { + "body": { + "id": 38105, + "nodeType": "Block", + "src": "24331:141:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 38097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 38092, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38066, + "src": "24357:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 38094, + "indexExpression": { + "id": 38093, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38082, + "src": "24368:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24357:13:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + ], + "id": 38091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24349:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24349:7:79", + "typeDescriptions": {} + } + }, + "id": 38095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24349:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 38096, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38062, + "src": "24375:3:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24349:29:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38104, + "nodeType": "IfStatement", + "src": "24345:117:79", + "trueBody": { + "id": 38103, + "nodeType": "Block", + "src": "24380:82:79", + "statements": [ + { + "expression": { + "id": 38100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38098, + "name": "removePremintedBpts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38079, + "src": "24398:19:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 38099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24420:4:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "24398:26:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38101, + "nodeType": "ExpressionStatement", + "src": "24398:26:79" + }, + { + "id": 38102, + "nodeType": "Break", + "src": "24442:5:79" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38084, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38082, + "src": "24304:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 38085, + "name": "poolTokensLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38074, + "src": "24308:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24304:20:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38106, + "initializationExpression": { + "assignments": [ + 38082 + ], + "declarations": [ + { + "constant": false, + "id": 38082, + "mutability": "mutable", + "name": "i", + "nameLocation": "24301:1:79", + "nodeType": "VariableDeclaration", + "scope": 38106, + "src": "24293:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38081, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24293:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 38083, + "nodeType": "VariableDeclarationStatement", + "src": "24293:9:79" + }, + "loopExpression": { + "expression": { + "id": 38088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "24326:3:79", + "subExpression": { + "id": 38087, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38082, + "src": "24328:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 38089, + "nodeType": "ExpressionStatement", + "src": "24326:3:79" + }, + "nodeType": "ForStatement", + "src": "24288:184:79" + }, + { + "condition": { + "id": 38107, + "name": "removePremintedBpts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38079, + "src": "24485:19:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 38192, + "nodeType": "Block", + "src": "24862:161:79", + "statements": [ + { + "expression": { + "id": 38167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38160, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38071, + "src": "24876:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 38165, + "name": "poolTokensLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38074, + "src": "24897:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 38164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "24885:11:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (contract ERC20[] memory)" + }, + "typeName": { + "baseType": { + "id": 38162, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38161, + "name": "ERC20", + "nameLocations": [ + "24889:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "24889:5:79" + }, + "referencedDeclaration": 33219, + "src": "24889:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38163, + "nodeType": "ArrayTypeName", + "src": "24889:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + } + }, + "id": 38166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24885:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "src": "24876:38:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 38168, + "nodeType": "ExpressionStatement", + "src": "24876:38:79" + }, + { + "body": { + "expression": { + "id": 38189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 38178, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38071, + "src": "24971:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 38180, + "indexExpression": { + "id": 38179, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38170, + "src": "24978:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "24971:9:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 38184, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38066, + "src": "24997:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 38186, + "indexExpression": { + "id": 38185, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38170, + "src": "25008:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24997:13:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + ], + "id": 38183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24989:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24989:7:79", + "typeDescriptions": {} + } + }, + "id": 38187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24989:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38181, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "24983:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 38188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24983:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "src": "24971:41:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38190, + "nodeType": "ExpressionStatement", + "src": "24971:41:79" + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38172, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38170, + "src": "24944:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 38173, + "name": "poolTokensLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38074, + "src": "24948:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24944:20:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38191, + "initializationExpression": { + "assignments": [ + 38170 + ], + "declarations": [ + { + "constant": false, + "id": 38170, + "mutability": "mutable", + "name": "i", + "nameLocation": "24941:1:79", + "nodeType": "VariableDeclaration", + "scope": 38191, + "src": "24933:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24933:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 38171, + "nodeType": "VariableDeclarationStatement", + "src": "24933:9:79" + }, + "loopExpression": { + "expression": { + "id": 38176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "24966:3:79", + "subExpression": { + "id": 38175, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38170, + "src": "24968:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 38177, + "nodeType": "ExpressionStatement", + "src": "24966:3:79" + }, + "nodeType": "ForStatement", + "src": "24928:84:79" + } + ] + }, + "id": 38193, + "nodeType": "IfStatement", + "src": "24481:542:79", + "trueBody": { + "id": 38159, + "nodeType": "Block", + "src": "24506:350:79", + "statements": [ + { + "expression": { + "id": 38117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38108, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38071, + "src": "24520:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38113, + "name": "poolTokensLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38074, + "src": "24541:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 38114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24560:1:79", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24541:20:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 38112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "24529:11:79", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (contract ERC20[] memory)" + }, + "typeName": { + "baseType": { + "id": 38110, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38109, + "name": "ERC20", + "nameLocations": [ + "24533:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "24533:5:79" + }, + "referencedDeclaration": 33219, + "src": "24533:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38111, + "nodeType": "ArrayTypeName", + "src": "24533:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + } + }, + "id": 38116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24529:33:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "src": "24520:42:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 38118, + "nodeType": "ExpressionStatement", + "src": "24520:42:79" + }, + { + "assignments": [ + 38120 + ], + "declarations": [ + { + "constant": false, + "id": 38120, + "mutability": "mutable", + "name": "tokensIndex", + "nameLocation": "24584:11:79", + "nodeType": "VariableDeclaration", + "scope": 38159, + "src": "24576:19:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24576:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 38121, + "nodeType": "VariableDeclarationStatement", + "src": "24576:19:79" + }, + { + "body": { + "id": 38157, + "nodeType": "Block", + "src": "24652:194:79", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 38138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 38133, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38066, + "src": "24682:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 38135, + "indexExpression": { + "id": 38134, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38123, + "src": "24693:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24682:13:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + ], + "id": 38132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24674:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24674:7:79", + "typeDescriptions": {} + } + }, + "id": 38136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24674:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 38137, + "name": "bpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38062, + "src": "24700:3:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24674:29:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38156, + "nodeType": "IfStatement", + "src": "24670:162:79", + "trueBody": { + "id": 38155, + "nodeType": "Block", + "src": "24705:127:79", + "statements": [ + { + "expression": { + "id": 38150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 38139, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38071, + "src": "24727:6:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "id": 38141, + "indexExpression": { + "id": 38140, + "name": "tokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38120, + "src": "24734:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "24727:19:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 38145, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38066, + "src": "24763:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 38147, + "indexExpression": { + "id": 38146, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38123, + "src": "24774:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24763:13:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + ], + "id": 38144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24755:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38143, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24755:7:79", + "typeDescriptions": {} + } + }, + "id": 38148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24755:22:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38142, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33219, + "src": "24749:5:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$33219_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 38149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24749:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "src": "24727:51:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38151, + "nodeType": "ExpressionStatement", + "src": "24727:51:79" + }, + { + "expression": { + "id": 38153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "24800:13:79", + "subExpression": { + "id": 38152, + "name": "tokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38120, + "src": "24800:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 38154, + "nodeType": "ExpressionStatement", + "src": "24800:13:79" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38125, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38123, + "src": "24625:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 38126, + "name": "poolTokensLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38074, + "src": "24629:16:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24625:20:79", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 38158, + "initializationExpression": { + "assignments": [ + 38123 + ], + "declarations": [ + { + "constant": false, + "id": 38123, + "mutability": "mutable", + "name": "i", + "nameLocation": "24622:1:79", + "nodeType": "VariableDeclaration", + "scope": 38158, + "src": "24614:9:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24614:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 38124, + "nodeType": "VariableDeclarationStatement", + "src": "24614:9:79" + }, + "loopExpression": { + "expression": { + "id": 38129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "24647:3:79", + "subExpression": { + "id": 38128, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38123, + "src": "24649:1:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 38130, + "nodeType": "ExpressionStatement", + "src": "24647:3:79" + }, + "nodeType": "ForStatement", + "src": "24609:237:79" + } + ] + } + } + ] + }, + "documentation": { + "id": 38060, + "nodeType": "StructuredDocumentation", + "src": "23846:112:79", + "text": " @notice Returns a BPT's token array with any pre-minted BPT removed, but the order preserved." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPoolTokensWithNoPremintedBpt", + "nameLocation": "23972:32:79", + "parameters": { + "id": 38067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38062, + "mutability": "mutable", + "name": "bpt", + "nameLocation": "24022:3:79", + "nodeType": "VariableDeclaration", + "scope": 38195, + "src": "24014:11:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24014:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38066, + "mutability": "mutable", + "name": "poolTokens", + "nameLocation": "24051:10:79", + "nodeType": "VariableDeclaration", + "scope": 38195, + "src": "24035:26:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 38064, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38063, + "name": "IERC20", + "nameLocations": [ + "24035:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35010, + "src": "24035:6:79" + }, + "referencedDeclaration": 35010, + "src": "24035:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + }, + "id": 38065, + "nodeType": "ArrayTypeName", + "src": "24035:8:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + } + ], + "src": "24004:63:79" + }, + "returnParameters": { + "id": 38072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38071, + "mutability": "mutable", + "name": "tokens", + "nameLocation": "24106:6:79", + "nodeType": "VariableDeclaration", + "scope": 38195, + "src": "24091:21:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 38069, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38068, + "name": "ERC20", + "nameLocations": [ + "24091:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "24091:5:79" + }, + "referencedDeclaration": 33219, + "src": "24091:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38070, + "nodeType": "ArrayTypeName", + "src": "24091:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "src": "24090:23:79" + }, + "scope": 38236, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "id": 38235, + "nodeType": "FunctionDefinition", + "src": "25262:328:79", + "nodes": [], + "body": { + "id": 38234, + "nodeType": "Block", + "src": "25362:228:79", + "nodes": [], + "statements": [ + { + "assignments": [ + 38206 + ], + "declarations": [ + { + "constant": false, + "id": 38206, + "mutability": "mutable", + "name": "poolId", + "nameLocation": "25380:6:79", + "nodeType": "VariableDeclaration", + "scope": 38234, + "src": "25372:14:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 38205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25372:7:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 38215, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 38210, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38198, + "src": "25407:9:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25399:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25399:7:79", + "typeDescriptions": {} + } + }, + "id": 38211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25399:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38207, + "name": "IBasePool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35186, + "src": "25389:9:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBasePool_$35186_$", + "typeString": "type(contract IBasePool)" + } + }, + "id": 38212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25389:29:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBasePool_$35186", + "typeString": "contract IBasePool" + } + }, + "id": 38213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25419:9:79", + "memberName": "getPoolId", + "nodeType": "MemberAccess", + "referencedDeclaration": 35126, + "src": "25389:39:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 38214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25389:41:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25372:58:79" + }, + { + "assignments": [ + 38220, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 38220, + "mutability": "mutable", + "name": "poolTokens", + "nameLocation": "25457:10:79", + "nodeType": "VariableDeclaration", + "scope": 38234, + "src": "25441:26:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 38218, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38217, + "name": "IERC20", + "nameLocations": [ + "25441:6:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35010, + "src": "25441:6:79" + }, + "referencedDeclaration": 35010, + "src": "25441:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$35010", + "typeString": "contract IERC20" + } + }, + "id": 38219, + "nodeType": "ArrayTypeName", + "src": "25441:8:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 38225, + "initialValue": { + "arguments": [ + { + "id": 38223, + "name": "poolId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38206, + "src": "25495:6:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 38221, + "name": "vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36690, + "src": "25475:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IVault_$34921", + "typeString": "contract IVault" + } + }, + "id": 38222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25481:13:79", + "memberName": "getPoolTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 34647, + "src": "25475:19:79", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "id": 38224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25475:27:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$", + "typeString": "tuple(contract IERC20[] memory,uint256[] memory,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25440:62:79" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 38229, + "name": "targetBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38198, + "src": "25560:9:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 38228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25552:7:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 38227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25552:7:79", + "typeDescriptions": {} + } + }, + "id": 38230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25552:18:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 38231, + "name": "poolTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38220, + "src": "25572:10:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 38226, + "name": "_getPoolTokensWithNoPremintedBpt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38195, + "src": "25519:32:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$", + "typeString": "function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)" + } + }, + "id": 38232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25519:64:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[] memory" + } + }, + "functionReturnParameters": 38204, + "id": 38233, + "nodeType": "Return", + "src": "25512:71:79" + } + ] + }, + "documentation": { + "id": 38196, + "nodeType": "StructuredDocumentation", + "src": "25035:222:79", + "text": " @notice Returns the expected tokens array for a given `targetBpt`.\n @dev This function is NOT used by the adaptor, but could be used by strategists\n when formulating Balancer rebalances." + }, + "functionSelector": "7906afbf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getExpectedTokens", + "nameLocation": "25271:17:79", + "parameters": { + "id": 38199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38198, + "mutability": "mutable", + "name": "targetBpt", + "nameLocation": "25297:9:79", + "nodeType": "VariableDeclaration", + "scope": 38235, + "src": "25289:17:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25289:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25288:19:79" + }, + "returnParameters": { + "id": 38204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38203, + "mutability": "mutable", + "name": "expectedTokens", + "nameLocation": "25346:14:79", + "nodeType": "VariableDeclaration", + "scope": 38235, + "src": "25331:29:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr", + "typeString": "contract ERC20[]" + }, + "typeName": { + "baseType": { + "id": 38201, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 38200, + "name": "ERC20", + "nameLocations": [ + "25331:5:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 33219, + "src": "25331:5:79" + }, + "referencedDeclaration": 33219, + "src": "25331:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$33219", + "typeString": "contract ERC20" + } + }, + "id": 38202, + "nodeType": "ArrayTypeName", + "src": "25331:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr", + "typeString": "contract ERC20[]" + } + }, + "visibility": "internal" + } + ], + "src": "25330:31:79" + }, + "scope": 38236, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 36643, + "name": "BaseAdaptor", + "nameLocations": [ + "1135:11:79" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 38526, + "src": "1135:11:79" + }, + "id": 36644, + "nodeType": "InheritanceSpecifier", + "src": "1135:11:79" + } + ], + "canonicalName": "BalancerPoolAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 36642, + "nodeType": "StructuredDocumentation", + "src": "929:173:79", + "text": " @title Balancer Pool Adaptor\n @notice Allows Cellars to interact with Weighted, Stable, and Linear Balancer Pools (BPs).\n @author 0xEinCodes and CrispyMangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 38236, + 38526 + ], + "name": "BalancerPoolAdaptor", + "nameLocation": "1112:19:79", + "scope": 38237, + "usedErrors": [ + 36658, + 36661, + 36664, + 36667, + 36670, + 36673, + 36676, + 36679, + 38261, + 38264, + 38267, + 38270, + 38275, + 38278 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 79 + } diff --git a/steward_abi/src/balancer_pool_adaptor_v1.rs b/steward_abi/src/balancer_pool_adaptor_v1.rs new file mode 100644 index 00000000..a166fb8c --- /dev/null +++ b/steward_abi/src/balancer_pool_adaptor_v1.rs @@ -0,0 +1,911 @@ +pub use balancerpooladaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod balancerpooladaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "BalancerPoolAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static BALANCERPOOLADAPTORV1_ABI: ethers::contract::Lazy = + ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_vault\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_minter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"_balancerSlippage\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"liquidityGauge\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___InternalBalancesNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___InvalidConstructorSlippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___LengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BalancerPoolAdaptor___WrongSwapKind\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EXACT_TOKENS_IN_FOR_BPT_OUT\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"balancerSlippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gauge\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"claimRewards\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"enum IVault.SwapKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetIn\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetOut\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IVault.SingleSwap[]\",\n \"name\": \"swapsAfterExit\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsForSwaps\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"swapDeadlines\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct BalancerPoolAdaptor.SwapData\",\n \"name\": \"swapData\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"contract IAsset[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsOut\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"toInternalBalance\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct IVault.ExitPoolRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"exitPool\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getExpectedTokens\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"expectedTokens\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"enum IVault.SwapKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetIn\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetOut\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IVault.SingleSwap[]\",\n \"name\": \"swapsBeforeJoin\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsForSwaps\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"swapDeadlines\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct BalancerPoolAdaptor.SwapData\",\n \"name\": \"swapData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minimumBpt\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"joinPool\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minter\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBalancerMinter\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"_bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_liquidityGauge\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"stakeBPT\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"_bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_liquidityGauge\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountOut\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"unstakeBPT\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"vault\",\n \"outputs\": [\n {\n \"internalType\": \"contract IVault\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountBPTToSend\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60e06040523480156200001157600080fd5b5060405162003477380380620034778339810160408190526200003491620000b0565b6123288163ffffffff1610806200005257506127108163ffffffff16115b156200007157604051633aa8bcf160e01b815260040160405180910390fd5b6001600160a01b03928316608052911660a05263ffffffff1660c05262000106565b80516001600160a01b0381168114620000ab57600080fd5b919050565b600080600060608486031215620000c657600080fd5b620000d18462000093565b9250620000e16020850162000093565b9150604084015163ffffffff81168114620000fb57600080fd5b809150509250925092565b60805160a05160c0516132d86200019f600039600081816102b301528181610e7d0152611c840152600081816101360152611ede0152600081816102ed0152818161042b015281816106f10152818161085e0152818161094d01528181610b3201528181610d5f01528181610dc5015281816111040152818161136701528181611597015281816118b601526119d201526132d86000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806397194b13116100ad578063e170a9bf11610071578063e170a9bf14610288578063ef5cfb8c1461029b578063f7e69b16146102ae578063fa50e5d2146102d5578063fbfa77cf146102e857600080fd5b806397194b1314610229578063aeffddde1461023c578063c9111bd71461024f578063d2e8580614610262578063d3bfe76a1461027557600080fd5b806378415365116100f457806378415365146101cc5780637906afbf146101df5780637998a1c4146101ff57806389353a09146102075780638f210a6a1461021657600080fd5b806307546172146101315780630e222e52146101755780633e032a3b1461018b5780635c14acdb146101a457806369445c31146101b9575b600080fd5b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61017d600181565b60405190815260200161016c565b6123285b60405163ffffffff909116815260200161016c565b6101b76101b2366004612920565b61030f565b005b6101b76101c736600461299d565b610ed7565b61017d6101da366004612a09565b610ef0565b6101f26101ed366004612a3d565b61107a565b60405161016c9190612a9e565b61017d611181565b6040516000815260200161016c565b6101b7610224366004612ab1565b6111df565b6101b7610237366004612b0b565b6112df565b6101f261024a366004612a09565b611cdd565b6101b761025d366004612c88565b611d40565b6101b7610270366004612ab1565b611e12565b6101b7610283366004612d07565b611e8a565b610158610296366004612a09565b611ea3565b6101b76102a9366004612a3d565b611ebf565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102e3366004612d40565b611f36565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103739190612da3565b90506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190612dbc565b905061040860405180608001604052806060815260200160608152602001606081526020016000151581525090565b60006060828101829052604051631f29a8cd60e31b8152600481018690529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f94d466890602401600060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a29190810190612e34565b505090506104b08982611f48565b915080516001600160401b038111156104cb576104cb6125e8565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b50835260005b815181101561055b5781818151811061051557610515612f01565b60200260200101518460000151828151811061053357610533612f01565b6001600160a01b039092166020928302919091019091015261055481612f2d565b90506104fa565b5080516001600160401b03811115610575576105756125e8565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50602084015260005b81518110156105e457600019846020015182815181106105c9576105c9612f01565b60209081029190910101526105dd81612f2d565b90506105a7565b505080518751146106085760405163967575bd60e01b815260040160405180910390fd5b600081516001600160401b03811115610623576106236125e8565b60405190808252806020026020018201604052801561064c578160200160208202803683370190505b50905060005b8851811015610a805788818151811061066d5761066d612f01565b60200260200101516080015160000315610a7057600089828151811061069557610695612f01565b60200260200101516040015190506106ca818b84815181106106b9576106b9612f01565b60200260200101516080015161214d565b8a83815181106106dc576106dc612f01565b602002602001015160800181815250506107477f00000000000000000000000000000000000000000000000000000000000000008b848151811061072257610722612f01565b602002602001015160800151836001600160a01b03166121ce9092919063ffffffff16565b60006001600160a01b03168a838151811061076457610764612f01565b6020026020010151606001516001600160a01b0316146109c95783828151811061079057610790612f01565b60200260200101516001600160a01b03168a83815181106107b3576107b3612f01565b6020026020010151606001516001600160a01b0316146107e6576040516385f4bd3b60e01b815260040160405180910390fd5b60008a83815181106107fa576107fa612f01565b602002602001015160200151600181111561081757610817612f46565b14610835576040516374c0729b60e01b815260040160405180910390fd5b604080516080810182523080825260006020830181905292820152606081018290528b519091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352bbbe29908e908790811061089f5761089f612f01565b6020026020010151848e6000015188815181106108be576108be612f01565b60200260200101518f6020015189815181106108dc576108dc612f01565b60200260200101516040518563ffffffff1660e01b81526004016109039493929190612fa2565b6020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190612da3565b90506109a37f0000000000000000000000000000000000000000000000000000000000000000828e878151811061097f5761097f612f01565b6020026020010151606001516001600160a01b03166121ce9092919063ffffffff16565b808585815181106109b6576109b6612f01565b6020026020010181815250505050610a6e565b8382815181106109db576109db612f01565b60200260200101516001600160a01b03168a83815181106109fe576109fe612f01565b6020026020010151604001516001600160a01b031614610a31576040516385f4bd3b60e01b815260040160405180910390fd5b898281518110610a4357610a43612f01565b602002602001015160800151838381518110610a6157610a61612f01565b6020026020010181815250505b505b610a7981612f2d565b9050610652565b5060018187604051602001610a97939291906130b0565b60408051808303601f1901815291815284810191909152516370a0823160e01b8152306004820152600091506001600160a01b038a16906370a0823190602401602060405180830381865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190612da3565b60405163172b958560e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890610b6d908890309081908990600401613170565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190612da3565b610c1391906131a2565b9050600088516001600160401b03811115610c3057610c306125e8565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b509050600089516001600160401b03811115610c7757610c776125e8565b604051908082528060200260200182016040528015610ca0578160200160208202803683370190505b50905060005b8a51811015610dfc5760008b8281518110610cc357610cc3612f01565b602002602001015160400151905080838381518110610ce457610ce4612f01565b60200260200101906001600160a01b031690816001600160a01b0316815250508b8281518110610d1657610d16612f01565b602002602001015160800151848381518110610d3457610d34612f01565b602002602001018181525050610d83838381518110610d5557610d55612f01565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000612250565b60008c8381518110610d9757610d97612f01565b602002602001015160600151905060006001600160a01b0316816001600160a01b031614610de957610de9817f0000000000000000000000000000000000000000000000000000000000000000612250565b505080610df590612f2d565b9050610ca6565b506000866001600160a01b031663b333a17583858f6040518463ffffffff1660e01b8152600401610e2f939291906131b5565b602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612da3565b9050610ea98163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b841015610ec9576040516336bedbd960e11b815260040160405180910390fd5b505050505050505050505050565b604051633204ed5b60e21b815260040160405180910390fd5b600080600083806020019051810190610f0991906131f3565b90925090506001600160a01b038116610f8c576040516370a0823160e01b81523360048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190612da3565b949350505050565b6040516370a0823160e01b815233600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190612da3565b6040516370a0823160e01b815233600482015290915081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190612da3565b6110709190613222565b9695505050505050565b60606000826001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111739190810190612e34565b50509050610f848482611f48565b60006040516020016111c4906020808252601b908201527f42616c616e63657220506f6f6c2041646170746f72205620312e300000000000604082015260600190565b60405160208183030381529060405280519060200120905090565b6111e983836122fe565b60006111f5848361214d565b60405163095ea7b360e01b81526001600160a01b03808616600483015260248201839052919250849186169063095ea7b3906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613235565b50604051636e553f6560e01b8152600481018390523060248201526001600160a01b03821690636e553f6590604401600060405180830381600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506112d88582612250565b5050505050565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa1580156113ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113d69190810190612e34565b5050905060006113e68783611f48565b905083606001511561140b57604051636d22518360e01b815260040160405180910390fd5b600081516001600160401b03811115611426576114266125e8565b60405190808252806020026020018201604052801561144f578160200160208202803683370190505b50905060005b82518110156115115782818151811061147057611470612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e49190612da3565b8282815181106114f6576114f6612f01565b602090810291909101015261150a81612f2d565b9050611455565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612da3565b604051638bdb391360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638bdb3913906115d2908890309081908c90600401613170565b600060405180830381600087803b1580156115ec57600080fd5b505af1158015611600573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190612da3565b61167690826131a2565b905060005b835181101561175b5782818151811061169657611696612f01565b60200260200101518482815181106116b0576116b0612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612da3565b61172e91906131a2565b83828151811061174057611740612f01565b602090810291909101015261175481612f2d565b905061167b565b506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190612dbc565b905083518951146117e45760405163967575bd60e01b815260040160405180910390fd5b60005b8451811015611c035783818151811061180257611802612f01565b602002602001015160000315611bf35784818151811061182457611824612f01565b60200260200101516001600160a01b03168a828151811061184757611847612f01565b6020026020010151604001516001600160a01b03161461187a576040516385f4bd3b60e01b815260040160405180910390fd5b60006001600160a01b03168a828151811061189757611897612f01565b6020026020010151606001516001600160a01b031614611b41576119217f00000000000000000000000000000000000000000000000000000000000000008583815181106118e7576118e7612f01565b602002602001015187848151811061190157611901612f01565b60200260200101516001600160a01b03166121ce9092919063ffffffff16565b6040805160808101825230808252600060208301819052928201526060810191909152845185908390811061195857611958612f01565b60200260200101518b838151811061197257611972612f01565b60209081029190910101516080015260008b838151811061199557611995612f01565b60200260200101516020015160018111156119b2576119b2612f46565b146119d0576040516374c0729b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166352bbbe298c8481518110611a1157611a11612f01565b6020026020010151838d600001518681518110611a3057611a30612f01565b60200260200101518e602001518781518110611a4e57611a4e612f01565b60200260200101516040518563ffffffff1660e01b8152600401611a759493929190612fa2565b6020604051808303816000875af1158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190612da3565b858381518110611aca57611aca612f01565b602002602001018181525050611aeb868381518110610d5557610d55612f01565b8a8281518110611afd57611afd612f01565b602002602001015160600151868381518110611b1b57611b1b612f01565b60200260200101906001600160a01b031690816001600160a01b03168152505050611bf3565b816001600160a01b0316634f129c53868381518110611b6257611b62612f01565b60200260200101516040518263ffffffff1660e01b8152600401611b9591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190613235565b611bf3576040516301da6c4960e11b815260040160405180910390fd5b611bfc81612f2d565b90506117e7565b506000816001600160a01b031663b333a17586868e6040518463ffffffff1660e01b8152600401611c36939291906131b5565b602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190612da3565b9050611cb08363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b811015611cd0576040516336bedbd960e11b815260040160405180910390fd5b5050505050505050505050565b60408051600180825281830190925260609160208083019080368337019050509050611d0882611ea3565b81600081518110611d1b57611d1b612f01565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b611d49836124c4565b60008083806020019051810190611d6091906131f3565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190612da3565b905080871115611df5576000611de682896131a2565b9050611df3848483611e12565b505b611e096001600160a01b038416878961255b565b50505050505050565b611e1c83836122fe565b81611e27818361214d565b604051632e1a7d4d60e01b8152600481018290529092506001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050505050505050565b611e9f6001600160a01b0383168260006121ce565b5050565b600081806020019051810190611eb99190612dbc565b92915050565b6040516335313c2160e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a62784290602401600060405180830381600087803b158015611f2257600080fd5b505af11580156112d8573d6000803e3d6000fd5b6000611f4183610ef0565b9392505050565b80516060906000805b82811015611fa457856001600160a01b0316858281518110611f7557611f75612f01565b60200260200101516001600160a01b031603611f945760019150611fa4565b611f9d81612f2d565b9050611f51565b5080156120a057611fb66001836131a2565b6001600160401b03811115611fcd57611fcd6125e8565b604051908082528060200260200182016040528015611ff6578160200160208202803683370190505b5092506000805b8381101561209957866001600160a01b031686828151811061202157612021612f01565b60200260200101516001600160a01b0316146120895785818151811061204957612049612f01565b602002602001015185838151811061206357612063612f01565b6001600160a01b03909216602092830291909101909101528161208581612f2d565b9250505b61209281612f2d565b9050611ffd565b5050612145565b816001600160401b038111156120b8576120b86125e8565b6040519080825280602002602001820160405280156120e1578160200160208202803683370190505b50925060005b828110156121435784818151811061210157612101612f01565b602002602001015184828151811061211b5761211b612f01565b6001600160a01b039092166020928302919091019091015261213c81612f2d565b90506120e7565b505b505092915050565b600060001982036121c7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c09190612da3565b9050611eb9565b5080611eb9565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612da3565b1115611e9f57611e9f6001600160a01b0383168260006121ce565b8282028115158415858304851417166122f757600080fd5b0492915050565b6000612308611181565b604080516001600160a01b038681166020830152851681830152815180820383018152606082019092526123429291600091608001613252565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be9190612dbc565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016123eb91815260200190565b602060405180830381865afa158015612408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242c919061327c565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613235565b61224a5760405163114322b960e31b81526001600160a01b03808616600483015284166024820152604401612241565b6001600160a01b038116301480159061253a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190613235565b15612558576040516307de9b5160e21b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401612241565b6001600160a01b038116811461255857600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612620576126206125e8565b60405290565b604051608081016001600160401b0381118282101715612620576126206125e8565b604051601f8201601f191681016001600160401b0381118282101715612670576126706125e8565b604052919050565b60006001600160401b03821115612691576126916125e8565b5060051b60200190565b8035600281106126aa57600080fd5b919050565b80356126aa816125d3565b600082601f8301126126cb57600080fd5b81356001600160401b038111156126e4576126e46125e8565b6126f7601f8201601f1916602001612648565b81815284602083860101111561270c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261273a57600080fd5b8135602061274f61274a83612678565b612648565b82815260059290921b8401810191818101908684111561276e57600080fd5b8286015b848110156128315780356001600160401b03808211156127925760008081fd5b9088019060c0828b03601f19018113156127ac5760008081fd5b6127b46125fe565b87840135815260406127c781860161269b565b8983015260606127d88187016126af565b82840152608091506127eb8287016126af565b9083015260a0858101358284015292850135928484111561280e57600091508182fd5b61281c8e8b868901016126ba565b90830152508652505050918301918301612772565b509695505050505050565b600082601f83011261284d57600080fd5b8135602061285d61274a83612678565b82815260059290921b8401810191818101908684111561287c57600080fd5b8286015b848110156128315780358352918301918301612880565b6000604082840312156128a957600080fd5b604051604081016001600160401b0382821081831117156128cc576128cc6125e8565b8160405282935084359150808211156128e457600080fd5b6128f08683870161283c565b8352602085013591508082111561290657600080fd5b506129138582860161283c565b6020830152505092915050565b6000806000806080858703121561293657600080fd5b8435612941816125d3565b935060208501356001600160401b038082111561295d57600080fd5b61296988838901612729565b9450604087013591508082111561297f57600080fd5b5061298c87828801612897565b949793965093946060013593505050565b6000806000606084860312156129b257600080fd5b8335925060208401356001600160401b03808211156129d057600080fd5b6129dc878388016126ba565b935060408601359150808211156129f257600080fd5b506129ff868287016126ba565b9150509250925092565b600060208284031215612a1b57600080fd5b81356001600160401b03811115612a3157600080fd5b610f84848285016126ba565b600060208284031215612a4f57600080fd5b8135611f41816125d3565b600081518084526020808501945080840160005b83811015612a935781516001600160a01b031687529582019590820190600101612a6e565b509495945050505050565b602081526000611f416020830184612a5a565b600080600060608486031215612ac657600080fd5b8335612ad1816125d3565b92506020840135612ae1816125d3565b929592945050506040919091013590565b801515811461255857600080fd5b80356126aa81612af2565b60008060008060808587031215612b2157600080fd5b8435612b2c816125d3565b93506020858101356001600160401b0380821115612b4957600080fd5b612b5589838a01612729565b95506040880135915080821115612b6b57600080fd5b612b7789838a01612897565b94506060880135915080821115612b8d57600080fd5b908701906080828a031215612ba157600080fd5b612ba9612626565b823582811115612bb857600080fd5b8301601f81018b13612bc957600080fd5b8035612bd761274a82612678565b81815260059190911b8201860190868101908d831115612bf657600080fd5b928701925b82841015612c1d578335612c0e816125d3565b82529287019290870190612bfb565b84525050508284013582811115612c3357600080fd5b612c3f8b82860161283c565b85830152506040830135935081841115612c5857600080fd5b612c648a8585016126ba565b6040820152612c7560608401612b00565b6060820152969995985093965050505050565b60008060008060808587031215612c9e57600080fd5b843593506020850135612cb0816125d3565b925060408501356001600160401b0380821115612ccc57600080fd5b612cd8888389016126ba565b93506060870135915080821115612cee57600080fd5b50612cfb878288016126ba565b91505092959194509250565b60008060408385031215612d1a57600080fd5b8235612d25816125d3565b91506020830135612d35816125d3565b809150509250929050565b60008060408385031215612d5357600080fd5b82356001600160401b0380821115612d6a57600080fd5b612d76868387016126ba565b93506020850135915080821115612d8c57600080fd5b50612d99858286016126ba565b9150509250929050565b600060208284031215612db557600080fd5b5051919050565b600060208284031215612dce57600080fd5b8151611f41816125d3565b600082601f830112612dea57600080fd5b81516020612dfa61274a83612678565b82815260059290921b84018101918181019086841115612e1957600080fd5b8286015b848110156128315780518352918301918301612e1d565b600080600060608486031215612e4957600080fd5b83516001600160401b0380821115612e6057600080fd5b818601915086601f830112612e7457600080fd5b81516020612e8461274a83612678565b82815260059290921b8401810191818101908a841115612ea357600080fd5b948201945b83861015612eca578551612ebb816125d3565b82529482019490820190612ea8565b91890151919750909350505080821115612ee357600080fd5b50612ef086828701612dd9565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f3f57612f3f612f17565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b81811015612f8257602081850181015186830182015201612f66565b506000602082860101526020601f19601f83011685010191505092915050565b60e08152845160e08201526000602086015160028110612fd257634e487b7160e01b600052602160045260246000fd5b61010083015260408601516001600160a01b031661012083015260608601516130076101408401826001600160a01b03169052565b50608086015161016083015260a086015160c061018084015261302e6101a0840182612f5c565b91505061306e602083018680516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b60a082019390935260c0015292915050565b600081518084526020808501945080840160005b83811015612a9357815187529582019590820190600101613094565b8381526060602082015260006130c96060830185613080565b9050826040830152949350505050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561311e5783516001600160a01b0316835292840192918401916001016130f9565b5050828501519150858103838701526131378183613080565b92505050604083015184820360408601526131528282612f5c565b9150506060830151613168606086018215159052565b509392505050565b8481526001600160a01b03848116602083015283166040820152608060608201819052600090611070908301846130d9565b81810381811115611eb957611eb9612f17565b6060815260006131c86060830186612a5a565b82810360208401526131da8186613080565b91505060018060a01b0383166040830152949350505050565b6000806040838503121561320657600080fd5b8251613211816125d3565b6020840151909250612d35816125d3565b80820180821115611eb957611eb9612f17565b60006020828403121561324757600080fd5b8151611f4181612af2565b83815282151560208201526060604082015260006132736060830184612f5c565b95945050505050565b60006020828403121561328e57600080fd5b815163ffffffff81168114611f4157600080fdfea2646970667358221220e48af7fc1918b05774447b5653292647bc83aaf31e5961d06468bfb34426483a64736f6c63430008100033\",\n \"sourceMap\": \"1103:24489:79:-:0;;;5807:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5912:5;5892:17;:25;;;:52;;;;5941:3;5921:17;:23;;;5892:52;5888:127;;;5965:50;;-1:-1:-1;;;5965:50:79;;;;;;;;;;;5888:127;-1:-1:-1;;;;;6025:22:79;;;;;6057:33;;;;6100:36;;;;1103:24489;;14:177:93;93:13;;-1:-1:-1;;;;;135:31:93;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:450::-;283:6;291;299;352:2;340:9;331:7;327:23;323:32;320:52;;;368:1;365;358:12;320:52;391:40;421:9;391:40;:::i;:::-;381:50;;450:49;495:2;484:9;480:18;450:49;:::i;:::-;440:59;;542:2;531:9;527:18;521:25;586:10;579:5;575:22;568:5;565:33;555:61;;612:1;609;602:12;555:61;635:5;625:15;;;196:450;;;;;:::o;:::-;1103:24489:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806397194b13116100ad578063e170a9bf11610071578063e170a9bf14610288578063ef5cfb8c1461029b578063f7e69b16146102ae578063fa50e5d2146102d5578063fbfa77cf146102e857600080fd5b806397194b1314610229578063aeffddde1461023c578063c9111bd71461024f578063d2e8580614610262578063d3bfe76a1461027557600080fd5b806378415365116100f457806378415365146101cc5780637906afbf146101df5780637998a1c4146101ff57806389353a09146102075780638f210a6a1461021657600080fd5b806307546172146101315780630e222e52146101755780633e032a3b1461018b5780635c14acdb146101a457806369445c31146101b9575b600080fd5b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61017d600181565b60405190815260200161016c565b6123285b60405163ffffffff909116815260200161016c565b6101b76101b2366004612920565b61030f565b005b6101b76101c736600461299d565b610ed7565b61017d6101da366004612a09565b610ef0565b6101f26101ed366004612a3d565b61107a565b60405161016c9190612a9e565b61017d611181565b6040516000815260200161016c565b6101b7610224366004612ab1565b6111df565b6101b7610237366004612b0b565b6112df565b6101f261024a366004612a09565b611cdd565b6101b761025d366004612c88565b611d40565b6101b7610270366004612ab1565b611e12565b6101b7610283366004612d07565b611e8a565b610158610296366004612a09565b611ea3565b6101b76102a9366004612a3d565b611ebf565b61018f7f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102e3366004612d40565b611f36565b6101587f000000000000000000000000000000000000000000000000000000000000000081565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103739190612da3565b90506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190612dbc565b905061040860405180608001604052806060815260200160608152602001606081526020016000151581525090565b60006060828101829052604051631f29a8cd60e31b8152600481018690529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f94d466890602401600060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a29190810190612e34565b505090506104b08982611f48565b915080516001600160401b038111156104cb576104cb6125e8565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b50835260005b815181101561055b5781818151811061051557610515612f01565b60200260200101518460000151828151811061053357610533612f01565b6001600160a01b039092166020928302919091019091015261055481612f2d565b90506104fa565b5080516001600160401b03811115610575576105756125e8565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50602084015260005b81518110156105e457600019846020015182815181106105c9576105c9612f01565b60209081029190910101526105dd81612f2d565b90506105a7565b505080518751146106085760405163967575bd60e01b815260040160405180910390fd5b600081516001600160401b03811115610623576106236125e8565b60405190808252806020026020018201604052801561064c578160200160208202803683370190505b50905060005b8851811015610a805788818151811061066d5761066d612f01565b60200260200101516080015160000315610a7057600089828151811061069557610695612f01565b60200260200101516040015190506106ca818b84815181106106b9576106b9612f01565b60200260200101516080015161214d565b8a83815181106106dc576106dc612f01565b602002602001015160800181815250506107477f00000000000000000000000000000000000000000000000000000000000000008b848151811061072257610722612f01565b602002602001015160800151836001600160a01b03166121ce9092919063ffffffff16565b60006001600160a01b03168a838151811061076457610764612f01565b6020026020010151606001516001600160a01b0316146109c95783828151811061079057610790612f01565b60200260200101516001600160a01b03168a83815181106107b3576107b3612f01565b6020026020010151606001516001600160a01b0316146107e6576040516385f4bd3b60e01b815260040160405180910390fd5b60008a83815181106107fa576107fa612f01565b602002602001015160200151600181111561081757610817612f46565b14610835576040516374c0729b60e01b815260040160405180910390fd5b604080516080810182523080825260006020830181905292820152606081018290528b519091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352bbbe29908e908790811061089f5761089f612f01565b6020026020010151848e6000015188815181106108be576108be612f01565b60200260200101518f6020015189815181106108dc576108dc612f01565b60200260200101516040518563ffffffff1660e01b81526004016109039493929190612fa2565b6020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190612da3565b90506109a37f0000000000000000000000000000000000000000000000000000000000000000828e878151811061097f5761097f612f01565b6020026020010151606001516001600160a01b03166121ce9092919063ffffffff16565b808585815181106109b6576109b6612f01565b6020026020010181815250505050610a6e565b8382815181106109db576109db612f01565b60200260200101516001600160a01b03168a83815181106109fe576109fe612f01565b6020026020010151604001516001600160a01b031614610a31576040516385f4bd3b60e01b815260040160405180910390fd5b898281518110610a4357610a43612f01565b602002602001015160800151838381518110610a6157610a61612f01565b6020026020010181815250505b505b610a7981612f2d565b9050610652565b5060018187604051602001610a97939291906130b0565b60408051808303601f1901815291815284810191909152516370a0823160e01b8152306004820152600091506001600160a01b038a16906370a0823190602401602060405180830381865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190612da3565b60405163172b958560e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890610b6d908890309081908990600401613170565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190612da3565b610c1391906131a2565b9050600088516001600160401b03811115610c3057610c306125e8565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b509050600089516001600160401b03811115610c7757610c776125e8565b604051908082528060200260200182016040528015610ca0578160200160208202803683370190505b50905060005b8a51811015610dfc5760008b8281518110610cc357610cc3612f01565b602002602001015160400151905080838381518110610ce457610ce4612f01565b60200260200101906001600160a01b031690816001600160a01b0316815250508b8281518110610d1657610d16612f01565b602002602001015160800151848381518110610d3457610d34612f01565b602002602001018181525050610d83838381518110610d5557610d55612f01565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000612250565b60008c8381518110610d9757610d97612f01565b602002602001015160600151905060006001600160a01b0316816001600160a01b031614610de957610de9817f0000000000000000000000000000000000000000000000000000000000000000612250565b505080610df590612f2d565b9050610ca6565b506000866001600160a01b031663b333a17583858f6040518463ffffffff1660e01b8152600401610e2f939291906131b5565b602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612da3565b9050610ea98163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b841015610ec9576040516336bedbd960e11b815260040160405180910390fd5b505050505050505050505050565b604051633204ed5b60e21b815260040160405180910390fd5b600080600083806020019051810190610f0991906131f3565b90925090506001600160a01b038116610f8c576040516370a0823160e01b81523360048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190612da3565b949350505050565b6040516370a0823160e01b815233600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190612da3565b6040516370a0823160e01b815233600482015290915081906001600160a01b038616906370a0823190602401602060405180830381865afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110669190612da3565b6110709190613222565b9695505050505050565b60606000826001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111739190810190612e34565b50509050610f848482611f48565b60006040516020016111c4906020808252601b908201527f42616c616e63657220506f6f6c2041646170746f72205620312e300000000000604082015260600190565b60405160208183030381529060405280519060200120905090565b6111e983836122fe565b60006111f5848361214d565b60405163095ea7b360e01b81526001600160a01b03808616600483015260248201839052919250849186169063095ea7b3906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613235565b50604051636e553f6560e01b8152600481018390523060248201526001600160a01b03821690636e553f6590604401600060405180830381600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506112d88582612250565b5050505050565b6000846001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190612da3565b604051631f29a8cd60e31b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f94d466890602401600060405180830381865afa1580156113ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113d69190810190612e34565b5050905060006113e68783611f48565b905083606001511561140b57604051636d22518360e01b815260040160405180910390fd5b600081516001600160401b03811115611426576114266125e8565b60405190808252806020026020018201604052801561144f578160200160208202803683370190505b50905060005b82518110156115115782818151811061147057611470612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e49190612da3565b8282815181106114f6576114f6612f01565b602090810291909101015261150a81612f2d565b9050611455565b506040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612da3565b604051638bdb391360e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638bdb3913906115d2908890309081908c90600401613170565b600060405180830381600087803b1580156115ec57600080fd5b505af1158015611600573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190612da3565b61167690826131a2565b905060005b835181101561175b5782818151811061169657611696612f01565b60200260200101518482815181106116b0576116b0612f01565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612da3565b61172e91906131a2565b83828151811061174057611740612f01565b602090810291909101015261175481612f2d565b905061167b565b506000306001600160a01b031663d7d4bf456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190612dbc565b905083518951146117e45760405163967575bd60e01b815260040160405180910390fd5b60005b8451811015611c035783818151811061180257611802612f01565b602002602001015160000315611bf35784818151811061182457611824612f01565b60200260200101516001600160a01b03168a828151811061184757611847612f01565b6020026020010151604001516001600160a01b03161461187a576040516385f4bd3b60e01b815260040160405180910390fd5b60006001600160a01b03168a828151811061189757611897612f01565b6020026020010151606001516001600160a01b031614611b41576119217f00000000000000000000000000000000000000000000000000000000000000008583815181106118e7576118e7612f01565b602002602001015187848151811061190157611901612f01565b60200260200101516001600160a01b03166121ce9092919063ffffffff16565b6040805160808101825230808252600060208301819052928201526060810191909152845185908390811061195857611958612f01565b60200260200101518b838151811061197257611972612f01565b60209081029190910101516080015260008b838151811061199557611995612f01565b60200260200101516020015160018111156119b2576119b2612f46565b146119d0576040516374c0729b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166352bbbe298c8481518110611a1157611a11612f01565b6020026020010151838d600001518681518110611a3057611a30612f01565b60200260200101518e602001518781518110611a4e57611a4e612f01565b60200260200101516040518563ffffffff1660e01b8152600401611a759493929190612fa2565b6020604051808303816000875af1158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190612da3565b858381518110611aca57611aca612f01565b602002602001018181525050611aeb868381518110610d5557610d55612f01565b8a8281518110611afd57611afd612f01565b602002602001015160600151868381518110611b1b57611b1b612f01565b60200260200101906001600160a01b031690816001600160a01b03168152505050611bf3565b816001600160a01b0316634f129c53868381518110611b6257611b62612f01565b60200260200101516040518263ffffffff1660e01b8152600401611b9591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190613235565b611bf3576040516301da6c4960e11b815260040160405180910390fd5b611bfc81612f2d565b90506117e7565b506000816001600160a01b031663b333a17586868e6040518463ffffffff1660e01b8152600401611c36939291906131b5565b602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190612da3565b9050611cb08363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811690612710906122df16565b811015611cd0576040516336bedbd960e11b815260040160405180910390fd5b5050505050505050505050565b60408051600180825281830190925260609160208083019080368337019050509050611d0882611ea3565b81600081518110611d1b57611d1b612f01565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b611d49836124c4565b60008083806020019051810190611d6091906131f3565b6040516370a0823160e01b815230600482015291935091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190612da3565b905080871115611df5576000611de682896131a2565b9050611df3848483611e12565b505b611e096001600160a01b038416878961255b565b50505050505050565b611e1c83836122fe565b81611e27818361214d565b604051632e1a7d4d60e01b8152600481018290529092506001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050505050505050565b611e9f6001600160a01b0383168260006121ce565b5050565b600081806020019051810190611eb99190612dbc565b92915050565b6040516335313c2160e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a62784290602401600060405180830381600087803b158015611f2257600080fd5b505af11580156112d8573d6000803e3d6000fd5b6000611f4183610ef0565b9392505050565b80516060906000805b82811015611fa457856001600160a01b0316858281518110611f7557611f75612f01565b60200260200101516001600160a01b031603611f945760019150611fa4565b611f9d81612f2d565b9050611f51565b5080156120a057611fb66001836131a2565b6001600160401b03811115611fcd57611fcd6125e8565b604051908082528060200260200182016040528015611ff6578160200160208202803683370190505b5092506000805b8381101561209957866001600160a01b031686828151811061202157612021612f01565b60200260200101516001600160a01b0316146120895785818151811061204957612049612f01565b602002602001015185838151811061206357612063612f01565b6001600160a01b03909216602092830291909101909101528161208581612f2d565b9250505b61209281612f2d565b9050611ffd565b5050612145565b816001600160401b038111156120b8576120b86125e8565b6040519080825280602002602001820160405280156120e1578160200160208202803683370190505b50925060005b828110156121435784818151811061210157612101612f01565b602002602001015184828151811061211b5761211b612f01565b6001600160a01b039092166020928302919091019091015261213c81612f2d565b90506120e7565b505b505092915050565b600060001982036121c7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c09190612da3565b9050611eb9565b5080611eb9565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612da3565b1115611e9f57611e9f6001600160a01b0383168260006121ce565b8282028115158415858304851417166122f757600080fd5b0492915050565b6000612308611181565b604080516001600160a01b038681166020830152851681830152815180820383018152606082019092526123429291600091608001613252565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be9190612dbc565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016123eb91815260200190565b602060405180830381865afa158015612408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242c919061327c565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015612470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124949190613235565b61224a5760405163114322b960e31b81526001600160a01b03808616600483015284166024820152604401612241565b6001600160a01b038116301480159061253a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190613235565b15612558576040516307de9b5160e21b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061224a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401612241565b6001600160a01b038116811461255857600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612620576126206125e8565b60405290565b604051608081016001600160401b0381118282101715612620576126206125e8565b604051601f8201601f191681016001600160401b0381118282101715612670576126706125e8565b604052919050565b60006001600160401b03821115612691576126916125e8565b5060051b60200190565b8035600281106126aa57600080fd5b919050565b80356126aa816125d3565b600082601f8301126126cb57600080fd5b81356001600160401b038111156126e4576126e46125e8565b6126f7601f8201601f1916602001612648565b81815284602083860101111561270c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261273a57600080fd5b8135602061274f61274a83612678565b612648565b82815260059290921b8401810191818101908684111561276e57600080fd5b8286015b848110156128315780356001600160401b03808211156127925760008081fd5b9088019060c0828b03601f19018113156127ac5760008081fd5b6127b46125fe565b87840135815260406127c781860161269b565b8983015260606127d88187016126af565b82840152608091506127eb8287016126af565b9083015260a0858101358284015292850135928484111561280e57600091508182fd5b61281c8e8b868901016126ba565b90830152508652505050918301918301612772565b509695505050505050565b600082601f83011261284d57600080fd5b8135602061285d61274a83612678565b82815260059290921b8401810191818101908684111561287c57600080fd5b8286015b848110156128315780358352918301918301612880565b6000604082840312156128a957600080fd5b604051604081016001600160401b0382821081831117156128cc576128cc6125e8565b8160405282935084359150808211156128e457600080fd5b6128f08683870161283c565b8352602085013591508082111561290657600080fd5b506129138582860161283c565b6020830152505092915050565b6000806000806080858703121561293657600080fd5b8435612941816125d3565b935060208501356001600160401b038082111561295d57600080fd5b61296988838901612729565b9450604087013591508082111561297f57600080fd5b5061298c87828801612897565b949793965093946060013593505050565b6000806000606084860312156129b257600080fd5b8335925060208401356001600160401b03808211156129d057600080fd5b6129dc878388016126ba565b935060408601359150808211156129f257600080fd5b506129ff868287016126ba565b9150509250925092565b600060208284031215612a1b57600080fd5b81356001600160401b03811115612a3157600080fd5b610f84848285016126ba565b600060208284031215612a4f57600080fd5b8135611f41816125d3565b600081518084526020808501945080840160005b83811015612a935781516001600160a01b031687529582019590820190600101612a6e565b509495945050505050565b602081526000611f416020830184612a5a565b600080600060608486031215612ac657600080fd5b8335612ad1816125d3565b92506020840135612ae1816125d3565b929592945050506040919091013590565b801515811461255857600080fd5b80356126aa81612af2565b60008060008060808587031215612b2157600080fd5b8435612b2c816125d3565b93506020858101356001600160401b0380821115612b4957600080fd5b612b5589838a01612729565b95506040880135915080821115612b6b57600080fd5b612b7789838a01612897565b94506060880135915080821115612b8d57600080fd5b908701906080828a031215612ba157600080fd5b612ba9612626565b823582811115612bb857600080fd5b8301601f81018b13612bc957600080fd5b8035612bd761274a82612678565b81815260059190911b8201860190868101908d831115612bf657600080fd5b928701925b82841015612c1d578335612c0e816125d3565b82529287019290870190612bfb565b84525050508284013582811115612c3357600080fd5b612c3f8b82860161283c565b85830152506040830135935081841115612c5857600080fd5b612c648a8585016126ba565b6040820152612c7560608401612b00565b6060820152969995985093965050505050565b60008060008060808587031215612c9e57600080fd5b843593506020850135612cb0816125d3565b925060408501356001600160401b0380821115612ccc57600080fd5b612cd8888389016126ba565b93506060870135915080821115612cee57600080fd5b50612cfb878288016126ba565b91505092959194509250565b60008060408385031215612d1a57600080fd5b8235612d25816125d3565b91506020830135612d35816125d3565b809150509250929050565b60008060408385031215612d5357600080fd5b82356001600160401b0380821115612d6a57600080fd5b612d76868387016126ba565b93506020850135915080821115612d8c57600080fd5b50612d99858286016126ba565b9150509250929050565b600060208284031215612db557600080fd5b5051919050565b600060208284031215612dce57600080fd5b8151611f41816125d3565b600082601f830112612dea57600080fd5b81516020612dfa61274a83612678565b82815260059290921b84018101918181019086841115612e1957600080fd5b8286015b848110156128315780518352918301918301612e1d565b600080600060608486031215612e4957600080fd5b83516001600160401b0380821115612e6057600080fd5b818601915086601f830112612e7457600080fd5b81516020612e8461274a83612678565b82815260059290921b8401810191818101908a841115612ea357600080fd5b948201945b83861015612eca578551612ebb816125d3565b82529482019490820190612ea8565b91890151919750909350505080821115612ee357600080fd5b50612ef086828701612dd9565b925050604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f3f57612f3f612f17565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b81811015612f8257602081850181015186830182015201612f66565b506000602082860101526020601f19601f83011685010191505092915050565b60e08152845160e08201526000602086015160028110612fd257634e487b7160e01b600052602160045260246000fd5b61010083015260408601516001600160a01b031661012083015260608601516130076101408401826001600160a01b03169052565b50608086015161016083015260a086015160c061018084015261302e6101a0840182612f5c565b91505061306e602083018680516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b60a082019390935260c0015292915050565b600081518084526020808501945080840160005b83811015612a9357815187529582019590820190600101613094565b8381526060602082015260006130c96060830185613080565b9050826040830152949350505050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561311e5783516001600160a01b0316835292840192918401916001016130f9565b5050828501519150858103838701526131378183613080565b92505050604083015184820360408601526131528282612f5c565b9150506060830151613168606086018215159052565b509392505050565b8481526001600160a01b03848116602083015283166040820152608060608201819052600090611070908301846130d9565b81810381811115611eb957611eb9612f17565b6060815260006131c86060830186612a5a565b82810360208401526131da8186613080565b91505060018060a01b0383166040830152949350505050565b6000806040838503121561320657600080fd5b8251613211816125d3565b6020840151909250612d35816125d3565b80820180821115611eb957611eb9612f17565b60006020828403121561324757600080fd5b8151611f4181612af2565b83815282151560208201526060604082015260006132736060830184612f5c565b95945050505050565b60006020828403121561328e57600080fd5b815163ffffffff81168114611f4157600080fdfea2646970667358221220e48af7fc1918b05774447b5653292647bc83aaf31e5961d06468bfb34426483a64736f6c63430008100033\",\n \"sourceMap\": \"1103:24489:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5204:39;;;;;;;;-1:-1:-1;;;;;329:32:93;;;311:51;;299:2;284:18;5204:39:79;;;;;;;;5637:55;;5691:1;5637:55;;;;;519:25:93;;;507:2;492:18;5637:55:79;373:177:93;2415:78:80;2481:5;2415:78;;;729:10:93;717:23;;;699:42;;687:2;672:18;2415:78:80;555:192:93;10857:5846:79;;;;;;:::i;:::-;;:::i;:::-;;6947:136;;;;;;:::i;:::-;;:::i;8547:465::-;;;;;;:::i;:::-;;:::i;25262:328::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6594:145::-;;;:::i;10252:83::-;;;10300:4;9393:41:93;;9381:2;9366:18;10252:83:79;9253:187:93;21510:480:79;;;;;;:::i;:::-;;:::i;17221:4029::-;;;;;;:::i;:::-;;:::i;9934:183::-;;;;;;:::i;:::-;;:::i;7257:680::-;;;;;;:::i;:::-;;:::i;22257:369::-;;;;;;:::i;:::-;;:::i;9204:107:80:-;;;;;;:::i;:::-;;:::i;9285:147:79:-;;;;;;:::i;:::-;;:::i;22759:79::-;;;;;;:::i;:::-;;:::i;5489:40::-;;;;;8066:153;;;;;;:::i;:::-;;:::i;4934:29::-;;;;;10857:5846;11039:14;11074:9;-1:-1:-1;;;;;11056:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11039:58;;11107:23;11148:4;-1:-1:-1;;;;;11133:33:79;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11107:61;;11217:37;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11217:37:79;11294:5;11264:27;;;;:35;;;11399:27;;-1:-1:-1;;;11399:27:79;;;;;519:25:93;;;11264:27:79;;11294:5;11399;-1:-1:-1;;;;;11399:19:79;;;;492:18:93;;11399:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11399:27:79;;;;;;;;;;;;:::i;:::-;11364:62;;;;11459:64;11500:9;11512:10;11459:32;:64::i;:::-;11440:83;;11567:10;:17;-1:-1:-1;;;;;11554:31:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11554:31:79;-1:-1:-1;11537:48:79;;:14;11599:94;11619:10;:17;11615:1;:21;11599:94;;;11678:10;11689:1;11678:13;;;;;;;;:::i;:::-;;;;;;;11643:7;:14;;;11658:1;11643:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11643:50:79;;;:17;;;;;;;;;;;:50;11638:3;;;:::i;:::-;;;11599:94;;;;11744:10;:17;-1:-1:-1;;;;;11730:32:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11730:32:79;-1:-1:-1;11707:20:79;;;:55;11963:9;11958:87;11978:10;:17;11974:1;:21;11958:87;;;-1:-1:-1;;12002:7:79;:20;;;12023:1;12002:23;;;;;;;;:::i;:::-;;;;;;;;;;:43;11997:3;;;:::i;:::-;;;11958:87;;;;11350:706;12171:16;:23;12145:15;:22;:49;12141:100;;12203:38;;-1:-1:-1;;;12203:38:79;;;;;;;;;;;12141:100;12360:28;12405:16;:23;-1:-1:-1;;;;;12391:38:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12391:38:79;;12360:69;;12448:9;12443:2700;12463:15;:22;12459:1;:26;12443:2700;;;12622:15;12638:1;12622:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12651:1;12622:30;12618:44;12654:8;12618:44;12787:16;12820:15;12836:1;12820:18;;;;;;;;:::i;:::-;;;;;;;:26;;;12787:61;;12894:52;12908:10;12920:15;12936:1;12920:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12894:13;:52::i;:::-;12866:15;12882:1;12866:18;;;;;;;;:::i;:::-;;;;;;;:25;;:80;;;;;12964:65;12995:5;13003:15;13019:1;13003:18;;;;;;;;:::i;:::-;;;;;;;:25;;;12964:10;-1:-1:-1;;;;;12964:22:79;;;:65;;;;;:::i;:::-;13186:1;-1:-1:-1;;;;;13138:50:79;13146:15;13162:1;13146:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;13138:50:79;;13134:1995;;13367:16;13384:1;13367:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13319:68:79;13327:15;13343:1;13327:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;13319:68:79;;13315:162;;13420:57;;-1:-1:-1;;;13420:57:79;;;;;;;;;;;13315:162;13587:24;13560:15;13576:1;13560:18;;;;;;;;:::i;:::-;;;;;;;:23;;;:51;;;;;;;;:::i;:::-;;13556:125;;13644:37;;-1:-1:-1;;;13644:37:79;;;;;;;;;;;13556:125;13806:253;;;;;;;;13870:4;13806:253;;;13760:43;13806:253;;;;;;;;;;;;;;;;14312:18;;13806:253;;13760:43;14276:5;-1:-1:-1;;;;;14276:10:79;;;;14312:15;;14328:1;;14312:18;;;;;;:::i;:::-;;;;;;;14356:14;14396:8;:27;;;14424:1;14396:30;;;;;;;;:::i;:::-;;;;;;;14452:8;:22;;;14475:1;14452:25;;;;;;;;:::i;:::-;;;;;;;14276:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14252:247;;14582:86;14646:5;14654:13;14596:15;14612:1;14596:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;14582:55:79;;;:86;;;;;:::i;:::-;14708:13;14691:11;14703:1;14691:14;;;;;;;;:::i;:::-;;;;;;:30;;;;;13190:1550;;13134:1995;;;14936:16;14953:1;14936:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;14889:67:79;14897:15;14913:1;14897:18;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;14889:67:79;;14885:161;;14989:57;;-1:-1:-1;;;14989:57:79;;;;;;;;;;;14885:161;15085:15;15101:1;15085:18;;;;;;;;:::i;:::-;;;;;;;:25;;;15068:11;15080:1;15068:14;;;;;;;;:::i;:::-;;;;;;:42;;;;;13134:1995;12492:2651;12443:2700;12487:3;;;:::i;:::-;;;12443:2700;;;;5691:1;15215:11;15228:10;15175:64;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15175:64:79;;;;;;15156:16;;;:83;;;;15282:34;-1:-1:-1;;;15282:34:79;;15310:4;15282:34;;;311:51:93;15260:19:79;;-1:-1:-1;;;;;;15282:19:79;;;;;284:18:93;;15282:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15326:61;;-1:-1:-1;;;15326:61:79;;15260:56;;-1:-1:-1;;;;;;15326:5:79;:14;;;;:61;;15341:6;;15357:4;;;;15379:7;;15326:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15411:34:79;;-1:-1:-1;;;15411:34:79;;15439:4;15411:34;;;311:51:93;15448:11:79;;-1:-1:-1;;;;;;15411:19:79;;;-1:-1:-1;15411:19:79;;284:18:93;;15411:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;:::i;:::-;15397:62;;15563:29;15609:15;:22;-1:-1:-1;;;;;15595:37:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15595:37:79;;15563:69;;15642:26;15683:15;:22;-1:-1:-1;;;;;15671:35:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15671:35:79;;15642:64;;15802:9;15797:578;15817:15;:22;15813:1;:26;15797:578;;;15860:15;15886;15902:1;15886:18;;;;;;;;:::i;:::-;;;;;;;:26;;;15860:53;;15958:7;15927:11;15939:1;15927:14;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1;;;;;15927:40:79;;;-1:-1:-1;;;;;15927:40:79;;;;;15999:15;16015:1;15999:18;;;;;;;;:::i;:::-;;;;;;;:25;;;15981:12;15994:1;15981:15;;;;;;;;:::i;:::-;;;;;;:43;;;;;16082:55;16106:11;16118:1;16106:14;;;;;;;;:::i;:::-;;;;;;;16130:5;16082:23;:55::i;:::-;16211:16;16238:15;16254:1;16238:18;;;;;;;;:::i;:::-;;;;;;;:27;;;16211:55;;16304:1;-1:-1:-1;;;;;16284:22:79;:8;-1:-1:-1;;;;;16284:22:79;;16280:84;;16308:56;16338:8;16357:5;16308:23;:56::i;:::-;15846:529;;15841:3;;;;:::i;:::-;;;15797:578;;;;16463:32;16498:11;-1:-1:-1;;;;;16498:21:79;;16520:11;16533:12;16547:9;16498:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16463:94;-1:-1:-1;16585:58:79;16463:94;16585:58;16621:16;16585:58;;;16639:3;;16585:35;:58;:::i;:::-;16571:11;:72;16567:129;;;16664:32;;-1:-1:-1;;;16664:32:79;;;;;;;;;;;16567:129;11029:5674;;;;;;;;10857:5846;;;;:::o;6947:136::-;7039:37;;-1:-1:-1;;;7039:37:79;;;;;;;;;;;8547:465;8623:7;8643:9;8654:22;8691:12;8680:42;;;;;;;;;;;;:::i;:::-;8642:80;;-1:-1:-1;8642:80:79;-1:-1:-1;;;;;;8736:28:79;;8732:73;;8773:32;;-1:-1:-1;;;8773:32:79;;8794:10;8773:32;;;311:51:93;-1:-1:-1;;;;;8773:20:79;;;;;284:18:93;;8773:32:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8766:39;8547:465;-1:-1:-1;;;;8547:465:79:o;8732:73::-;8903:41;;-1:-1:-1;;;8903:41:79;;8933:10;8903:41;;;311:51:93;8857:14:79;;8815:25;;-1:-1:-1;;;;;8903:29:79;;;;;284:18:93;;8903:41:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8961:32;;-1:-1:-1;;;8961:32:79;;8982:10;8961:32;;;311:51:93;8883:61:79;;-1:-1:-1;8883:61:79;;-1:-1:-1;;;;;8961:20:79;;;;;284:18:93;;8961:32:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;;:::i;:::-;8954:51;8547:465;-1:-1:-1;;;;;;8547:465:79:o;25262:328::-;25331:29;25372:14;25407:9;-1:-1:-1;;;;;25389:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25475:27;;-1:-1:-1;;;25475:27:79;;;;;519:25:93;;;25372:58:79;;-1:-1:-1;25441:26:79;;-1:-1:-1;;;;;25475:5:79;:19;;;;492:18:93;;25475:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25475:27:79;;;;;;;;;;;;:::i;:::-;25440:62;;;;25519:64;25560:9;25572:10;25519:32;:64::i;6594:145::-;6654:7;6690:41;;;;;;24143:2:93;24125:21;;;24182:2;24162:18;;;24155:30;24221:29;24216:2;24201:18;;24194:57;24283:2;24268:18;;23941:351;6690:41:79;;;;;;;;;;;;;6680:52;;;;;;6673:59;;6594:145;:::o;21510:480::-;21603:52;21632:4;21639:15;21603:20;:52::i;:::-;21665:16;21684:30;21698:4;21704:9;21684:13;:30::i;:::-;21815:47;;-1:-1:-1;;;21815:47:79;;-1:-1:-1;;;;;24489:32:93;;;21815:47:79;;;24471:51:93;24538:18;;;24531:34;;;21665:49:79;;-1:-1:-1;21789:15:79;;21815:12;;;;;24444:18:93;;21815:47:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21872:47:79;;-1:-1:-1;;;21872:47:79;;;;;25000:25:93;;;21913:4:79;25041:18:93;;;25034:60;-1:-1:-1;;;;;21872:22:79;;;;;24973:18:93;;21872:47:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21929:54;21953:4;21967:14;21929:23;:54::i;:::-;21593:397;;21510:480;;;:::o;17221:4029::-;17421:14;17456:9;-1:-1:-1;;;;;17438:39:79;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17568:27;;-1:-1:-1;;;17568:27:79;;;;;519:25:93;;;17421:58:79;;-1:-1:-1;17534:26:79;;-1:-1:-1;;;;;17568:5:79;:19;;;;492:18:93;;17568:27:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17568:27:79;;;;;;;;;;;;:::i;:::-;17533:62;;;;17605:32;17640:64;17681:9;17693:10;17640:32;:64::i;:::-;17605:99;;17765:7;:25;;;17761:90;;;17799:52;;-1:-1:-1;;;17799:52:79;;;;;;;;;;;17761:90;17963:31;18011:17;:24;-1:-1:-1;;;;;17997:39:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17997:39:79;;17963:73;;18051:9;18046:128;18066:17;:24;18062:1;:28;18046:128;;;18129:17;18147:1;18129:20;;;;;;;;:::i;:::-;;;;;;;;;;;:45;;-1:-1:-1;;;18129:45:79;;18168:4;18129:45;;;311:51:93;-1:-1:-1;;;;;18129:30:79;;;;;;284:18:93;;18129:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18109:14;18124:1;18109:17;;;;;;;;:::i;:::-;;;;;;;;;;:65;18092:3;;;:::i;:::-;;;18046:128;;;-1:-1:-1;18207:34:79;;-1:-1:-1;;;18207:34:79;;18235:4;18207:34;;;311:51:93;18185:19:79;;-1:-1:-1;;;;;18207:19:79;;;;;284:18:93;;18207:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18251:70;;-1:-1:-1;;;18251:70:79;;18185:56;;-1:-1:-1;;;;;;18251:5:79;:14;;;;:70;;18266:6;;18282:4;;;;18313:7;;18251:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18359:34:79;;-1:-1:-1;;;18359:34:79;;18387:4;18359:34;;;311:51:93;-1:-1:-1;;;;;18359:19:79;;;-1:-1:-1;18359:19:79;;-1:-1:-1;284:18:93;;18359:34:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18345:48;;:11;:48;:::i;:::-;18331:62;;18408:9;18403:148;18423:17;:24;18419:1;:28;18403:148;;;18534:14;18549:1;18534:17;;;;;;;;:::i;:::-;;;;;;;18486;18504:1;18486:20;;;;;;;;:::i;:::-;;;;;;;;;;;:45;;-1:-1:-1;;;18486:45:79;;18525:4;18486:45;;;311:51:93;-1:-1:-1;;;;;18486:30:79;;;;;;284:18:93;;18486:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;;:::i;:::-;18466:14;18481:1;18466:17;;;;;;;;:::i;:::-;;;;;;;;;;:85;18449:3;;;:::i;:::-;;;18403:148;;;;18562:23;18603:4;-1:-1:-1;;;;;18588:33:79;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18562:61;;18662:17;:24;18637:14;:21;:49;18633:100;;18695:38;;-1:-1:-1;;;18695:38:79;;;;;;;;;;;18633:100;18748:9;18743:2169;18763:17;:24;18759:1;:28;18743:2169;;;18877:14;18892:1;18877:17;;;;;;;;:::i;:::-;;;;;;;18898:1;18877:22;18873:36;18901:8;18873:36;19038:17;19056:1;19038:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;18992:67:79;19000:14;19015:1;19000:17;;;;;;;;:::i;:::-;;;;;;;:25;;;-1:-1:-1;;;;;18992:67:79;;18988:153;;19084:57;;-1:-1:-1;;;19084:57:79;;;;;;;;;;;18988:153;19207:1;-1:-1:-1;;;;;19160:49:79;19168:14;19183:1;19168:17;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;19160:49:79;;19156:1746;;19229:67;19270:5;19278:14;19293:1;19278:17;;;;;;;;:::i;:::-;;;;;;;19229;19247:1;19229:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;19229:32:79;;;:67;;;;;:::i;:::-;19443:233;;;;;;;;19503:4;19443:233;;;19397:43;19443:233;;;;;;;;;;;;;;;;;19793:17;;:14;;19808:1;;19793:17;;;;;;:::i;:::-;;;;;;;19766:14;19781:1;19766:17;;;;;;;;:::i;:::-;;;;;;;;;;;:24;;:44;19911:24;19885:14;19900:1;19885:17;;;;;;;;:::i;:::-;;;;;;;:22;;;:50;;;;;;;;:::i;:::-;;19881:100;;19944:37;;-1:-1:-1;;;19944:37:79;;;;;;;;;;;19881:100;20103:5;-1:-1:-1;;;;;20103:10:79;;20135:14;20150:1;20135:17;;;;;;;;:::i;:::-;;;;;;;20174:14;20210:8;:27;;;20238:1;20210:30;;;;;;;;:::i;:::-;;;;;;;20262:8;:22;;;20285:1;20262:25;;;;;;;;:::i;:::-;;;;;;;20103:202;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20083:14;20098:1;20083:17;;;;;;;;:::i;:::-;;;;;;:222;;;;;20364:61;20388:17;20406:1;20388:20;;;;;;;;:::i;20364:61::-;20558:14;20573:1;20558:17;;;;;;;;:::i;:::-;;;;;;;:26;;;20521:17;20539:1;20521:20;;;;;;;;:::i;:::-;;;;;;:65;-1:-1:-1;;;;;20521:65:79;;;-1:-1:-1;;;;;20521:65:79;;;;;19211:1390;19156:1746;;;20612:11;-1:-1:-1;;;;;20612:23:79;;20636:17;20654:1;20636:20;;;;;;;;:::i;:::-;;;;;;;20612:45;;;;;;;;;;;;;;-1:-1:-1;;;;;329:32:93;;;;311:51;;299:2;284:18;;140:228;20612:45:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20607:295;;20837:50;;-1:-1:-1;;;20837:50:79;;;;;;;;;;;20607:295;18789:3;;;:::i;:::-;;;18743:2169;;;;21000:33;21036:11;-1:-1:-1;;;;;21036:21:79;;21058:17;21077:14;21093:9;21036:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21000:103;-1:-1:-1;21145:45:79;:11;:45;21168:16;21145:45;;;21186:3;;21145:22;:45;:::i;:::-;21117:25;:73;21113:130;;;21211:32;;-1:-1:-1;;;21211:32:79;;;;;;;;;;;21113:130;17411:3839;;;;;;;17221:4029;;;;:::o;9934:183::-;10053:14;;;10065:1;10053:14;;;;;;;;;10011:21;;10053:14;;;;;;;;;;;-1:-1:-1;10053:14:79;10044:23;;10089:21;10097:12;10089:7;:21::i;:::-;10077:6;10084:1;10077:9;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;10077:33:79;;;-1:-1:-1;;;;;10077:33:79;;;;;9934:183;;;:::o;7257:680::-;7466:34;7489:10;7466:22;:34::i;:::-;7511:9;7522:22;7559:12;7548:42;;;;;;;;;;;;:::i;:::-;7634:28;;-1:-1:-1;;;7634:28:79;;7656:4;7634:28;;;311:51:93;7510:80:79;;-1:-1:-1;7510:80:79;-1:-1:-1;7600:31:79;;-1:-1:-1;;;;;7634:13:79;;;;;284:18:93;;7634:28:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7600:62;;7695:23;7676:16;:42;7672:203;;;7734:23;7760:42;7779:23;7760:16;:42;:::i;:::-;7734:68;;7816:48;7827:3;7832:14;7848:15;7816:10;:48::i;:::-;7720:155;7672:203;7884:46;-1:-1:-1;;;;;7884:16:79;;7901:10;7913:16;7884;:46::i;:::-;7416:521;;;7257:680;;;;:::o;22257:369::-;22351:52;22380:4;22387:15;22351:20;:52::i;:::-;22478:15;22517:57;22478:15;22563:10;22517:13;:57::i;:::-;22584:35;;-1:-1:-1;;;22584:35:79;;;;;519:25:93;;;22504:70:79;;-1:-1:-1;;;;;;22584:23:79;;;;;492:18:93;;22584:35:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22341:285;22257:369;;;:::o;9204:107:80:-;9275:29;-1:-1:-1;;;;;9275:17:80;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;9285:147:79:-;9359:5;9400:12;9389:35;;;;;;;;;;;;:::i;:::-;9376:49;9285:147;-1:-1:-1;;9285:147:79:o;22759:79::-;22813:18;;-1:-1:-1;;;22813:18:79;;-1:-1:-1;;;;;329:32:93;;;22813:18:79;;;311:51:93;22813:6:79;:11;;;;284:18:93;;22813::79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8066:153;8163:7;8189:23;8199:12;8189:9;:23::i;:::-;8182:30;8066:153;-1:-1:-1;;;8066:153:79:o;23963:1066::-;24151:17;;24091:21;;24124:24;;24288:184;24308:16;24304:1;:20;24288:184;;;24375:3;-1:-1:-1;;;;;24349:29:79;24357:10;24368:1;24357:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;24349:29:79;;24345:117;;24420:4;24398:26;;24442:5;;24345:117;24326:3;;;:::i;:::-;;;24288:184;;;;24485:19;24481:542;;;24541:20;24560:1;24541:16;:20;:::i;:::-;-1:-1:-1;;;;;24529:33:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24529:33:79;;24520:42;;24576:19;24614:9;24609:237;24629:16;24625:1;:20;24609:237;;;24700:3;-1:-1:-1;;;;;24674:29:79;24682:10;24693:1;24682:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;24674:29:79;;24670:162;;24763:10;24774:1;24763:13;;;;;;;;:::i;:::-;;;;;;;24727:6;24734:11;24727:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24727:51:79;;;:19;;;;;;;;;;;:51;24800:13;;;;:::i;:::-;;;;24670:162;24647:3;;;:::i;:::-;;;24609:237;;;;24506:350;24481:542;;;24897:16;-1:-1:-1;;;;;24885:29:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24885:29:79;;24876:38;;24933:9;24928:84;24948:16;24944:1;:20;24928:84;;;24997:10;25008:1;24997:13;;;;;;;;:::i;:::-;;;;;;;24971:6;24978:1;24971:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24971:41:79;;;:9;;;;;;;;;;;:41;24966:3;;;:::i;:::-;;;24928:84;;;;24481:542;24114:915;;23963:1066;;;;:::o;7816:207:80:-;7899:7;-1:-1:-1;;7922:6:80;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:80;;7982:4;7958:30;;;311:51:93;-1:-1:-1;;;;;7958:15:80;;;;;284:18:93;;7958:30:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:80;8003:13;;4327:1454:46;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:46;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:46;;26154:2:93;5740:34:46;;;26136:21:93;26193:2;26173:18;;;26166:30;-1:-1:-1;;;26212:18:93;;;26205:44;26266:18;;5740:34:46;;;;;;;;;4428:1353;4327:1454;;;:::o;8158:167:80:-;8244:39;;-1:-1:-1;;;8244:39:80;;8268:4;8244:39;;;26507:34:93;-1:-1:-1;;;;;26577:15:93;;;26557:18;;;26550:43;8286:1:80;;8244:15;;;;;;26442:18:93;;8244:39:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:80;;8307:7;8316:1;8289:17;:29::i;1357:535:90:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:90:o;23379:461:79:-;23472:20;23516:12;:10;:12::i;:::-;23537:33;;;-1:-1:-1;;;;;26525:15:93;;;23537:33:79;;;26507:34:93;26577:15;;26557:18;;;26550:43;23537:33:79;;;;;;;;;26442:18:93;;;23537:33:79;;;23505:66;;;-1:-1:-1;;23505:66:79;;;:::i;:::-;;;;;;;;;;;;;23495:77;;;;;;23472:100;;23582:17;23617:4;-1:-1:-1;;;;;23602:30:79;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23602:60:79;;23663:12;23602:74;;;;;;;;;;;;;519:25:93;;507:2;492:18;;373:177;23602:74:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23691:48;;-1:-1:-1;;;23691:48:79;;729:10:93;717:23;;23691:48:79;;;699:42:93;23582:94:79;;-1:-1:-1;23706:4:79;;23691:36;;672:18:93;;23691:48:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23686:147;;23760:73;;-1:-1:-1;;;23760:73:79;;-1:-1:-1;;;;;26525:15:93;;;23760:73:79;;;26507:34:93;26577:15;;26557:18;;;26550:43;26442:18;;23760:73:79;26295:304:93;8425:218:80;-1:-1:-1;;;;;8503:25:80;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:80;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:80;;;;;;;;;;;8499:137;8425:218;:::o;2865:1456:46:-;2977:12;3104:4;3098:11;-1:-1:-1;;;3227:17:46;3220:93;3360:2;3356:1;3337:17;3333:25;3326:37;3440:6;3435:2;3416:17;3412:26;3405:42;4242:2;4239:1;4235:2;4216:17;4213:1;4206:5;4199;4194:51;3763:16;3756:24;3750:2;3732:16;3729:24;3725:1;3721;3715:8;3712:15;3708:46;3705:76;3505:754;3494:765;;;4287:7;4279:35;;;;-1:-1:-1;;;4279:35:46;;27944:2:93;4279:35:46;;;27926:21:93;27983:2;27963:18;;;27956:30;-1:-1:-1;;;28002:18:93;;;27995:45;28057:18;;4279:35:46;27742:339:93;752:138;-1:-1:-1;;;;;834:31:93;;824:42;;814:70;;880:1;877;870:12;895:127;956:10;951:3;947:20;944:1;937:31;987:4;984:1;977:15;1011:4;1008:1;1001:15;1027:253;1099:2;1093:9;1141:4;1129:17;;-1:-1:-1;;;;;1161:34:93;;1197:22;;;1158:62;1155:88;;;1223:18;;:::i;:::-;1259:2;1252:22;1027:253;:::o;1285:252::-;1357:2;1351:9;1399:3;1387:16;;-1:-1:-1;;;;;1418:34:93;;1454:22;;;1415:62;1412:88;;;1480:18;;:::i;1542:275::-;1613:2;1607:9;1678:2;1659:13;;-1:-1:-1;;1655:27:93;1643:40;;-1:-1:-1;;;;;1698:34:93;;1734:22;;;1695:62;1692:88;;;1760:18;;:::i;:::-;1796:2;1789:22;1542:275;;-1:-1:-1;1542:275:93:o;1822:193::-;1892:4;-1:-1:-1;;;;;1917:6:93;1914:30;1911:56;;;1947:18;;:::i;:::-;-1:-1:-1;1992:1:93;1988:14;2004:4;1984:25;;1822:193::o;2020:149::-;2094:20;;2143:1;2133:12;;2123:40;;2159:1;2156;2149:12;2123:40;2020:149;;;:::o;2174:::-;2250:20;;2279:38;2250:20;2279:38;:::i;2328:530::-;2370:5;2423:3;2416:4;2408:6;2404:17;2400:27;2390:55;;2441:1;2438;2431:12;2390:55;2477:6;2464:20;-1:-1:-1;;;;;2499:2:93;2496:26;2493:52;;;2525:18;;:::i;:::-;2569:55;2612:2;2593:13;;-1:-1:-1;;2589:27:93;2618:4;2585:38;2569:55;:::i;:::-;2649:2;2640:7;2633:19;2695:3;2688:4;2683:2;2675:6;2671:15;2667:26;2664:35;2661:55;;;2712:1;2709;2702:12;2661:55;2777:2;2770:4;2762:6;2758:17;2751:4;2742:7;2738:18;2725:55;2825:1;2800:16;;;2818:4;2796:27;2789:38;;;;2804:7;2328:530;-1:-1:-1;;;2328:530:93:o;2863:1853::-;2927:5;2980:3;2973:4;2965:6;2961:17;2957:27;2947:55;;2998:1;2995;2988:12;2947:55;3034:6;3021:20;3060:4;3084:70;3100:53;3150:2;3100:53;:::i;:::-;3084:70;:::i;:::-;3188:15;;;3274:1;3270:10;;;;3258:23;;3254:32;;;3219:12;;;;3298:15;;;3295:35;;;3326:1;3323;3316:12;3295:35;3362:2;3354:6;3350:15;3374:1313;3390:6;3385:3;3382:15;3374:1313;;;3476:3;3463:17;-1:-1:-1;;;;;3553:2:93;3540:11;3537:19;3534:109;;;3597:1;3626:2;3622;3615:14;3534:109;3666:24;;;;3713:4;3741:12;;;-1:-1:-1;;3737:26:93;3733:35;-1:-1:-1;3730:125:93;;;3809:1;3838:2;3834;3827:14;3730:125;3881:22;;:::i;:::-;3951:2;3947;3943:11;3930:25;3923:5;3916:40;3979:2;4017:37;4050:2;4046;4042:11;4017:37;:::i;:::-;4012:2;4005:5;4001:14;3994:61;4078:2;4116:39;4151:2;4147;4143:11;4116:39;:::i;:::-;4111:2;4104:5;4100:14;4093:63;4180:3;4169:14;;4219:40;4254:3;4250:2;4246:12;4219:40;:::i;:::-;4203:14;;;4196:64;4284:3;4337:12;;;4324:26;4307:15;;;4300:51;4393:11;;;4380:25;;4421:16;;;4418:109;;;4479:1;4468:12;;4509:3;4504;4497:16;4418:109;4564:49;4609:3;4604:2;4593:8;4589:2;4585:17;4581:26;4564:49;:::i;:::-;4547:15;;;4540:74;-1:-1:-1;4627:18:93;;-1:-1:-1;;;4665:12:93;;;;3407;;3374:1313;;;-1:-1:-1;4705:5:93;2863:1853;-1:-1:-1;;;;;;2863:1853:93:o;4721:672::-;4775:5;4828:3;4821:4;4813:6;4809:17;4805:27;4795:55;;4846:1;4843;4836:12;4795:55;4882:6;4869:20;4908:4;4932:70;4948:53;4998:2;4948:53;:::i;4932:70::-;5036:15;;;5122:1;5118:10;;;;5106:23;;5102:32;;;5067:12;;;;5146:15;;;5143:35;;;5174:1;5171;5164:12;5143:35;5210:2;5202:6;5198:15;5222:142;5238:6;5233:3;5230:15;5222:142;;;5304:17;;5292:30;;5342:12;;;;5255;;5222:142;;5398:750;5453:5;5501:4;5489:9;5484:3;5480:19;5476:30;5473:50;;;5519:1;5516;5509:12;5473:50;5552:4;5546:11;5596:4;5588:6;5584:17;-1:-1:-1;;;;;5688:6:93;5676:10;5673:22;5668:2;5656:10;5653:18;5650:46;5647:72;;;5699:18;;:::i;:::-;5741:10;5735:4;5728:24;5770:6;5761:15;;5812:9;5799:23;5785:37;;5845:2;5837:6;5834:14;5831:34;;;5861:1;5858;5851:12;5831:34;5889:57;5942:3;5933:6;5922:9;5918:22;5889:57;:::i;:::-;5881:6;5874:73;6000:2;5989:9;5985:18;5972:32;5956:48;;6029:2;6019:8;6016:16;6013:36;;;6045:1;6042;6035:12;6013:36;;6082:59;6137:3;6126:8;6115:9;6111:24;6082:59;:::i;:::-;6077:2;6069:6;6065:15;6058:84;;;5398:750;;;;:::o;6153:860::-;6335:6;6343;6351;6359;6412:3;6400:9;6391:7;6387:23;6383:33;6380:53;;;6429:1;6426;6419:12;6380:53;6468:9;6455:23;6487:38;6519:5;6487:38;:::i;:::-;6544:5;-1:-1:-1;6600:2:93;6585:18;;6572:32;-1:-1:-1;;;;;6653:14:93;;;6650:34;;;6680:1;6677;6670:12;6650:34;6703:71;6766:7;6757:6;6746:9;6742:22;6703:71;:::i;:::-;6693:81;;6827:2;6816:9;6812:18;6799:32;6783:48;;6856:2;6846:8;6843:16;6840:36;;;6872:1;6869;6862:12;6840:36;;6895:61;6948:7;6937:8;6926:9;6922:24;6895:61;:::i;:::-;6153:860;;;;-1:-1:-1;6885:71:93;;7003:2;6988:18;6975:32;;-1:-1:-1;;;6153:860:93:o;7018:607::-;7113:6;7121;7129;7182:2;7170:9;7161:7;7157:23;7153:32;7150:52;;;7198:1;7195;7188:12;7150:52;7234:9;7221:23;7211:33;;7295:2;7284:9;7280:18;7267:32;-1:-1:-1;;;;;7359:2:93;7351:6;7348:14;7345:34;;;7375:1;7372;7365:12;7345:34;7398:49;7439:7;7430:6;7419:9;7415:22;7398:49;:::i;:::-;7388:59;;7500:2;7489:9;7485:18;7472:32;7456:48;;7529:2;7519:8;7516:16;7513:36;;;7545:1;7542;7535:12;7513:36;;7568:51;7611:7;7600:8;7589:9;7585:24;7568:51;:::i;:::-;7558:61;;;7018:607;;;;;:::o;7630:320::-;7698:6;7751:2;7739:9;7730:7;7726:23;7722:32;7719:52;;;7767:1;7764;7757:12;7719:52;7807:9;7794:23;-1:-1:-1;;;;;7832:6:93;7829:30;7826:50;;;7872:1;7869;7862:12;7826:50;7895:49;7936:7;7927:6;7916:9;7912:22;7895:49;:::i;7955:254::-;8014:6;8067:2;8055:9;8046:7;8042:23;8038:32;8035:52;;;8083:1;8080;8073:12;8035:52;8122:9;8109:23;8141:38;8173:5;8141:38;:::i;8214:468::-;8274:3;8312:5;8306:12;8339:6;8334:3;8327:19;8365:4;8394:2;8389:3;8385:12;8378:19;;8431:2;8424:5;8420:14;8452:1;8462:195;8476:6;8473:1;8470:13;8462:195;;;8541:13;;-1:-1:-1;;;;;8537:39:93;8525:52;;8597:12;;;;8632:15;;;;8573:1;8491:9;8462:195;;;-1:-1:-1;8673:3:93;;8214:468;-1:-1:-1;;;;;8214:468:93:o;8687:283::-;8881:2;8870:9;8863:21;8844:4;8901:63;8960:2;8949:9;8945:18;8937:6;8901:63;:::i;9445:485::-;9537:6;9545;9553;9606:2;9594:9;9585:7;9581:23;9577:32;9574:52;;;9622:1;9619;9612:12;9574:52;9661:9;9648:23;9680:38;9712:5;9680:38;:::i;:::-;9737:5;-1:-1:-1;9794:2:93;9779:18;;9766:32;9807:40;9766:32;9807:40;:::i;:::-;9445:485;;9866:7;;-1:-1:-1;;;9920:2:93;9905:18;;;;9892:32;;9445:485::o;9935:118::-;10021:5;10014:13;10007:21;10000:5;9997:32;9987:60;;10043:1;10040;10033:12;10058:128;10123:20;;10152:28;10123:20;10152:28;:::i;10191:2347::-;10407:6;10415;10423;10431;10484:3;10472:9;10463:7;10459:23;10455:33;10452:53;;;10501:1;10498;10491:12;10452:53;10540:9;10527:23;10559:38;10591:5;10559:38;:::i;:::-;10616:5;-1:-1:-1;10640:2:93;10678:18;;;10665:32;-1:-1:-1;;;;;10746:14:93;;;10743:34;;;10773:1;10770;10763:12;10743:34;10796:71;10859:7;10850:6;10839:9;10835:22;10796:71;:::i;:::-;10786:81;;10920:2;10909:9;10905:18;10892:32;10876:48;;10949:2;10939:8;10936:16;10933:36;;;10965:1;10962;10955:12;10933:36;10988:61;11041:7;11030:8;11019:9;11015:24;10988:61;:::i;:::-;10978:71;;11102:2;11091:9;11087:18;11074:32;11058:48;;11131:2;11121:8;11118:16;11115:36;;;11147:1;11144;11137:12;11115:36;11170:24;;;;11228:3;11210:16;;;11206:26;11203:46;;;11245:1;11242;11235:12;11203:46;11273:22;;:::i;:::-;11333:2;11320:16;11361:2;11351:8;11348:16;11345:36;;;11377:1;11374;11367:12;11345:36;11400:17;;11448:4;11440:13;;11436:27;-1:-1:-1;11426:55:93;;11477:1;11474;11467:12;11426:55;11513:2;11500:16;11536:70;11552:53;11602:2;11552:53;:::i;11536:70::-;11640:15;;;11722:1;11718:10;;;;11710:19;;11706:28;;;11671:12;;;;11746:19;;;11743:39;;;11778:1;11775;11768:12;11743:39;11802:11;;;;11822:230;11838:6;11833:3;11830:15;11822:230;;;11920:3;11907:17;11937:40;11969:7;11937:40;:::i;:::-;11990:20;;11855:12;;;;12030;;;;11822:230;;;12061:22;;-1:-1:-1;;;12121:11:93;;;12108:25;12145:16;;;12142:36;;;12174:1;12171;12164:12;12142:36;12212:56;12260:7;12249:8;12245:2;12241:17;12212:56;:::i;:::-;12207:2;12198:7;12194:16;12187:82;;12315:2;12311;12307:11;12294:25;12278:41;;12344:2;12334:8;12331:16;12328:36;;;12360:1;12357;12350:12;12328:36;12398:44;12434:7;12423:8;12419:2;12415:17;12398:44;:::i;:::-;12393:2;12384:7;12380:16;12373:70;12477:28;12501:2;12497;12493:11;12477:28;:::i;:::-;12472:2;12459:16;;12452:54;10191:2347;;;;-1:-1:-1;10191:2347:93;;-1:-1:-1;;;;;10191:2347:93:o;12543:750::-;12647:6;12655;12663;12671;12724:3;12712:9;12703:7;12699:23;12695:33;12692:53;;;12741:1;12738;12731:12;12692:53;12777:9;12764:23;12754:33;;12837:2;12826:9;12822:18;12809:32;12850:38;12882:5;12850:38;:::i;:::-;12907:5;-1:-1:-1;12963:2:93;12948:18;;12935:32;-1:-1:-1;;;;;13016:14:93;;;13013:34;;;13043:1;13040;13033:12;13013:34;13066:49;13107:7;13098:6;13087:9;13083:22;13066:49;:::i;:::-;13056:59;;13168:2;13157:9;13153:18;13140:32;13124:48;;13197:2;13187:8;13184:16;13181:36;;;13213:1;13210;13203:12;13181:36;;13236:51;13279:7;13268:8;13257:9;13253:24;13236:51;:::i;:::-;13226:61;;;12543:750;;;;;;;:::o;13298:417::-;13381:6;13389;13442:2;13430:9;13421:7;13417:23;13413:32;13410:52;;;13458:1;13455;13448:12;13410:52;13497:9;13484:23;13516:38;13548:5;13516:38;:::i;:::-;13573:5;-1:-1:-1;13630:2:93;13615:18;;13602:32;13643:40;13602:32;13643:40;:::i;:::-;13702:7;13692:17;;;13298:417;;;;;:::o;13943:539::-;14029:6;14037;14090:2;14078:9;14069:7;14065:23;14061:32;14058:52;;;14106:1;14103;14096:12;14058:52;14146:9;14133:23;-1:-1:-1;;;;;14216:2:93;14208:6;14205:14;14202:34;;;14232:1;14229;14222:12;14202:34;14255:49;14296:7;14287:6;14276:9;14272:22;14255:49;:::i;:::-;14245:59;;14357:2;14346:9;14342:18;14329:32;14313:48;;14386:2;14376:8;14373:16;14370:36;;;14402:1;14399;14392:12;14370:36;;14425:51;14468:7;14457:8;14446:9;14442:24;14425:51;:::i;:::-;14415:61;;;13943:539;;;;;:::o;14711:184::-;14781:6;14834:2;14822:9;14813:7;14809:23;14805:32;14802:52;;;14850:1;14847;14840:12;14802:52;-1:-1:-1;14873:16:93;;14711:184;-1:-1:-1;14711:184:93:o;14900:279::-;14991:6;15044:2;15032:9;15023:7;15019:23;15015:32;15012:52;;;15060:1;15057;15050:12;15012:52;15092:9;15086:16;15111:38;15143:5;15111:38;:::i;15184:669::-;15249:5;15302:3;15295:4;15287:6;15283:17;15279:27;15269:55;;15320:1;15317;15310:12;15269:55;15349:6;15343:13;15375:4;15399:70;15415:53;15465:2;15415:53;:::i;15399:70::-;15503:15;;;15589:1;15585:10;;;;15573:23;;15569:32;;;15534:12;;;;15613:15;;;15610:35;;;15641:1;15638;15631:12;15610:35;15677:2;15669:6;15665:15;15689:135;15705:6;15700:3;15697:15;15689:135;;;15771:10;;15759:23;;15802:12;;;;15722;;15689:135;;15858:1303;16012:6;16020;16028;16081:2;16069:9;16060:7;16056:23;16052:32;16049:52;;;16097:1;16094;16087:12;16049:52;16130:9;16124:16;-1:-1:-1;;;;;16200:2:93;16192:6;16189:14;16186:34;;;16216:1;16213;16206:12;16186:34;16254:6;16243:9;16239:22;16229:32;;16299:7;16292:4;16288:2;16284:13;16280:27;16270:55;;16321:1;16318;16311:12;16270:55;16350:2;16344:9;16372:4;16396:70;16412:53;16462:2;16412:53;:::i;16396:70::-;16500:15;;;16582:1;16578:10;;;;16570:19;;16566:28;;;16531:12;;;;16606:19;;;16603:39;;;16638:1;16635;16628:12;16603:39;16662:11;;;;16682:217;16698:6;16693:3;16690:15;16682:217;;;16771:3;16765:10;16788:38;16820:5;16788:38;:::i;:::-;16839:18;;16715:12;;;;16877;;;;16682:217;;;16954:18;;;16948:25;16918:5;;-1:-1:-1;16948:25:93;;-1:-1:-1;;;16985:16:93;;;16982:36;;;17014:1;17011;17004:12;16982:36;;17037:74;17103:7;17092:8;17081:9;17077:24;17037:74;:::i;:::-;17027:84;;;17151:2;17140:9;17136:18;17130:25;17120:35;;15858:1303;;;;;:::o;17166:127::-;17227:10;17222:3;17218:20;17215:1;17208:31;17258:4;17255:1;17248:15;17282:4;17279:1;17272:15;17298:127;17359:10;17354:3;17350:20;17347:1;17340:31;17390:4;17387:1;17380:15;17414:4;17411:1;17404:15;17430:135;17469:3;17490:17;;;17487:43;;17510:18;;:::i;:::-;-1:-1:-1;17557:1:93;17546:13;;17430:135::o;17570:127::-;17631:10;17626:3;17622:20;17619:1;17612:31;17662:4;17659:1;17652:15;17686:4;17683:1;17676:15;17702:422;17743:3;17781:5;17775:12;17808:6;17803:3;17796:19;17833:1;17843:162;17857:6;17854:1;17851:13;17843:162;;;17919:4;17975:13;;;17971:22;;17965:29;17947:11;;;17943:20;;17936:59;17872:12;17843:162;;;17847:3;18050:1;18043:4;18034:6;18029:3;18025:16;18021:27;18014:38;18113:4;18106:2;18102:7;18097:2;18089:6;18085:15;18081:29;18076:3;18072:39;18068:50;18061:57;;;17702:422;;;;:::o;18489:1274::-;18826:3;18815:9;18808:22;18873:6;18867:13;18861:3;18850:9;18846:19;18839:42;18789:4;18928;18920:6;18916:17;18910:24;18970:1;18956:12;18953:19;18943:150;;19015:10;19010:3;19006:20;19003:1;18996:31;19050:4;19047:1;19040:15;19078:4;19075:1;19068:15;18943:150;19124:3;19109:19;;19102:41;19202:4;19190:17;;19184:24;-1:-1:-1;;;;;19180:50:93;19174:3;19159:19;;19152:79;19280:4;19268:17;;19262:24;19295:72;19362:3;19347:19;;19262:24;-1:-1:-1;;;;;97:31:93;85:44;;14:121;19295:72;;19422:4;19414:6;19410:17;19404:24;19398:3;19387:9;19383:19;19376:53;19478:4;19470:6;19466:17;19460:24;19521:4;19515:3;19504:9;19500:19;19493:33;19543:53;19591:3;19580:9;19576:19;19560:14;19543:53;:::i;:::-;19535:61;;;19605:62;19661:4;19650:9;19646:20;19638:6;18251:12;;-1:-1:-1;;;;;18247:21:93;;;18235:34;;18332:4;18321:16;;;18315:23;18308:31;18301:39;18285:14;;;18278:63;18394:4;18383:16;;;18377:23;18373:32;;;18357:14;;;18350:56;18469:4;18458:16;;;18452:23;18445:31;18438:39;18422:14;;18415:63;18129:355;19605:62;19698:4;19683:20;;19676:36;;;;19743:4;19728:20;19721:36;18489:1274;;-1:-1:-1;;18489:1274:93:o;19957:435::-;20010:3;20048:5;20042:12;20075:6;20070:3;20063:19;20101:4;20130:2;20125:3;20121:12;20114:19;;20167:2;20160:5;20156:14;20188:1;20198:169;20212:6;20209:1;20206:13;20198:169;;;20273:13;;20261:26;;20307:12;;;;20342:15;;;;20234:1;20227:9;20198:169;;20397:403;20632:6;20621:9;20614:25;20675:2;20670;20659:9;20655:18;20648:30;20595:4;20695:56;20747:2;20736:9;20732:18;20724:6;20695:56;:::i;:::-;20687:64;;20787:6;20782:2;20771:9;20767:18;20760:34;20397:403;;;;;;:::o;21013:1069::-;21144:12;;21110:4;21165:17;;;21231:19;;21101:14;;;21259:20;;;21071:3;;21329:4;;21356:21;;;;21306:3;21297:13;;;21071:3;21405:201;21419:6;21416:1;21413:13;21405:201;;;21486:13;;-1:-1:-1;;;;;21482:39:93;21468:54;;21581:15;;;;21544:14;;;;21518:1;21434:9;21405:201;;;21409:3;;21654:2;21647:5;21643:14;21637:21;21615:43;;21699:3;21692:5;21688:15;21683:2;21678:3;21674:12;21667:37;21727:51;21772:5;21756:14;21727:51;:::i;:::-;21713:65;;;;21826:4;21819:5;21815:16;21809:23;21876:3;21868:6;21864:16;21857:4;21852:3;21848:14;21841:40;21904;21937:6;21921:14;21904:40;:::i;:::-;21890:54;;;21992:4;21985:5;21981:16;21975:23;22007:47;22048:4;22043:3;22039:14;22023;9227:13;9220:21;9208:34;;9157:91;22007:47;-1:-1:-1;22070:6:93;21013:1069;-1:-1:-1;;;21013:1069:93:o;22087:555::-;22350:25;;;-1:-1:-1;;;;;22449:15:93;;;22444:2;22429:18;;22422:43;22501:15;;22496:2;22481:18;;22474:43;22553:3;22548:2;22533:18;;22526:31;;;22331:4;;22574:62;;22616:19;;22608:6;22574:62;:::i;22647:128::-;22714:9;;;22735:11;;;22732:37;;;22749:18;;:::i;22780:599::-;23095:2;23084:9;23077:21;23058:4;23121:63;23180:2;23169:9;23165:18;23157:6;23121:63;:::i;:::-;23232:9;23224:6;23220:22;23215:2;23204:9;23200:18;23193:50;23260:44;23297:6;23289;23260:44;:::i;:::-;23252:52;;;23369:1;23365;23360:3;23356:11;23352:19;23344:6;23340:32;23335:2;23324:9;23320:18;23313:60;22780:599;;;;;;:::o;23384:422::-;23486:6;23494;23547:2;23535:9;23526:7;23522:23;23518:32;23515:52;;;23563:1;23560;23553:12;23515:52;23595:9;23589:16;23614:38;23646:5;23614:38;:::i;:::-;23721:2;23706:18;;23700:25;23671:5;;-1:-1:-1;23734:40:93;23700:25;23734:40;:::i;23811:125::-;23876:9;;;23897:10;;;23894:36;;;23910:18;;:::i;24576:245::-;24643:6;24696:2;24684:9;24675:7;24671:23;24667:32;24664:52;;;24712:1;24709;24702:12;24664:52;24744:9;24738:16;24763:28;24785:5;24763:28;:::i;26604:369::-;26801:6;26790:9;26783:25;26858:6;26851:14;26844:22;26839:2;26828:9;26824:18;26817:50;26903:2;26898;26887:9;26883:18;26876:30;26764:4;26923:44;26963:2;26952:9;26948:18;26940:6;26923:44;:::i;:::-;26915:52;26604:369;-1:-1:-1;;;;;26604:369:93:o;27259:280::-;27328:6;27381:2;27369:9;27360:7;27356:23;27352:32;27349:52;;;27397:1;27394;27387:12;27349:52;27429:9;27423:16;27479:10;27472:5;27468:22;27461:5;27458:33;27448:61;;27505:1;27502;27495:12\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"36690\": [\n {\n \"start\": 749,\n \"length\": 32\n },\n {\n \"start\": 1067,\n \"length\": 32\n },\n {\n \"start\": 1777,\n \"length\": 32\n },\n {\n \"start\": 2142,\n \"length\": 32\n },\n {\n \"start\": 2381,\n \"length\": 32\n },\n {\n \"start\": 2866,\n \"length\": 32\n },\n {\n \"start\": 3423,\n \"length\": 32\n },\n {\n \"start\": 3525,\n \"length\": 32\n },\n {\n \"start\": 4356,\n \"length\": 32\n },\n {\n \"start\": 4967,\n \"length\": 32\n },\n {\n \"start\": 5527,\n \"length\": 32\n },\n {\n \"start\": 6326,\n \"length\": 32\n },\n {\n \"start\": 6610,\n \"length\": 32\n }\n ],\n \"36694\": [\n {\n \"start\": 310,\n \"length\": 32\n },\n {\n \"start\": 7902,\n \"length\": 32\n }\n ],\n \"36697\": [\n {\n \"start\": 691,\n \"length\": 32\n },\n {\n \"start\": 3709,\n \"length\": 32\n },\n {\n \"start\": 7300,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"EXACT_TOKENS_IN_FOR_BPT_OUT()\": \"0e222e52\",\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"balancerSlippage()\": \"f7e69b16\",\n \"claimRewards(address)\": \"ef5cfb8c\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\": \"97194b13\",\n \"getExpectedTokens(address)\": \"7906afbf\",\n \"identifier()\": \"7998a1c4\",\n \"isDebt()\": \"89353a09\",\n \"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\": \"5c14acdb\",\n \"minter()\": \"07546172\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"stakeBPT(address,address,uint256)\": \"8f210a6a\",\n \"unstakeBPT(address,address,uint256)\": \"d2e85806\",\n \"vault()\": \"fbfa77cf\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_vault\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_minter\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"_balancerSlippage\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"bpt\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"liquidityGauge\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___InternalBalancesNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___InvalidConstructorSlippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___LengthMismatch\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BalancerPoolAdaptor___WrongSwapKind\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"EXACT_TOKENS_IN_FOR_BPT_OUT\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"_adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"_adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"_adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"balancerSlippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"gauge\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"claimRewards\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"targetBpt\\\",\\\"type\\\":\\\"address\\\"},{\\\"components\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"poolId\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"internalType\\\":\\\"enum IVault.SwapKind\\\",\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"uint8\\\"},{\\\"internalType\\\":\\\"contract IAsset\\\",\\\"name\\\":\\\"assetIn\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"contract IAsset\\\",\\\"name\\\":\\\"assetOut\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amount\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"userData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"internalType\\\":\\\"struct IVault.SingleSwap[]\\\",\\\"name\\\":\\\"swapsAfterExit\\\",\\\"type\\\":\\\"tuple[]\\\"},{\\\"components\\\":[{\\\"internalType\\\":\\\"uint256[]\\\",\\\"name\\\":\\\"minAmountsForSwaps\\\",\\\"type\\\":\\\"uint256[]\\\"},{\\\"internalType\\\":\\\"uint256[]\\\",\\\"name\\\":\\\"swapDeadlines\\\",\\\"type\\\":\\\"uint256[]\\\"}],\\\"internalType\\\":\\\"struct BalancerPoolAdaptor.SwapData\\\",\\\"name\\\":\\\"swapData\\\",\\\"type\\\":\\\"tuple\\\"},{\\\"components\\\":[{\\\"internalType\\\":\\\"contract IAsset[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"},{\\\"internalType\\\":\\\"uint256[]\\\",\\\"name\\\":\\\"minAmountsOut\\\",\\\"type\\\":\\\"uint256[]\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"userData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"toInternalBalance\\\",\\\"type\\\":\\\"bool\\\"}],\\\"internalType\\\":\\\"struct IVault.ExitPoolRequest\\\",\\\"name\\\":\\\"request\\\",\\\"type\\\":\\\"tuple\\\"}],\\\"name\\\":\\\"exitPool\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"targetBpt\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"getExpectedTokens\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"expectedTokens\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"targetBpt\\\",\\\"type\\\":\\\"address\\\"},{\\\"components\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"poolId\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"internalType\\\":\\\"enum IVault.SwapKind\\\",\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"uint8\\\"},{\\\"internalType\\\":\\\"contract IAsset\\\",\\\"name\\\":\\\"assetIn\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"contract IAsset\\\",\\\"name\\\":\\\"assetOut\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amount\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"userData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"internalType\\\":\\\"struct IVault.SingleSwap[]\\\",\\\"name\\\":\\\"swapsBeforeJoin\\\",\\\"type\\\":\\\"tuple[]\\\"},{\\\"components\\\":[{\\\"internalType\\\":\\\"uint256[]\\\",\\\"name\\\":\\\"minAmountsForSwaps\\\",\\\"type\\\":\\\"uint256[]\\\"},{\\\"internalType\\\":\\\"uint256[]\\\",\\\"name\\\":\\\"swapDeadlines\\\",\\\"type\\\":\\\"uint256[]\\\"}],\\\"internalType\\\":\\\"struct BalancerPoolAdaptor.SwapData\\\",\\\"name\\\":\\\"swapData\\\",\\\"type\\\":\\\"tuple\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"minimumBpt\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"joinPool\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"minter\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IBalancerMinter\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"_bpt\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_liquidityGauge\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"_amountIn\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"stakeBPT\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"_bpt\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_liquidityGauge\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"_amountOut\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"unstakeBPT\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"vault\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IVault\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"_amountBPTToSend\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_recipient\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"_adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"_adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"0xEinCodes and CrispyMangoes\\\",\\\"errors\\\":{\\\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch()\\\":[{\\\"details\\\":\\\"Swap information passed to `joinPool` and `exitPool` MUST line up with the expected tokens array. Example: BB A USD has 4 constituents BB A DAI, BB A USDT, BB A USDC, BB A USD but the pool has pre-minted BPTs in its tokens array. So the expected tokens array will only contain the first 3 constituents. The swap data must be in the following order. 0 - Swap data to swap DAI for BB A DAI. 1 - Swap data to swap USDT for BB A USDT. 2 - Swap data to swap USDC for BB A USDC. If the swap data is not in the order above, or tries swapping using tokens that are NOT in the BPT, the call will revert with the below error.\\\"}]},\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"assetOf(bytes)\\\":{\\\"params\\\":{\\\"_adaptorData\\\":\\\"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\\\"},\\\"returns\\\":{\\\"_0\\\":\\\"bpt for Cellar's respective balancer pool position\\\"}},\\\"assetsUsed(bytes)\\\":{\\\"details\\\":\\\"all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)\\\",\\\"params\\\":{\\\"_adaptorData\\\":\\\"specified bpt of interest\\\"},\\\"returns\\\":{\\\"assets\\\":\\\"for Cellar's respective balancer pool position\\\"}},\\\"balanceOf(bytes)\\\":{\\\"params\\\":{\\\"_adaptorData\\\":\\\"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\\\"},\\\"returns\\\":{\\\"_0\\\":\\\"total balance of bpt for Cellar, including liquid bpt and staked bpt\\\"}},\\\"claimRewards(address)\\\":{\\\"details\\\":\\\"rewards are only accrued for staked positions\\\"},\\\"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\\\":{\\\"details\\\":\\\"The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.`swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to swap BB A DAI.Max Available logic IS NOT supported.\\\"},\\\"getExpectedTokens(address)\\\":{\\\"details\\\":\\\"This function is NOT used by the adaptor, but could be used by strategists when formulating Balancer rebalances.\\\"},\\\"identifier()\\\":{\\\"returns\\\":{\\\"_0\\\":\\\"encoded adaptor identifier\\\"}},\\\"isDebt()\\\":{\\\"returns\\\":{\\\"_0\\\":\\\"whether adaptor returns debt or not\\\"}},\\\"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\\\":{\\\"details\\\":\\\"`swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.Max Available logic IS supported.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}},\\\"stakeBPT(address,address,uint256)\\\":{\\\"details\\\":\\\"Interface custom as Balancer/Curve do not provide for liquidityGauges.\\\",\\\"params\\\":{\\\"_amountIn\\\":\\\"number of BPTs to stake\\\",\\\"_bpt\\\":\\\"address of BPTs to stake\\\"}},\\\"unstakeBPT(address,address,uint256)\\\":{\\\"details\\\":\\\"Interface custom as Balancer/Curve do not provide for liquidityGauges.\\\",\\\"params\\\":{\\\"_amountOut\\\":\\\"number of BPTs to unstake\\\",\\\"_bpt\\\":\\\"address of BPTs to unstake\\\"}},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"details\\\":\\\"See `balanceOf`.\\\"}},\\\"title\\\":\\\"Balancer Pool Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked(address,address)\\\":[{\\\"notice\\\":\\\"Tried using a bpt and/or liquidityGauge that is not setup as a position.\\\"}],\\\"BalancerPoolAdaptor___InternalBalancesNotSupported()\\\":[{\\\"notice\\\":\\\"Provided swap information tried to work with internal balances.\\\"}],\\\"BalancerPoolAdaptor___InvalidConstructorSlippage()\\\":[{\\\"notice\\\":\\\"Constructor param for slippage too high\\\"}],\\\"BalancerPoolAdaptor___LengthMismatch()\\\":[{\\\"notice\\\":\\\"Provided swap array length differs from expected tokens array length.\\\"}],\\\"BalancerPoolAdaptor___Slippage()\\\":[{\\\"notice\\\":\\\"Attempted balancer pool joins, exits, staking, unstaking, etc. with bad slippage\\\"}],\\\"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch()\\\":[{\\\"notice\\\":\\\"Provided swap information does not match expected tokens array.\\\"}],\\\"BalancerPoolAdaptor___UnsupportedTokenNotSwapped()\\\":[{\\\"notice\\\":\\\"Provided swap information chose to keep an asset that is not supported for pricing.\\\"}],\\\"BalancerPoolAdaptor___WrongSwapKind()\\\":[{\\\"notice\\\":\\\"Provided swap information with wrong swap kind.\\\"}],\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"EXACT_TOKENS_IN_FOR_BPT_OUT()\\\":{\\\"notice\\\":\\\"The enum value needed to specify an Exact Tokens in for BPT out join.\\\"},\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions underlying assets.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Calculates the Cellar's balance of the positions creditAsset, a specific bpt.\\\"},\\\"balancerSlippage()\\\":{\\\"notice\\\":\\\"Number between 0.9e4, and 1e4 representing the amount of slippage that can be tolerated when entering/exiting a pool. - 0.90e4: 10% slippage - 0.95e4: 5% slippage\\\"},\\\"claimRewards(address)\\\":{\\\"notice\\\":\\\"claim rewards ($BAL) from LP position\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"User deposits are NOT allowed into this position.\\\"},\\\"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\\\":{\\\"notice\\\":\\\"Allows strategists to exit Balancer pools using any exit.\\\"},\\\"getExpectedTokens(address)\\\":{\\\"notice\\\":\\\"Returns the expected tokens array for a given `targetBpt`.\\\"},\\\"identifier()\\\":{\\\"notice\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor returns collateral, and not debt.\\\"},\\\"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins.\\\"},\\\"minter()\\\":{\\\"notice\\\":\\\"The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for CellarFor mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"stakeBPT(address,address,uint256)\\\":{\\\"notice\\\":\\\"stake (deposit) BPTs into respective pool gauge\\\"},\\\"unstakeBPT(address,address,uint256)\\\":{\\\"notice\\\":\\\"unstake (withdraw) BPT from respective pool gauge\\\"},\\\"vault()\\\":{\\\"notice\\\":\\\"The Balancer Vault contractFor mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"If a user withdraw needs more BPTs than what is in the Cellar's wallet, then the Cellar will unstake BPTs from the gauge.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"Accounts for BPTs in the Cellar's wallet, and staked in gauge.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Weighted, Stable, and Linear Balancer Pools (BPs).\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\\\":\\\"BalancerPoolAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/forge-std/lib/ds-test/src/test.sol\\\":{\\\"keccak256\\\":\\\"0xb39cd1d5220cb474947b131e15a4538334b7e886af244b440ae5c9c6bba96a54\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://3101520221449ac0070bda3881311a71d9aa87e5210765e875246922cb5cb5f5\\\",\\\"dweb:/ipfs/Qmbg6kAHNoG7ox9N9Xqd9Ere2H2XixMFWFqvyPwFCzB3Gr\\\"]},\\\"lib/forge-std/src/Script.sol\\\":{\\\"keccak256\\\":\\\"0x9d09c1e55cd508d3376cff9961625d51d73f8ce075ec1e9deed41408a4556e00\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8880c5551daf337ab91665a9ce593df67a9eb11b0bee820f631d324d2fdd3a8b\\\",\\\"dweb:/ipfs/QmNpvSBGnS9Jr6Swd6XKsijG59a4yjYemWCFwprjKFkpNC\\\"]},\\\"lib/forge-std/src/StdJson.sol\\\":{\\\"keccak256\\\":\\\"0x1297a1cc393bc8163ccf143e5335536e78cb25ac24a4f6dfdb25f5746dd4827e\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://945ccffad9fc09d2aa0ac200a80dcfa2f491dba8680fc9c3d3d450d891284b87\\\",\\\"dweb:/ipfs/QmYSfFb1L6LN1ZB9KWzZqxt2iAbpuFDskBcU1Bz4RiyuQ5\\\"]},\\\"lib/forge-std/src/Test.sol\\\":{\\\"keccak256\\\":\\\"0x6c9cbd51234372b66bf7c146870edf0855770c46e960a8fae8f354ddf382876b\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://fd0ff1f449294dd1447b9d483c52d78e137d8cac518646e76df9fdd4d185d6c2\\\",\\\"dweb:/ipfs/QmS3JP4vKgvAWo8Tc7zVrGxbdR7t37ayk1mTHN3seD6UAZ\\\"]},\\\"lib/forge-std/src/Vm.sol\\\":{\\\"keccak256\\\":\\\"0x1a5767028a0c3985e991456fc9650055e28b01b787c56b11f66ac30498a153ab\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f86887212eacca450a15a8a5bf9fe83fd91a2ba623df8e9c32c75a31824c8ea2\\\",\\\"dweb:/ipfs/QmTUHBNdZwntgjbFZne7fY9ZJLNGYWaq3uWfGk6FyqdAkB\\\"]},\\\"lib/forge-std/src/console.sol\\\":{\\\"keccak256\\\":\\\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\\\",\\\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\\\"]},\\\"lib/forge-std/src/console2.sol\\\":{\\\"keccak256\\\":\\\"0xbeb823fcdb356244a83aaccdf828ad019ecc1ffaa3dff18e624fc6d5714ea671\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://4cbe9400340e5f9ec55e2aff3bad1c15fa3afbbe37e80800e6f3fed2ad26854f\\\",\\\"dweb:/ipfs/QmdJBABsuXkvWxVzEyGXsTE3vyfBPXDdw5xvvtUz3JeoYW\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/Balancer/IAsset.sol\\\":{\\\"keccak256\\\":\\\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\\\",\\\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\\\"]},\\\"src/interfaces/external/Balancer/IAuthorizer.sol\\\":{\\\"keccak256\\\":\\\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\\\",\\\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\\\"]},\\\"src/interfaces/external/Balancer/IBalancerQueries.sol\\\":{\\\"keccak256\\\":\\\"0xd2a015dec53a45644f66938705bbf5d2d349dbab8eaa7e8aea07fc7575845315\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://21f696084aa156ec1a76dbe6309064eba1dbf5e0b918f4b68e3eec23b073b5e4\\\",\\\"dweb:/ipfs/Qmda3i1QwsbR2VEd27K8Cu9Roqc1oyev6C5kcMJX2iUtzw\\\"]},\\\"src/interfaces/external/Balancer/IFlashLoanRecipient.sol\\\":{\\\"keccak256\\\":\\\"0xcf36a2692ab694e72a4ab32dd114ff091f678dc1e3edf2622f9c900a7919567e\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://9eeeeda4d19a3c105947a3ec85cb83a2c7c4fd17089a06f84caa5298a9698351\\\",\\\"dweb:/ipfs/QmRoDsWbrDwrz1M32j67WqYSEqRy5xKTsA3uyyKG6hCciC\\\"]},\\\"src/interfaces/external/Balancer/ILiquidityGauge.sol\\\":{\\\"keccak256\\\":\\\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\\\",\\\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\\\"]},\\\"src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol\\\":{\\\"keccak256\\\":\\\"0x1c33a4019f711891aa62f481832f77639da019a9ae4c9b1283715bb53cdbe100\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8374ce49f71fad7e2204648accf4aa306fa54da0e84b2252d83170b7b9e92a93\\\",\\\"dweb:/ipfs/QmSPQBrP1faYR55LuyVj7V2Eze2yZfWi9Qu6QXSymXUGQ7\\\"]},\\\"src/interfaces/external/Balancer/IProtocolFeesCollector.sol\\\":{\\\"keccak256\\\":\\\"0x38a5f11987a9b2ee47dc9b007c4fe3eda05a101736ee304edf6032301c85efac\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://0ba2ccfef9369591e001e3db317bd29d564c63e7e8c5c33f4c9d1eb0c12c2347\\\",\\\"dweb:/ipfs/QmdXiRj7nazhzHUpz27aDTh8Lk2e5KV1fXBcpKiBBRZ3n2\\\"]},\\\"src/interfaces/external/Balancer/IRewardTokenDistributor.sol\\\":{\\\"keccak256\\\":\\\"0xd99e3f4c1e9863d08d1ebcc7ba45455082a17f63c53702508fee40d96817de73\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://a4e0cd3b1d84a1583d0ca556f810097c7f8a098846b1a7106c7c3472a167a6e0\\\",\\\"dweb:/ipfs/Qma9guNWTcGv3qkYRQwzPyEAzr6KFa8MbeBgQZ8dTSC4X5\\\"]},\\\"src/interfaces/external/Balancer/IStakingLiquidityGauge.sol\\\":{\\\"keccak256\\\":\\\"0xb17cc68fd51d53b2c6e91940c95d96f3f91dae1cfff06a87b9cc0446ac997c91\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54b34ab9993baf19e5fbb02dc925424854b46b588bd88875c69a4ab1e9c44968\\\",\\\"dweb:/ipfs/QmRZdftoKSDu23yPYHpyNhdBPdpsQVv4TnfXjRpW3tvW3j\\\"]},\\\"src/interfaces/external/Balancer/IVault.sol\\\":{\\\"keccak256\\\":\\\"0x1b5b8788f45f9f5d333b811c90697bb9f82dd4abacde21152cfd9a758687e638\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://85bd77d6e8cfd898f48c8841a7cfe5b910171f4b133be9c171b55d25a8f1d47f\\\",\\\"dweb:/ipfs/QmbkLPEZrLjjoMtpnmddsJnuUa2R7nwjeD174i4iZeX6my\\\"]},\\\"src/interfaces/external/Balancer/solidity-utils/IAuthentication.sol\\\":{\\\"keccak256\\\":\\\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\\\",\\\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\\\"]},\\\"src/interfaces/external/Balancer/solidity-utils/IERC20.sol\\\":{\\\"keccak256\\\":\\\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\\\",\\\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\\\"]},\\\"src/interfaces/external/Balancer/solidity-utils/ISignaturesValidator.sol\\\":{\\\"keccak256\\\":\\\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\\\",\\\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\\\"]},\\\"src/interfaces/external/Balancer/solidity-utils/ITemporarilyPausable.sol\\\":{\\\"keccak256\\\":\\\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\\\",\\\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\\\"]},\\\"src/interfaces/external/Balancer/solidity-utils/IWETH.sol\\\":{\\\"keccak256\\\":\\\"0xf0485638c64f7f11ff8a9235833219d6b59a090a4348860c3129eee017ddafce\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://70de99834cb5192830a30faf1aa0b40daf246b77f57aef7b18b6d1251e8f7f3c\\\",\\\"dweb:/ipfs/QmWLEkeZELYY39VvotCJMCbp1ghA7aKfEZ8WSKz4wiideY\\\"]},\\\"src/interfaces/external/Balancer/typically-npm/IBasePool.sol\\\":{\\\"keccak256\\\":\\\"0x1cdc55054804cf084d5e48e8977517e1bb962079d37960a0812d1371664ed78d\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://5fb94acd0d362dee4195e5bd669a9aa60877d41106de84201fde8722efeccfd5\\\",\\\"dweb:/ipfs/QmbuuVLnk4GH1RkjoDQADkKQfwLVPKiNG4Ccn4TK4kcDNF\\\"]},\\\"src/interfaces/external/Balancer/typically-npm/IPoolSwapStructs.sol\\\":{\\\"keccak256\\\":\\\"0xe6f1065866cb963ac63cfb565acc006b9512afcb5312fa4be0862253248aeeb4\\\",\\\"license\\\":\\\"GPL-3.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://df94fb1239cd0279ca45158f5a214a9ded846db5753a4af729c5f0505bae224f\\\",\\\"dweb:/ipfs/QmYxLtmuT5rUGgAh2AeMCuECVk1hgukpzgfeY5LfWramd3\\\"]},\\\"src/interfaces/external/IBalancerMinter.sol\\\":{\\\"keccak256\\\":\\\"0x7496841fa2a00ab19381cdcbad117fadd6087dc8a928a78eab7e5bcf56d227f1\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://6ed91329ba6e4f3ca38eaef7f69271cfd445eddf82834510c48c79ca8a2e70bd\\\",\\\"dweb:/ipfs/QmaPEHin5iZG8dCi3LMAdCyf9Fdi9vkQjLwKf2CrbkKJLu\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x2364e19fbc8a2322829933148bc4994527a783791d4ccc0530153975d92752c3\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b7f05b70dace2c3867855a60c348b2428792ef7f810a314e3f289560166c4e43\\\",\\\"dweb:/ipfs/Qme9cjbUhpidVHwVKMcR8VdvheFY7GCqTwgEaxKLkyuR7c\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_vault\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_minter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"_balancerSlippage\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"liquidityGauge\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___InternalBalancesNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___InvalidConstructorSlippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___LengthMismatch\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BalancerPoolAdaptor___WrongSwapKind\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"EXACT_TOKENS_IN_FOR_BPT_OUT\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balancerSlippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gauge\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"claimRewards\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"struct IVault.SingleSwap[]\",\n \"name\": \"swapsAfterExit\",\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"enum IVault.SwapKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetIn\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetOut\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"internalType\": \"struct BalancerPoolAdaptor.SwapData\",\n \"name\": \"swapData\",\n \"type\": \"tuple\",\n \"components\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsForSwaps\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"swapDeadlines\",\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"internalType\": \"struct IVault.ExitPoolRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\",\n \"components\": [\n {\n \"internalType\": \"contract IAsset[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsOut\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"toInternalBalance\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"exitPool\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"getExpectedTokens\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"expectedTokens\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"targetBpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"struct IVault.SingleSwap[]\",\n \"name\": \"swapsBeforeJoin\",\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"poolId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"enum IVault.SwapKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetIn\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IAsset\",\n \"name\": \"assetOut\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userData\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"internalType\": \"struct BalancerPoolAdaptor.SwapData\",\n \"name\": \"swapData\",\n \"type\": \"tuple\",\n \"components\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"minAmountsForSwaps\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"swapDeadlines\",\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minimumBpt\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"joinPool\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"minter\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBalancerMinter\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"_bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_liquidityGauge\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountIn\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"stakeBPT\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"_bpt\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_liquidityGauge\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountOut\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"unstakeBPT\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"vault\",\n \"outputs\": [\n {\n \"internalType\": \"contract IVault\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amountBPTToSend\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"_adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"assetOf(bytes)\": {\n \"params\": {\n \"_adaptorData\": \"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\"\n },\n \"returns\": {\n \"_0\": \"bpt for Cellar's respective balancer pool position\"\n }\n },\n \"assetsUsed(bytes)\": {\n \"details\": \"all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)\",\n \"params\": {\n \"_adaptorData\": \"specified bpt of interest\"\n },\n \"returns\": {\n \"assets\": \"for Cellar's respective balancer pool position\"\n }\n },\n \"balanceOf(bytes)\": {\n \"params\": {\n \"_adaptorData\": \"encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\"\n },\n \"returns\": {\n \"_0\": \"total balance of bpt for Cellar, including liquid bpt and staked bpt\"\n }\n },\n \"claimRewards(address)\": {\n \"details\": \"rewards are only accrued for staked positions\"\n },\n \"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\": {\n \"details\": \"The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.`swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to swap BB A DAI.Max Available logic IS NOT supported.\"\n },\n \"getExpectedTokens(address)\": {\n \"details\": \"This function is NOT used by the adaptor, but could be used by strategists when formulating Balancer rebalances.\"\n },\n \"identifier()\": {\n \"returns\": {\n \"_0\": \"encoded adaptor identifier\"\n }\n },\n \"isDebt()\": {\n \"returns\": {\n \"_0\": \"whether adaptor returns debt or not\"\n }\n },\n \"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\": {\n \"details\": \"`swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`. IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.Max Available logic IS supported.\"\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n },\n \"stakeBPT(address,address,uint256)\": {\n \"details\": \"Interface custom as Balancer/Curve do not provide for liquidityGauges.\",\n \"params\": {\n \"_amountIn\": \"number of BPTs to stake\",\n \"_bpt\": \"address of BPTs to stake\"\n }\n },\n \"unstakeBPT(address,address,uint256)\": {\n \"details\": \"Interface custom as Balancer/Curve do not provide for liquidityGauges.\",\n \"params\": {\n \"_amountOut\": \"number of BPTs to unstake\",\n \"_bpt\": \"address of BPTs to unstake\"\n }\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"details\": \"See `balanceOf`.\"\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"EXACT_TOKENS_IN_FOR_BPT_OUT()\": {\n \"notice\": \"The enum value needed to specify an Exact Tokens in for BPT out join.\"\n },\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions underlying assets.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Calculates the Cellar's balance of the positions creditAsset, a specific bpt.\"\n },\n \"balancerSlippage()\": {\n \"notice\": \"Number between 0.9e4, and 1e4 representing the amount of slippage that can be tolerated when entering/exiting a pool. - 0.90e4: 10% slippage - 0.95e4: 5% slippage\"\n },\n \"claimRewards(address)\": {\n \"notice\": \"claim rewards ($BAL) from LP position\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"User deposits are NOT allowed into this position.\"\n },\n \"exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))\": {\n \"notice\": \"Allows strategists to exit Balancer pools using any exit.\"\n },\n \"getExpectedTokens(address)\": {\n \"notice\": \"Returns the expected tokens array for a given `targetBpt`.\"\n },\n \"identifier()\": {\n \"notice\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor returns collateral, and not debt.\"\n },\n \"joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)\": {\n \"notice\": \"Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins.\"\n },\n \"minter()\": {\n \"notice\": \"The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for CellarFor mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"stakeBPT(address,address,uint256)\": {\n \"notice\": \"stake (deposit) BPTs into respective pool gauge\"\n },\n \"unstakeBPT(address,address,uint256)\": {\n \"notice\": \"unstake (withdraw) BPT from respective pool gauge\"\n },\n \"vault()\": {\n \"notice\": \"The Balancer Vault contractFor mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"If a user withdraw needs more BPTs than what is in the Cellar's wallet, then the Cellar will unstake BPTs from the gauge.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"Accounts for BPTs in the Cellar's wallet, and staked in gauge.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\": \"BalancerPoolAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/lib/ds-test/src/test.sol\": {\n \"keccak256\": \"0xb39cd1d5220cb474947b131e15a4538334b7e886af244b440ae5c9c6bba96a54\",\n \"urls\": [\n \"bzz-raw://3101520221449ac0070bda3881311a71d9aa87e5210765e875246922cb5cb5f5\",\n \"dweb:/ipfs/Qmbg6kAHNoG7ox9N9Xqd9Ere2H2XixMFWFqvyPwFCzB3Gr\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"lib/forge-std/src/Script.sol\": {\n \"keccak256\": \"0x9d09c1e55cd508d3376cff9961625d51d73f8ce075ec1e9deed41408a4556e00\",\n \"urls\": [\n \"bzz-raw://8880c5551daf337ab91665a9ce593df67a9eb11b0bee820f631d324d2fdd3a8b\",\n \"dweb:/ipfs/QmNpvSBGnS9Jr6Swd6XKsijG59a4yjYemWCFwprjKFkpNC\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/src/StdJson.sol\": {\n \"keccak256\": \"0x1297a1cc393bc8163ccf143e5335536e78cb25ac24a4f6dfdb25f5746dd4827e\",\n \"urls\": [\n \"bzz-raw://945ccffad9fc09d2aa0ac200a80dcfa2f491dba8680fc9c3d3d450d891284b87\",\n \"dweb:/ipfs/QmYSfFb1L6LN1ZB9KWzZqxt2iAbpuFDskBcU1Bz4RiyuQ5\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/src/Test.sol\": {\n \"keccak256\": \"0x6c9cbd51234372b66bf7c146870edf0855770c46e960a8fae8f354ddf382876b\",\n \"urls\": [\n \"bzz-raw://fd0ff1f449294dd1447b9d483c52d78e137d8cac518646e76df9fdd4d185d6c2\",\n \"dweb:/ipfs/QmS3JP4vKgvAWo8Tc7zVrGxbdR7t37ayk1mTHN3seD6UAZ\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/src/Vm.sol\": {\n \"keccak256\": \"0x1a5767028a0c3985e991456fc9650055e28b01b787c56b11f66ac30498a153ab\",\n \"urls\": [\n \"bzz-raw://f86887212eacca450a15a8a5bf9fe83fd91a2ba623df8e9c32c75a31824c8ea2\",\n \"dweb:/ipfs/QmTUHBNdZwntgjbFZne7fY9ZJLNGYWaq3uWfGk6FyqdAkB\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/src/console.sol\": {\n \"keccak256\": \"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\n \"urls\": [\n \"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\n \"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/forge-std/src/console2.sol\": {\n \"keccak256\": \"0xbeb823fcdb356244a83aaccdf828ad019ecc1ffaa3dff18e624fc6d5714ea671\",\n \"urls\": [\n \"bzz-raw://4cbe9400340e5f9ec55e2aff3bad1c15fa3afbbe37e80800e6f3fed2ad26854f\",\n \"dweb:/ipfs/QmdJBABsuXkvWxVzEyGXsTE3vyfBPXDdw5xvvtUz3JeoYW\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IAsset.sol\": {\n \"keccak256\": \"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\n \"urls\": [\n \"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\n \"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IAuthorizer.sol\": {\n \"keccak256\": \"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\n \"urls\": [\n \"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\n \"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IBalancerQueries.sol\": {\n \"keccak256\": \"0xd2a015dec53a45644f66938705bbf5d2d349dbab8eaa7e8aea07fc7575845315\",\n \"urls\": [\n \"bzz-raw://21f696084aa156ec1a76dbe6309064eba1dbf5e0b918f4b68e3eec23b073b5e4\",\n \"dweb:/ipfs/Qmda3i1QwsbR2VEd27K8Cu9Roqc1oyev6C5kcMJX2iUtzw\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IFlashLoanRecipient.sol\": {\n \"keccak256\": \"0xcf36a2692ab694e72a4ab32dd114ff091f678dc1e3edf2622f9c900a7919567e\",\n \"urls\": [\n \"bzz-raw://9eeeeda4d19a3c105947a3ec85cb83a2c7c4fd17089a06f84caa5298a9698351\",\n \"dweb:/ipfs/QmRoDsWbrDwrz1M32j67WqYSEqRy5xKTsA3uyyKG6hCciC\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/ILiquidityGauge.sol\": {\n \"keccak256\": \"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\n \"urls\": [\n \"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\n \"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol\": {\n \"keccak256\": \"0x1c33a4019f711891aa62f481832f77639da019a9ae4c9b1283715bb53cdbe100\",\n \"urls\": [\n \"bzz-raw://8374ce49f71fad7e2204648accf4aa306fa54da0e84b2252d83170b7b9e92a93\",\n \"dweb:/ipfs/QmSPQBrP1faYR55LuyVj7V2Eze2yZfWi9Qu6QXSymXUGQ7\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IProtocolFeesCollector.sol\": {\n \"keccak256\": \"0x38a5f11987a9b2ee47dc9b007c4fe3eda05a101736ee304edf6032301c85efac\",\n \"urls\": [\n \"bzz-raw://0ba2ccfef9369591e001e3db317bd29d564c63e7e8c5c33f4c9d1eb0c12c2347\",\n \"dweb:/ipfs/QmdXiRj7nazhzHUpz27aDTh8Lk2e5KV1fXBcpKiBBRZ3n2\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IRewardTokenDistributor.sol\": {\n \"keccak256\": \"0xd99e3f4c1e9863d08d1ebcc7ba45455082a17f63c53702508fee40d96817de73\",\n \"urls\": [\n \"bzz-raw://a4e0cd3b1d84a1583d0ca556f810097c7f8a098846b1a7106c7c3472a167a6e0\",\n \"dweb:/ipfs/Qma9guNWTcGv3qkYRQwzPyEAzr6KFa8MbeBgQZ8dTSC4X5\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IStakingLiquidityGauge.sol\": {\n \"keccak256\": \"0xb17cc68fd51d53b2c6e91940c95d96f3f91dae1cfff06a87b9cc0446ac997c91\",\n \"urls\": [\n \"bzz-raw://54b34ab9993baf19e5fbb02dc925424854b46b588bd88875c69a4ab1e9c44968\",\n \"dweb:/ipfs/QmRZdftoKSDu23yPYHpyNhdBPdpsQVv4TnfXjRpW3tvW3j\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/IVault.sol\": {\n \"keccak256\": \"0x1b5b8788f45f9f5d333b811c90697bb9f82dd4abacde21152cfd9a758687e638\",\n \"urls\": [\n \"bzz-raw://85bd77d6e8cfd898f48c8841a7cfe5b910171f4b133be9c171b55d25a8f1d47f\",\n \"dweb:/ipfs/QmbkLPEZrLjjoMtpnmddsJnuUa2R7nwjeD174i4iZeX6my\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/solidity-utils/IAuthentication.sol\": {\n \"keccak256\": \"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\n \"urls\": [\n \"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\n \"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/solidity-utils/IERC20.sol\": {\n \"keccak256\": \"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\n \"urls\": [\n \"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\n \"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"\n ],\n \"license\": \"MIT\"\n },\n \"src/interfaces/external/Balancer/solidity-utils/ISignaturesValidator.sol\": {\n \"keccak256\": \"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\n \"urls\": [\n \"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\n \"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/solidity-utils/ITemporarilyPausable.sol\": {\n \"keccak256\": \"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\n \"urls\": [\n \"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\n \"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/solidity-utils/IWETH.sol\": {\n \"keccak256\": \"0xf0485638c64f7f11ff8a9235833219d6b59a090a4348860c3129eee017ddafce\",\n \"urls\": [\n \"bzz-raw://70de99834cb5192830a30faf1aa0b40daf246b77f57aef7b18b6d1251e8f7f3c\",\n \"dweb:/ipfs/QmWLEkeZELYY39VvotCJMCbp1ghA7aKfEZ8WSKz4wiideY\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/typically-npm/IBasePool.sol\": {\n \"keccak256\": \"0x1cdc55054804cf084d5e48e8977517e1bb962079d37960a0812d1371664ed78d\",\n \"urls\": [\n \"bzz-raw://5fb94acd0d362dee4195e5bd669a9aa60877d41106de84201fde8722efeccfd5\",\n \"dweb:/ipfs/QmbuuVLnk4GH1RkjoDQADkKQfwLVPKiNG4Ccn4TK4kcDNF\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/Balancer/typically-npm/IPoolSwapStructs.sol\": {\n \"keccak256\": \"0xe6f1065866cb963ac63cfb565acc006b9512afcb5312fa4be0862253248aeeb4\",\n \"urls\": [\n \"bzz-raw://df94fb1239cd0279ca45158f5a214a9ded846db5753a4af729c5f0505bae224f\",\n \"dweb:/ipfs/QmYxLtmuT5rUGgAh2AeMCuECVk1hgukpzgfeY5LfWramd3\"\n ],\n \"license\": \"GPL-3.0-or-later\"\n },\n \"src/interfaces/external/IBalancerMinter.sol\": {\n \"keccak256\": \"0x7496841fa2a00ab19381cdcbad117fadd6087dc8a928a78eab7e5bcf56d227f1\",\n \"urls\": [\n \"bzz-raw://6ed91329ba6e4f3ca38eaef7f69271cfd445eddf82834510c48c79ca8a2e70bd\",\n \"dweb:/ipfs/QmaPEHin5iZG8dCi3LMAdCyf9Fdi9vkQjLwKf2CrbkKJLu\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\": {\n \"keccak256\": \"0x2364e19fbc8a2322829933148bc4994527a783791d4ccc0530153975d92752c3\",\n \"urls\": [\n \"bzz-raw://b7f05b70dace2c3867855a60c348b2428792ef7f810a314e3f289560166c4e43\",\n \"dweb:/ipfs/Qme9cjbUhpidVHwVKMcR8VdvheFY7GCqTwgEaxKLkyuR7c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol\",\n \"id\": 38237,\n \"exportedSymbols\": {\n \"BalancerPoolAdaptor\": [\n 38236\n ],\n \"BaseAdaptor\": [\n 38526\n ],\n \"Cellar\": [\n 32635\n ],\n \"ERC20\": [\n 33219\n ],\n \"IAsset\": [\n 33988\n ],\n \"IBalancerMinter\": [\n 35222\n ],\n \"IBalancerQueries\": [\n 34074\n ],\n \"IBasePool\": [\n 35186\n ],\n \"IERC20\": [\n 35010\n ],\n \"ILiquidityGauge\": [\n 34177\n ],\n \"ILiquidityGaugev3Custom\": [\n 34218\n ],\n \"IStakingLiquidityGauge\": [\n 34408\n ],\n \"IVault\": [\n 34921\n ],\n \"Math\": [\n 42528\n ],\n \"PriceRouter\": [\n 41904\n ],\n \"Registry\": [\n 29225\n ],\n \"SafeTransferLib\": [\n 33970\n ],\n \"SwapRouter\": [\n 42399\n ],\n \"console\": [\n 16144\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:25554:79\",\n \"nodes\": [\n {\n \"id\": 36613,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:79\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 36621,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:134:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 38527,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36614,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38526,\n \"src\": \"73:11:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36615,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"86:5:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36616,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33970,\n \"src\": \"93:15:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36617,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 32635,\n \"src\": \"110:6:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36618,\n \"name\": \"SwapRouter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 42399,\n \"src\": \"118:10:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36619,\n \"name\": \"Registry\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 29225,\n \"src\": \"130:8:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36620,\n \"name\": \"PriceRouter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 41904,\n \"src\": \"140:11:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36623,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"199:89:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/IBalancerQueries.sol\",\n \"file\": \"src/interfaces/external/Balancer/IBalancerQueries.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 34075,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36622,\n \"name\": \"IBalancerQueries\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34074,\n \"src\": \"208:16:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36627,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"289:85:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/IVault.sol\",\n \"file\": \"src/interfaces/external/Balancer/IVault.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 34922,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36624,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"298:6:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36625,\n \"name\": \"IERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35010,\n \"src\": \"306:6:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 36626,\n \"name\": \"IAsset\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33988,\n \"src\": \"314:6:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36629,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"375:101:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/IStakingLiquidityGauge.sol\",\n \"file\": \"src/interfaces/external/Balancer/IStakingLiquidityGauge.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 34409,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36628,\n \"name\": \"IStakingLiquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34408,\n \"src\": \"384:22:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36631,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"477:103:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol\",\n \"file\": \"src/interfaces/external/Balancer/ILiquidityGaugev3Custom.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 34219,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36630,\n \"name\": \"ILiquidityGaugev3Custom\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34218,\n \"src\": \"486:23:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36633,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"581:89:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/typically-npm/IBasePool.sol\",\n \"file\": \"src/interfaces/external/Balancer/typically-npm/IBasePool.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 35187,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36632,\n \"name\": \"IBasePool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35186,\n \"src\": \"590:9:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36635,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"671:87:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Balancer/ILiquidityGauge.sol\",\n \"file\": \"src/interfaces/external/Balancer/ILiquidityGauge.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 34178,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36634,\n \"name\": \"ILiquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34177,\n \"src\": \"680:15:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36637,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"759:42:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/utils/Math.sol\",\n \"file\": \"src/utils/Math.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 42529,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36636,\n \"name\": \"Math\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 42528,\n \"src\": \"768:4:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36639,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"802:46:79\",\n \"nodes\": [],\n \"absolutePath\": \"lib/forge-std/src/Test.sol\",\n \"file\": \"@forge-std/Test.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 7301,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36638,\n \"name\": \"console\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 16144,\n \"src\": \"811:7:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 36641,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"849:78:79\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/IBalancerMinter.sol\",\n \"file\": \"src/interfaces/external/IBalancerMinter.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 38237,\n \"sourceUnit\": 35223,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 36640,\n \"name\": \"IBalancerMinter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35222,\n \"src\": \"858:15:79\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 38236,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"1103:24489:79\",\n \"nodes\": [\n {\n \"id\": 36648,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"1153:32:79\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 36645,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"1159:15:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33970,\n \"src\": \"1159:15:79\"\n },\n \"typeName\": {\n \"id\": 36647,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36646,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"1179:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"1179:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"1179:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 36651,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"1190:23:79\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 36649,\n \"name\": \"Math\",\n \"nameLocations\": [\n \"1196:4:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 42528,\n \"src\": \"1196:4:79\"\n },\n \"typeName\": {\n \"id\": 36650,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1205:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n },\n {\n \"id\": 36658,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"2424:94:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36652,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2320:99:79\",\n \"text\": \" @notice Tried using a bpt and/or liquidityGauge that is not setup as a position.\"\n },\n \"errorSelector\": \"8a1915c8\",\n \"name\": \"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\",\n \"nameLocation\": \"2430:50:79\",\n \"parameters\": {\n \"id\": 36657,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36654,\n \"mutability\": \"mutable\",\n \"name\": \"bpt\",\n \"nameLocation\": \"2489:3:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36658,\n \"src\": \"2481:11:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36653,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2481:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36656,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGauge\",\n \"nameLocation\": \"2502:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36658,\n \"src\": \"2494:22:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36655,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2494:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2480:37:79\"\n }\n },\n {\n \"id\": 36661,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"2636:39:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36659,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2524:107:79\",\n \"text\": \" @notice Attempted balancer pool joins, exits, staking, unstaking, etc. with bad slippage\"\n },\n \"errorSelector\": \"6d7db7b2\",\n \"name\": \"BalancerPoolAdaptor___Slippage\",\n \"nameLocation\": \"2642:30:79\",\n \"parameters\": {\n \"id\": 36660,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2672:2:79\"\n }\n },\n {\n \"id\": 36664,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"2752:57:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36662,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2681:66:79\",\n \"text\": \" @notice Constructor param for slippage too high\"\n },\n \"errorSelector\": \"3aa8bcf1\",\n \"name\": \"BalancerPoolAdaptor___InvalidConstructorSlippage\",\n \"nameLocation\": \"2758:48:79\",\n \"parameters\": {\n \"id\": 36663,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2806:2:79\"\n }\n },\n {\n \"id\": 36667,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"2916:45:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36665,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2815:96:79\",\n \"text\": \" @notice Provided swap array length differs from expected tokens array length.\"\n },\n \"errorSelector\": \"967575bd\",\n \"name\": \"BalancerPoolAdaptor___LengthMismatch\",\n \"nameLocation\": \"2922:36:79\",\n \"parameters\": {\n \"id\": 36666,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2958:2:79\"\n }\n },\n {\n \"id\": 36670,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"3046:44:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36668,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2967:74:79\",\n \"text\": \" @notice Provided swap information with wrong swap kind.\"\n },\n \"errorSelector\": \"74c0729b\",\n \"name\": \"BalancerPoolAdaptor___WrongSwapKind\",\n \"nameLocation\": \"3052:35:79\",\n \"parameters\": {\n \"id\": 36669,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3087:2:79\"\n }\n },\n {\n \"id\": 36673,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"4011:64:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36671,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3096:910:79\",\n \"text\": \" @notice Provided swap information does not match expected tokens array.\\n @dev Swap information passed to `joinPool` and `exitPool` MUST line up with\\n the expected tokens array.\\n Example: BB A USD has 4 constituents BB A DAI, BB A USDT, BB A USDC, BB A USD\\n but the pool has pre-minted BPTs in its tokens array.\\n So the expected tokens array will only contain the first 3 constituents.\\n The swap data must be in the following order.\\n 0 - Swap data to swap DAI for BB A DAI.\\n 1 - Swap data to swap USDT for BB A USDT.\\n 2 - Swap data to swap USDC for BB A USDC.\\n If the swap data is not in the order above, or tries swapping using tokens\\n that are NOT in the BPT, the call will revert with the below error.\"\n },\n \"errorSelector\": \"85f4bd3b\",\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\n \"nameLocation\": \"4017:55:79\",\n \"parameters\": {\n \"id\": 36672,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4072:2:79\"\n }\n },\n {\n \"id\": 36676,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"4176:59:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36674,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4081:90:79\",\n \"text\": \" @notice Provided swap information tried to work with internal balances.\"\n },\n \"errorSelector\": \"6d225183\",\n \"name\": \"BalancerPoolAdaptor___InternalBalancesNotSupported\",\n \"nameLocation\": \"4182:50:79\",\n \"parameters\": {\n \"id\": 36675,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4232:2:79\"\n }\n },\n {\n \"id\": 36679,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"4371:57:79\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 36677,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4241:125:79\",\n \"text\": \" @notice Provided swap information chose to keep an asset that is not supported\\n for pricing.\"\n },\n \"errorSelector\": \"03b4d892\",\n \"name\": \"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\",\n \"nameLocation\": \"4377:48:79\",\n \"parameters\": {\n \"id\": 36678,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4425:2:79\"\n }\n },\n {\n \"id\": 36686,\n \"nodeType\": \"StructDefinition\",\n \"src\": \"4563:94:79\",\n \"nodes\": [],\n \"canonicalName\": \"BalancerPoolAdaptor.SwapData\",\n \"members\": [\n {\n \"constant\": false,\n \"id\": 36682,\n \"mutability\": \"mutable\",\n \"name\": \"minAmountsForSwaps\",\n \"nameLocation\": \"4599:18:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36686,\n \"src\": \"4589:28:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 36680,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4589:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 36681,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"4589:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36685,\n \"mutability\": \"mutable\",\n \"name\": \"swapDeadlines\",\n \"nameLocation\": \"4637:13:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36686,\n \"src\": \"4627:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 36683,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4627:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 36684,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"4627:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"name\": \"SwapData\",\n \"nameLocation\": \"4570:8:79\",\n \"scope\": 38236,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36690,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"4934:29:79\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 36687,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4801:128:79\",\n \"text\": \" @notice The Balancer Vault contract\\n @notice For mainnet use 0xBA12222222228d8Ba445958a75a0704d566BF2C8\"\n },\n \"functionSelector\": \"fbfa77cf\",\n \"mutability\": \"immutable\",\n \"name\": \"vault\",\n \"nameLocation\": \"4958:5:79\",\n \"scope\": 38236,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n },\n \"typeName\": {\n \"id\": 36689,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36688,\n \"name\": \"IVault\",\n \"nameLocations\": [\n \"4934:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34921,\n \"src\": \"4934:6:79\"\n },\n \"referencedDeclaration\": 34921,\n \"src\": \"4934:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 36694,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"5204:39:79\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 36691,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4970:229:79\",\n \"text\": \" @notice The BalancerMinter contract adhering to IBalancerMinter (custom interface) to access `mint()` to collect $BAL rewards for Cellar\\n @notice For mainnet use 0x239e55F427D44C3cc793f49bFB507ebe76638a2b\"\n },\n \"functionSelector\": \"07546172\",\n \"mutability\": \"immutable\",\n \"name\": \"minter\",\n \"nameLocation\": \"5237:6:79\",\n \"scope\": 38236,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n },\n \"typeName\": {\n \"id\": 36693,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36692,\n \"name\": \"IBalancerMinter\",\n \"nameLocations\": [\n \"5204:15:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 35222,\n \"src\": \"5204:15:79\"\n },\n \"referencedDeclaration\": 35222,\n \"src\": \"5204:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 36697,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"5489:40:79\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 36695,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5250:234:79\",\n \"text\": \" @notice Number between 0.9e4, and 1e4 representing the amount of slippage that can be\\n tolerated when entering/exiting a pool.\\n - 0.90e4: 10% slippage\\n - 0.95e4: 5% slippage\"\n },\n \"functionSelector\": \"f7e69b16\",\n \"mutability\": \"immutable\",\n \"name\": \"balancerSlippage\",\n \"nameLocation\": \"5513:16:79\",\n \"scope\": 38236,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"typeName\": {\n \"id\": 36696,\n \"name\": \"uint32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5489:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 36701,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"5637:55:79\",\n \"nodes\": [],\n \"constant\": true,\n \"documentation\": {\n \"id\": 36698,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5536:96:79\",\n \"text\": \" @notice The enum value needed to specify an Exact Tokens in for BPT out join.\"\n },\n \"functionSelector\": \"0e222e52\",\n \"mutability\": \"constant\",\n \"name\": \"EXACT_TOKENS_IN_FOR_BPT_OUT\",\n \"nameLocation\": \"5661:27:79\",\n \"scope\": 38236,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36699,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5637:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"value\": {\n \"hexValue\": \"31\",\n \"id\": 36700,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5691:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1_by_1\",\n \"typeString\": \"int_const 1\"\n },\n \"value\": \"1\"\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 36738,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5807:336:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36737,\n \"nodeType\": \"Block\",\n \"src\": \"5878:265:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"id\": 36716,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"id\": 36712,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 36710,\n \"name\": \"_balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36707,\n \"src\": \"5892:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"hexValue\": \"302e396534\",\n \"id\": 36711,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5912:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_9000_by_1\",\n \"typeString\": \"int_const 9000\"\n },\n \"value\": \"0.9e4\"\n },\n \"src\": \"5892:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"||\",\n \"rightExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"id\": 36715,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 36713,\n \"name\": \"_balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36707,\n \"src\": \"5921:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"316534\",\n \"id\": 36714,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5941:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_10000_by_1\",\n \"typeString\": \"int_const 10000\"\n },\n \"value\": \"1e4\"\n },\n \"src\": \"5921:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"src\": \"5892:52:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 36720,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5888:127:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 36717,\n \"name\": \"BalancerPoolAdaptor___InvalidConstructorSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36664,\n \"src\": \"5965:48:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 36718,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5965:50:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 36719,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"5958:57:79\"\n }\n },\n {\n \"expression\": {\n \"id\": 36725,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 36721,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"6025:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 36723,\n \"name\": \"_vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36703,\n \"src\": \"6040:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36722,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"6033:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IVault_$34921_$\",\n \"typeString\": \"type(contract IVault)\"\n }\n },\n \"id\": 36724,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6033:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"src\": \"6025:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 36726,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6025:22:79\"\n },\n {\n \"expression\": {\n \"id\": 36731,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 36727,\n \"name\": \"minter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36694,\n \"src\": \"6057:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 36729,\n \"name\": \"_minter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36705,\n \"src\": \"6082:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36728,\n \"name\": \"IBalancerMinter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35222,\n \"src\": \"6066:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IBalancerMinter_$35222_$\",\n \"typeString\": \"type(contract IBalancerMinter)\"\n }\n },\n \"id\": 36730,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6066:24:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n }\n },\n \"src\": \"6057:33:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n }\n },\n \"id\": 36732,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6057:33:79\"\n },\n {\n \"expression\": {\n \"id\": 36735,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 36733,\n \"name\": \"balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36697,\n \"src\": \"6100:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 36734,\n \"name\": \"_balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36707,\n \"src\": \"6119:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"src\": \"6100:36:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"id\": 36736,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6100:36:79\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 36708,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36703,\n \"mutability\": \"mutable\",\n \"name\": \"_vault\",\n \"nameLocation\": \"5827:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36738,\n \"src\": \"5819:14:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36702,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5819:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36705,\n \"mutability\": \"mutable\",\n \"name\": \"_minter\",\n \"nameLocation\": \"5843:7:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36738,\n \"src\": \"5835:15:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36704,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5835:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36707,\n \"mutability\": \"mutable\",\n \"name\": \"_balancerSlippage\",\n \"nameLocation\": \"5859:17:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36738,\n \"src\": \"5852:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"typeName\": {\n \"id\": 36706,\n \"name\": \"uint32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5852:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5818:59:79\"\n },\n \"returnParameters\": {\n \"id\": 36709,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5878:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36753,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6594:145:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36752,\n \"nodeType\": \"Block\",\n \"src\": \"6663:76:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"42616c616e63657220506f6f6c2041646170746f72205620312e30\",\n \"id\": 36748,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6701:29:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_d037f6f2d1b4fc1b11465c366f9e23fa741bc28b129e6eb8d57db8b077419162\",\n \"typeString\": \"literal_string \\\"Balancer Pool Adaptor V 1.0\\\"\"\n },\n \"value\": \"Balancer Pool Adaptor V 1.0\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_d037f6f2d1b4fc1b11465c366f9e23fa741bc28b129e6eb8d57db8b077419162\",\n \"typeString\": \"literal_string \\\"Balancer Pool Adaptor V 1.0\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 36746,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"6690:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 36747,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"6694:6:79\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"6690:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 36749,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6690:41:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 36745,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"6680:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 36750,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6680:52:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 36744,\n \"id\": 36751,\n \"nodeType\": \"Return\",\n \"src\": \"6673:59:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38292\n ],\n \"documentation\": {\n \"id\": 36739,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6262:327:79\",\n \"text\": \" @notice Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\n @return encoded adaptor identifier\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"6603:10:79\",\n \"overrides\": {\n \"id\": 36741,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"6636:8:79\"\n },\n \"parameters\": {\n \"id\": 36740,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6613:2:79\"\n },\n \"returnParameters\": {\n \"id\": 36744,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36743,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36753,\n \"src\": \"6654:7:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 36742,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6654:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6653:9:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": true,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36768,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6947:136:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36767,\n \"nodeType\": \"Block\",\n \"src\": \"7022:61:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 36764,\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38264,\n \"src\": \"7039:35:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 36765,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7039:37:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 36766,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"7032:44:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38336\n ],\n \"documentation\": {\n \"id\": 36754,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6866:76:79\",\n \"text\": \" @notice User deposits are NOT allowed into this position.\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"6956:7:79\",\n \"overrides\": {\n \"id\": 36762,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"7013:8:79\"\n },\n \"parameters\": {\n \"id\": 36761,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36756,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36768,\n \"src\": \"6964:7:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36755,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6964:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36758,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36768,\n \"src\": \"6973:12:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36757,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6973:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36760,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36768,\n \"src\": \"6987:12:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36759,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6987:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6963:37:79\"\n },\n \"returnParameters\": {\n \"id\": 36763,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"7022:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36834,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"7257:680:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36833,\n \"nodeType\": \"Block\",\n \"src\": \"7416:521:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36782,\n \"name\": \"_recipient\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36773,\n \"src\": \"7489:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36781,\n \"name\": \"_externalReceiverCheck\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38493,\n \"src\": \"7466:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$__$\",\n \"typeString\": \"function (address) view\"\n }\n },\n \"id\": 36783,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7466:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 36784,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7466:34:79\"\n },\n {\n \"assignments\": [\n 36787,\n 36789\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36787,\n \"mutability\": \"mutable\",\n \"name\": \"bpt\",\n \"nameLocation\": \"7517:3:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36833,\n \"src\": \"7511:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 36786,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36785,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"7511:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"7511:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"7511:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36789,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGauge\",\n \"nameLocation\": \"7530:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36833,\n \"src\": \"7522:22:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36788,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7522:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36798,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 36792,\n \"name\": \"_adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36775,\n \"src\": \"7559:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 36793,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"7574:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n {\n \"id\": 36795,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7581:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36794,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7581:7:79\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 36796,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"7573:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$\",\n \"typeString\": \"tuple(type(contract ERC20),type(address))\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$\",\n \"typeString\": \"tuple(type(contract ERC20),type(address))\"\n }\n ],\n \"expression\": {\n \"id\": 36790,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"7548:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 36791,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"7552:6:79\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"7548:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 36797,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7548:42:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_contract$_ERC20_$33219_$_t_address_payable_$\",\n \"typeString\": \"tuple(contract ERC20,address payable)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"7510:80:79\"\n },\n {\n \"assignments\": [\n 36800\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36800,\n \"mutability\": \"mutable\",\n \"name\": \"liquidBptBeforeWithdraw\",\n \"nameLocation\": \"7608:23:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36833,\n \"src\": \"7600:31:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36799,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7600:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36808,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 36805,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7656:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 36804,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7648:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36803,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7648:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 36806,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7648:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 36801,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36787,\n \"src\": \"7634:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36802,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7638:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"7634:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 36807,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7634:28:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"7600:62:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 36811,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 36809,\n \"name\": \"_amountBPTToSend\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36771,\n \"src\": \"7676:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"id\": 36810,\n \"name\": \"liquidBptBeforeWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36800,\n \"src\": \"7695:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"7676:42:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 36825,\n \"nodeType\": \"IfStatement\",\n \"src\": \"7672:203:79\",\n \"trueBody\": {\n \"id\": 36824,\n \"nodeType\": \"Block\",\n \"src\": \"7720:155:79\",\n \"statements\": [\n {\n \"assignments\": [\n 36813\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36813,\n \"mutability\": \"mutable\",\n \"name\": \"amountToUnstake\",\n \"nameLocation\": \"7742:15:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36824,\n \"src\": \"7734:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36812,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7734:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36817,\n \"initialValue\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 36816,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 36814,\n \"name\": \"_amountBPTToSend\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36771,\n \"src\": \"7760:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"-\",\n \"rightExpression\": {\n \"id\": 36815,\n \"name\": \"liquidBptBeforeWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36800,\n \"src\": \"7779:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"7760:42:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"7734:68:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36819,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36787,\n \"src\": \"7827:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 36820,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36789,\n \"src\": \"7832:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 36821,\n \"name\": \"amountToUnstake\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36813,\n \"src\": \"7848:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 36818,\n \"name\": \"unstakeBPT\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37991,\n \"src\": \"7816:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 36822,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7816:48:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 36823,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7816:48:79\"\n }\n ]\n }\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36829,\n \"name\": \"_recipient\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36773,\n \"src\": \"7901:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 36830,\n \"name\": \"_amountBPTToSend\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36771,\n \"src\": \"7913:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 36826,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36787,\n \"src\": \"7884:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36828,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7888:12:79\",\n \"memberName\": \"safeTransfer\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 33949,\n \"src\": \"7884:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 36831,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7884:46:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 36832,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7884:46:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38348\n ],\n \"documentation\": {\n \"id\": 36769,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"7089:163:79\",\n \"text\": \" @notice If a user withdraw needs more BPTs than what is in the Cellar's\\n wallet, then the Cellar will unstake BPTs from the gauge.\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"7266:8:79\",\n \"overrides\": {\n \"id\": 36779,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"7407:8:79\"\n },\n \"parameters\": {\n \"id\": 36778,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36771,\n \"mutability\": \"mutable\",\n \"name\": \"_amountBPTToSend\",\n \"nameLocation\": \"7292:16:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36834,\n \"src\": \"7284:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36770,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7284:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36773,\n \"mutability\": \"mutable\",\n \"name\": \"_recipient\",\n \"nameLocation\": \"7326:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36834,\n \"src\": \"7318:18:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36772,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7318:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36775,\n \"mutability\": \"mutable\",\n \"name\": \"_adaptorData\",\n \"nameLocation\": \"7359:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36834,\n \"src\": \"7346:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36774,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7346:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36777,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36834,\n \"src\": \"7381:12:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36776,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7381:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"7274:125:79\"\n },\n \"returnParameters\": {\n \"id\": 36780,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"7416:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36850,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"8066:153:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36849,\n \"nodeType\": \"Block\",\n \"src\": \"8172:47:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36846,\n \"name\": \"_adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36837,\n \"src\": \"8199:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 36845,\n \"name\": \"balanceOf\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [\n 36917\n ],\n \"referencedDeclaration\": 36917,\n \"src\": \"8189:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_uint256_$\",\n \"typeString\": \"function (bytes memory) view returns (uint256)\"\n }\n },\n \"id\": 36847,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8189:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 36844,\n \"id\": 36848,\n \"nodeType\": \"Return\",\n \"src\": \"8182:30:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38366\n ],\n \"documentation\": {\n \"id\": 36835,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"7943:118:79\",\n \"text\": \" @notice Accounts for BPTs in the Cellar's wallet, and staked in gauge.\\n @dev See `balanceOf`.\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"8075:16:79\",\n \"overrides\": {\n \"id\": 36841,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"8145:8:79\"\n },\n \"parameters\": {\n \"id\": 36840,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36837,\n \"mutability\": \"mutable\",\n \"name\": \"_adaptorData\",\n \"nameLocation\": \"8105:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36850,\n \"src\": \"8092:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36836,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8092:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36839,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36850,\n \"src\": \"8119:12:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36838,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8119:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8091:41:79\"\n },\n \"returnParameters\": {\n \"id\": 36844,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36843,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36850,\n \"src\": \"8163:7:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36842,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8163:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8162:9:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36917,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"8547:465:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36916,\n \"nodeType\": \"Block\",\n \"src\": \"8632:380:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 36861,\n 36863\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36861,\n \"mutability\": \"mutable\",\n \"name\": \"bpt\",\n \"nameLocation\": \"8649:3:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36916,\n \"src\": \"8643:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 36860,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36859,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"8643:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"8643:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"8643:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36863,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGauge\",\n \"nameLocation\": \"8662:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36916,\n \"src\": \"8654:22:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 36862,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8654:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36872,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 36866,\n \"name\": \"_adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36853,\n \"src\": \"8691:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 36867,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"8706:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n {\n \"id\": 36869,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"8713:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36868,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8713:7:79\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 36870,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"8705:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$\",\n \"typeString\": \"tuple(type(contract ERC20),type(address))\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_tuple$_t_type$_t_contract$_ERC20_$33219_$_$_t_type$_t_address_$_$\",\n \"typeString\": \"tuple(type(contract ERC20),type(address))\"\n }\n ],\n \"expression\": {\n \"id\": 36864,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"8680:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 36865,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"8684:6:79\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"8680:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 36871,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8680:42:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_contract$_ERC20_$33219_$_t_address_payable_$\",\n \"typeString\": \"tuple(contract ERC20,address payable)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"8642:80:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 36878,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 36873,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36863,\n \"src\": \"8736:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"hexValue\": \"30\",\n \"id\": 36876,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"8762:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n }\n ],\n \"id\": 36875,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"8754:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36874,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8754:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 36877,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8754:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"8736:28:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 36887,\n \"nodeType\": \"IfStatement\",\n \"src\": \"8732:73:79\",\n \"trueBody\": {\n \"expression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 36883,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"8794:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 36884,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8798:6:79\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"8794:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36880,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36861,\n \"src\": \"8779:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 36879,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"8773:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 36881,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8773:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36882,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8784:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"8773:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 36885,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8773:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 36858,\n \"id\": 36886,\n \"nodeType\": \"Return\",\n \"src\": \"8766:39:79\"\n }\n },\n {\n \"assignments\": [\n 36890\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36890,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGaugeToken\",\n \"nameLocation\": \"8821:19:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36916,\n \"src\": \"8815:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 36889,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36888,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"8815:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"8815:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"8815:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36897,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 36894,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36863,\n \"src\": \"8857:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36893,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"8849:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36892,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8849:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 36895,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8849:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36891,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"8843:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 36896,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8843:30:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"8815:58:79\"\n },\n {\n \"assignments\": [\n 36899\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36899,\n \"mutability\": \"mutable\",\n \"name\": \"stakedBPT\",\n \"nameLocation\": \"8891:9:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36916,\n \"src\": \"8883:17:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36898,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8883:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 36905,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 36902,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"8933:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 36903,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8937:6:79\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"8933:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 36900,\n \"name\": \"liquidityGaugeToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36890,\n \"src\": \"8903:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36901,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8923:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"8903:29:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 36904,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8903:41:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"8883:61:79\"\n },\n {\n \"expression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 36914,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 36910,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"8982:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 36911,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8986:6:79\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"8982:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 36907,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36861,\n \"src\": \"8967:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 36906,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"8961:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 36908,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8961:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36909,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8972:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"8961:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 36912,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8961:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"+\",\n \"rightExpression\": {\n \"id\": 36913,\n \"name\": \"stakedBPT\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36899,\n \"src\": \"8996:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"8961:44:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 36858,\n \"id\": 36915,\n \"nodeType\": \"Return\",\n \"src\": \"8954:51:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38356\n ],\n \"documentation\": {\n \"id\": 36851,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"8225:317:79\",\n \"text\": \" @notice Calculates the Cellar's balance of the positions creditAsset, a specific bpt.\\n @param _adaptorData encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\\n @return total balance of bpt for Cellar, including liquid bpt and staked bpt\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"8556:9:79\",\n \"overrides\": {\n \"id\": 36855,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"8605:8:79\"\n },\n \"parameters\": {\n \"id\": 36854,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36853,\n \"mutability\": \"mutable\",\n \"name\": \"_adaptorData\",\n \"nameLocation\": \"8579:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36917,\n \"src\": \"8566:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36852,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8566:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8565:27:79\"\n },\n \"returnParameters\": {\n \"id\": 36858,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36857,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36917,\n \"src\": \"8623:7:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36856,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8623:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8622:9:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36938,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"9285:147:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36937,\n \"nodeType\": \"Block\",\n \"src\": \"9366:66:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 36930,\n \"name\": \"_adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36920,\n \"src\": \"9400:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 36932,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"9415:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36931,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"9415:7:79\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 36933,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"9414:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 36928,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"9389:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 36929,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"9393:6:79\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"9389:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 36934,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"9389:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n ],\n \"id\": 36927,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"9383:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 36935,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"9383:42:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 36926,\n \"id\": 36936,\n \"nodeType\": \"Return\",\n \"src\": \"9376:49:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38375\n ],\n \"documentation\": {\n \"id\": 36918,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"9018:262:79\",\n \"text\": \" @notice Returns the positions underlying assets.\\n @param _adaptorData encoded data for trusted adaptor position detailing the bpt and liquidityGauge address (if it exists)\\n @return bpt for Cellar's respective balancer pool position\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"9294:7:79\",\n \"overrides\": {\n \"id\": 36922,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"9341:8:79\"\n },\n \"parameters\": {\n \"id\": 36921,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36920,\n \"mutability\": \"mutable\",\n \"name\": \"_adaptorData\",\n \"nameLocation\": \"9315:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36938,\n \"src\": \"9302:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36919,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"9302:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"9301:27:79\"\n },\n \"returnParameters\": {\n \"id\": 36926,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36925,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36938,\n \"src\": \"9359:5:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 36924,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36923,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"9359:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"9359:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"9359:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"9358:7:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36967,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"9934:183:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36966,\n \"nodeType\": \"Block\",\n \"src\": \"10034:83:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 36956,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 36949,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36947,\n \"src\": \"10044:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"hexValue\": \"31\",\n \"id\": 36954,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"10065:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1_by_1\",\n \"typeString\": \"int_const 1\"\n },\n \"value\": \"1\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_rational_1_by_1\",\n \"typeString\": \"int_const 1\"\n }\n ],\n \"id\": 36953,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"10053:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (contract ERC20[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 36951,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36950,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"10057:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"10057:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"10057:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36952,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"10057:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n }\n },\n \"id\": 36955,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"10053:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"src\": \"10044:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 36957,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"10044:23:79\"\n },\n {\n \"expression\": {\n \"id\": 36964,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 36958,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36947,\n \"src\": \"10077:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 36960,\n \"indexExpression\": {\n \"hexValue\": \"30\",\n \"id\": 36959,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"10084:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"10077:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 36962,\n \"name\": \"_adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36941,\n \"src\": \"10097:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 36961,\n \"name\": \"assetOf\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [\n 36938\n ],\n \"referencedDeclaration\": 36938,\n \"src\": \"10089:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"function (bytes memory) pure returns (contract ERC20)\"\n }\n },\n \"id\": 36963,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"10089:21:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"src\": \"10077:33:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36965,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"10077:33:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38403\n ],\n \"documentation\": {\n \"id\": 36939,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"9438:491:79\",\n \"text\": \" @notice When positions are added to the Registry, this function can be used in order to figure out\\n what assets this adaptor needs to price, and confirm pricing is properly setup.\\n @param _adaptorData specified bpt of interest\\n @return assets for Cellar's respective balancer pool position\\n @dev all breakdowns of bpt pricing and its underlying assets are done through the PriceRouter extension (in accordance to PriceRouterv2 architecture)\"\n },\n \"functionSelector\": \"aeffddde\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetsUsed\",\n \"nameLocation\": \"9943:10:79\",\n \"overrides\": {\n \"id\": 36943,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"9993:8:79\"\n },\n \"parameters\": {\n \"id\": 36942,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36941,\n \"mutability\": \"mutable\",\n \"name\": \"_adaptorData\",\n \"nameLocation\": \"9967:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36967,\n \"src\": \"9954:25:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 36940,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"9954:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"9953:27:79\"\n },\n \"returnParameters\": {\n \"id\": 36948,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36947,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"10026:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36967,\n \"src\": \"10011:21:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 36945,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36944,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"10011:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"10011:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"10011:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 36946,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"10011:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"10010:23:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 36977,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"10252:83:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 36976,\n \"nodeType\": \"Block\",\n \"src\": \"10306:29:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"66616c7365\",\n \"id\": 36974,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"10323:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n \"functionReturnParameters\": 36973,\n \"id\": 36975,\n \"nodeType\": \"Return\",\n \"src\": \"10316:12:79\"\n }\n ]\n },\n \"baseFunctions\": [\n 38409\n ],\n \"documentation\": {\n \"id\": 36968,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"10123:124:79\",\n \"text\": \" @notice This adaptor returns collateral, and not debt.\\n @return whether adaptor returns debt or not\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"10261:6:79\",\n \"overrides\": {\n \"id\": 36970,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"10282:8:79\"\n },\n \"parameters\": {\n \"id\": 36969,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"10267:2:79\"\n },\n \"returnParameters\": {\n \"id\": 36973,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36972,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 36977,\n \"src\": \"10300:4:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 36971,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"10300:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"10299:6:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 37516,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"10857:5846:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 37515,\n \"nodeType\": \"Block\",\n \"src\": \"11029:5674:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 36994\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 36994,\n \"mutability\": \"mutable\",\n \"name\": \"poolId\",\n \"nameLocation\": \"11047:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"11039:14:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 36993,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11039:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37003,\n \"initialValue\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 36998,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36981,\n \"src\": \"11074:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 36997,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"11066:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 36996,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11066:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 36999,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11066:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 36995,\n \"name\": \"IBasePool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35186,\n \"src\": \"11056:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IBasePool_$35186_$\",\n \"typeString\": \"type(contract IBasePool)\"\n }\n },\n \"id\": 37000,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11056:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBasePool_$35186\",\n \"typeString\": \"contract IBasePool\"\n }\n },\n \"id\": 37001,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11086:9:79\",\n \"memberName\": \"getPoolId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 35126,\n \"src\": \"11056:39:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () view external returns (bytes32)\"\n }\n },\n \"id\": 37002,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11056:41:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11039:58:79\"\n },\n {\n \"assignments\": [\n 37006\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37006,\n \"mutability\": \"mutable\",\n \"name\": \"priceRouter\",\n \"nameLocation\": \"11119:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"11107:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n },\n \"typeName\": {\n \"id\": 37005,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37004,\n \"name\": \"PriceRouter\",\n \"nameLocations\": [\n \"11107:11:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 41904,\n \"src\": \"11107:11:79\"\n },\n \"referencedDeclaration\": 41904,\n \"src\": \"11107:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37015,\n \"initialValue\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37010,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"11148:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37009,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"11140:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37008,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11140:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37011,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11140:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37007,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 32635,\n \"src\": \"11133:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$32635_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 37012,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11133:21:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$32635\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 37013,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11155:11:79\",\n \"memberName\": \"priceRouter\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 29326,\n \"src\": \"11133:33:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_contract$_PriceRouter_$41904_$\",\n \"typeString\": \"function () view external returns (contract PriceRouter)\"\n }\n },\n \"id\": 37014,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11133:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11107:61:79\"\n },\n {\n \"assignments\": [\n 37020\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37020,\n \"mutability\": \"mutable\",\n \"name\": \"request\",\n \"nameLocation\": \"11247:7:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"11217:37:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest\"\n },\n \"typeName\": {\n \"id\": 37019,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37018,\n \"name\": \"IVault.JoinPoolRequest\",\n \"nameLocations\": [\n \"11217:6:79\",\n \"11224:15:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34672,\n \"src\": \"11217:22:79\"\n },\n \"referencedDeclaration\": 34672,\n \"src\": \"11217:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_storage_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37021,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11217:37:79\"\n },\n {\n \"expression\": {\n \"id\": 37026,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"id\": 37022,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"11264:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37024,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"11272:19:79\",\n \"memberName\": \"fromInternalBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34671,\n \"src\": \"11264:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"hexValue\": \"66616c7365\",\n \"id\": 37025,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"11294:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n \"src\": \"11264:35:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37027,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11264:35:79\"\n },\n {\n \"assignments\": [\n 37032\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37032,\n \"mutability\": \"mutable\",\n \"name\": \"expectedTokensIn\",\n \"nameLocation\": \"11324:16:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"11309:31:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37030,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37029,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"11309:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"11309:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"11309:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37031,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"11309:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37033,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11309:31:79\"\n },\n {\n \"id\": 37126,\n \"nodeType\": \"Block\",\n \"src\": \"11350:706:79\",\n \"statements\": [\n {\n \"assignments\": [\n 37038,\n null,\n null\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37038,\n \"mutability\": \"mutable\",\n \"name\": \"poolTokens\",\n \"nameLocation\": \"11381:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37126,\n \"src\": \"11365:26:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37036,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37035,\n \"name\": \"IERC20\",\n \"nameLocations\": [\n \"11365:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 35010,\n \"src\": \"11365:6:79\"\n },\n \"referencedDeclaration\": 35010,\n \"src\": \"11365:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n },\n \"id\": 37037,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"11365:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr\",\n \"typeString\": \"contract IERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n null,\n null\n ],\n \"id\": 37043,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37041,\n \"name\": \"poolId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36994,\n \"src\": \"11419:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"id\": 37039,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"11399:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37040,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11405:13:79\",\n \"memberName\": \"getPoolTokens\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34647,\n \"src\": \"11399:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"id\": 37042,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11399:27:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"tuple(contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11364:62:79\"\n },\n {\n \"expression\": {\n \"id\": 37052,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 37044,\n \"name\": \"expectedTokensIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37032,\n \"src\": \"11440:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37048,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36981,\n \"src\": \"11500:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37047,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"11492:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37046,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11492:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37049,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11492:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37050,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11512:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n ],\n \"id\": 37045,\n \"name\": \"_getPoolTokensWithNoPremintedBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38195,\n \"src\": \"11459:32:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)\"\n }\n },\n \"id\": 37051,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11459:64:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"src\": \"11440:83:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37053,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11440:83:79\"\n },\n {\n \"expression\": {\n \"id\": 37064,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"id\": 37054,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"11537:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37056,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"11545:6:79\",\n \"memberName\": \"assets\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34664,\n \"src\": \"11537:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr\",\n \"typeString\": \"contract IAsset[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37061,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11567:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 37062,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11578:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"11567:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37060,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"11554:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (contract IAsset[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37058,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37057,\n \"name\": \"IAsset\",\n \"nameLocations\": [\n \"11558:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33988,\n \"src\": \"11558:6:79\"\n },\n \"referencedDeclaration\": 33988,\n \"src\": \"11558:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n },\n \"id\": 37059,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"11558:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IAsset_$33988_$dyn_storage_ptr\",\n \"typeString\": \"contract IAsset[]\"\n }\n }\n },\n \"id\": 37063,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11554:31:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr\",\n \"typeString\": \"contract IAsset[] memory\"\n }\n },\n \"src\": \"11537:48:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr\",\n \"typeString\": \"contract IAsset[] memory\"\n }\n },\n \"id\": 37065,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11537:48:79\"\n },\n {\n \"body\": {\n \"expression\": {\n \"id\": 37089,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37076,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"11643:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37079,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11651:6:79\",\n \"memberName\": \"assets\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34664,\n \"src\": \"11643:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IAsset_$33988_$dyn_memory_ptr\",\n \"typeString\": \"contract IAsset[] memory\"\n }\n },\n \"id\": 37080,\n \"indexExpression\": {\n \"id\": 37078,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37067,\n \"src\": \"11658:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"11643:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37084,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11678:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 37086,\n \"indexExpression\": {\n \"id\": 37085,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37067,\n \"src\": \"11689:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"11678:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n ],\n \"id\": 37083,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"11670:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37082,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11670:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37087,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11670:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37081,\n \"name\": \"IAsset\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33988,\n \"src\": \"11663:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAsset_$33988_$\",\n \"typeString\": \"type(contract IAsset)\"\n }\n },\n \"id\": 37088,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11663:30:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n },\n \"src\": \"11643:50:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n },\n \"id\": 37090,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11643:50:79\"\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37072,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37069,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37067,\n \"src\": \"11615:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37070,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11619:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 37071,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11630:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"11619:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"11615:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37091,\n \"initializationExpression\": {\n \"assignments\": [\n 37067\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37067,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"11612:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37091,\n \"src\": \"11604:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37066,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11604:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37068,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11604:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37074,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"11638:3:79\",\n \"subExpression\": {\n \"id\": 37073,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37067,\n \"src\": \"11640:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37075,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11638:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"11599:94:79\"\n },\n {\n \"expression\": {\n \"id\": 37101,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"id\": 37092,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"11707:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37094,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"11715:12:79\",\n \"memberName\": \"maxAmountsIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34667,\n \"src\": \"11707:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37098,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11744:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 37099,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11755:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"11744:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37097,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"11730:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (uint256[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37095,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11734:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37096,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"11734:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n }\n },\n \"id\": 37100,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"11730:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"src\": \"11707:55:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37102,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11707:55:79\"\n },\n {\n \"body\": {\n \"expression\": {\n \"id\": 37123,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37113,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"12002:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37116,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12010:12:79\",\n \"memberName\": \"maxAmountsIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34667,\n \"src\": \"12002:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37117,\n \"indexExpression\": {\n \"id\": 37115,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37104,\n \"src\": \"12023:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"12002:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37120,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"12033:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n },\n \"typeName\": {\n \"id\": 37119,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12033:7:79\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n }\n ],\n \"id\": 37118,\n \"name\": \"type\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -27,\n \"src\": \"12028:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_metatype_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37121,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12028:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_meta_type_t_uint256\",\n \"typeString\": \"type(uint256)\"\n }\n },\n \"id\": 37122,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"12042:3:79\",\n \"memberName\": \"max\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"12028:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"12002:43:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37124,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"12002:43:79\"\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37109,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37106,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37104,\n \"src\": \"11974:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37107,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37038,\n \"src\": \"11978:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 37108,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"11989:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"11978:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"11974:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37125,\n \"initializationExpression\": {\n \"assignments\": [\n 37104\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37104,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"11971:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37125,\n \"src\": \"11963:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37103,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"11963:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37105,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"11963:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37111,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"11997:3:79\",\n \"subExpression\": {\n \"id\": 37110,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37104,\n \"src\": \"11999:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37112,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"11997:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"11958:87:79\"\n }\n ]\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37131,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"id\": 37127,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12145:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37128,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12161:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"12145:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37129,\n \"name\": \"expectedTokensIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37032,\n \"src\": \"12171:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37130,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12188:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"12171:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"12145:49:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37135,\n \"nodeType\": \"IfStatement\",\n \"src\": \"12141:100:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37132,\n \"name\": \"BalancerPoolAdaptor___LengthMismatch\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36667,\n \"src\": \"12203:36:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37133,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12203:38:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37134,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"12196:45:79\"\n }\n },\n {\n \"id\": 37353,\n \"nodeType\": \"Block\",\n \"src\": \"12346:2904:79\",\n \"statements\": [\n {\n \"assignments\": [\n 37140\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37140,\n \"mutability\": \"mutable\",\n \"name\": \"joinAmounts\",\n \"nameLocation\": \"12377:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37353,\n \"src\": \"12360:28:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37138,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12360:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37139,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"12360:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37147,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37144,\n \"name\": \"expectedTokensIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37032,\n \"src\": \"12405:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37145,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12422:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"12405:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37143,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"12391:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (uint256[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37141,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12395:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37142,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"12395:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n }\n },\n \"id\": 37146,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12391:38:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"12360:69:79\"\n },\n {\n \"body\": {\n \"id\": 37340,\n \"nodeType\": \"Block\",\n \"src\": \"12492:2651:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37163,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37158,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12622:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37160,\n \"indexExpression\": {\n \"id\": 37159,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12638:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"12622:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37161,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12641:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"12622:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 37162,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"12651:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"12622:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37165,\n \"nodeType\": \"IfStatement\",\n \"src\": \"12618:44:79\",\n \"trueBody\": {\n \"id\": 37164,\n \"nodeType\": \"Continue\",\n \"src\": \"12654:8:79\"\n }\n },\n {\n \"assignments\": [\n 37168\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37168,\n \"mutability\": \"mutable\",\n \"name\": \"inputToken\",\n \"nameLocation\": \"12793:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37340,\n \"src\": \"12787:16:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 37167,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37166,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"12787:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"12787:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"12787:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37178,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37172,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12820:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37174,\n \"indexExpression\": {\n \"id\": 37173,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12836:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"12820:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37175,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12839:7:79\",\n \"memberName\": \"assetIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34744,\n \"src\": \"12820:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37171,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"12812:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37170,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12812:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37176,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12812:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37169,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"12806:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37177,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12806:42:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"12787:61:79\"\n },\n {\n \"expression\": {\n \"id\": 37190,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37179,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12866:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37181,\n \"indexExpression\": {\n \"id\": 37180,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12882:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"12866:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37182,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"12885:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"12866:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 37184,\n \"name\": \"inputToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37168,\n \"src\": \"12908:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37185,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12920:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37187,\n \"indexExpression\": {\n \"id\": 37186,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12936:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"12920:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37188,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12939:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"12920:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37183,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38439,\n \"src\": \"12894:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 37189,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12894:52:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"12866:80:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37191,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"12866:80:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37197,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"12995:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37196,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"12987:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37195,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12987:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37198,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12987:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37199,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"13003:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37201,\n \"indexExpression\": {\n \"id\": 37200,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"13019:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"13003:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37202,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13022:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"13003:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37192,\n \"name\": \"inputToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37168,\n \"src\": \"12964:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37194,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12975:11:79\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 33969,\n \"src\": \"12964:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 37203,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"12964:65:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37204,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"12964:65:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37216,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37207,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"13146:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37209,\n \"indexExpression\": {\n \"id\": 37208,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"13162:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"13146:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37210,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13165:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"13146:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37206,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13138:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37205,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13138:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37211,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13138:36:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"hexValue\": \"30\",\n \"id\": 37214,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"13186:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n }\n ],\n \"id\": 37213,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13178:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37212,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13178:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37215,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13178:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"13138:50:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"falseBody\": {\n \"id\": 37338,\n \"nodeType\": \"Block\",\n \"src\": \"14746:383:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37324,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37313,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"14897:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37315,\n \"indexExpression\": {\n \"id\": 37314,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14913:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14897:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37316,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14916:7:79\",\n \"memberName\": \"assetIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34744,\n \"src\": \"14897:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37312,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"14889:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37311,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"14889:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37317,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14889:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37320,\n \"name\": \"expectedTokensIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37032,\n \"src\": \"14936:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37322,\n \"indexExpression\": {\n \"id\": 37321,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14953:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14936:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37319,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"14928:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37318,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"14928:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37323,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14928:28:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"14889:67:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37328,\n \"nodeType\": \"IfStatement\",\n \"src\": \"14885:161:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37325,\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36673,\n \"src\": \"14989:55:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37326,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14989:57:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37327,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"14982:64:79\"\n }\n },\n {\n \"expression\": {\n \"id\": 37336,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37329,\n \"name\": \"joinAmounts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37140,\n \"src\": \"15068:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37331,\n \"indexExpression\": {\n \"id\": 37330,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"15080:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15068:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37332,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15085:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37334,\n \"indexExpression\": {\n \"id\": 37333,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"15101:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15085:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37335,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15104:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"15085:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"15068:42:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37337,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15068:42:79\"\n }\n ]\n },\n \"id\": 37339,\n \"nodeType\": \"IfStatement\",\n \"src\": \"13134:1995:79\",\n \"trueBody\": {\n \"id\": 37310,\n \"nodeType\": \"Block\",\n \"src\": \"13190:1550:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37230,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37219,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"13327:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37221,\n \"indexExpression\": {\n \"id\": 37220,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"13343:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"13327:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37222,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13346:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"13327:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37218,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13319:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37217,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13319:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37223,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13319:36:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37226,\n \"name\": \"expectedTokensIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37032,\n \"src\": \"13367:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37228,\n \"indexExpression\": {\n \"id\": 37227,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"13384:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"13367:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37225,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13359:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37224,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13359:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37229,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13359:28:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"13319:68:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37234,\n \"nodeType\": \"IfStatement\",\n \"src\": \"13315:162:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37231,\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36673,\n \"src\": \"13420:55:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37232,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13420:57:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37233,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"13413:64:79\"\n }\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n },\n \"id\": 37242,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37235,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"13560:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37237,\n \"indexExpression\": {\n \"id\": 37236,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"13576:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"13560:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37238,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13579:4:79\",\n \"memberName\": \"kind\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34741,\n \"src\": \"13560:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"expression\": {\n \"expression\": {\n \"id\": 37239,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"13587:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IVault_$34921_$\",\n \"typeString\": \"type(contract IVault)\"\n }\n },\n \"id\": 37240,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13594:8:79\",\n \"memberName\": \"SwapKind\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34720,\n \"src\": \"13587:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_SwapKind_$34720_$\",\n \"typeString\": \"type(enum IVault.SwapKind)\"\n }\n },\n \"id\": 37241,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"13603:8:79\",\n \"memberName\": \"GIVEN_IN\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34718,\n \"src\": \"13587:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n }\n },\n \"src\": \"13560:51:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37246,\n \"nodeType\": \"IfStatement\",\n \"src\": \"13556:125:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37243,\n \"name\": \"BalancerPoolAdaptor___WrongSwapKind\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36670,\n \"src\": \"13644:35:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37244,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13644:37:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37245,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"13637:44:79\"\n }\n },\n {\n \"assignments\": [\n 37251\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37251,\n \"mutability\": \"mutable\",\n \"name\": \"fundManagement\",\n \"nameLocation\": \"13789:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37310,\n \"src\": \"13760:43:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement\"\n },\n \"typeName\": {\n \"id\": 37250,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37249,\n \"name\": \"IVault.FundManagement\",\n \"nameLocations\": [\n \"13760:6:79\",\n \"13767:14:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34813,\n \"src\": \"13760:21:79\"\n },\n \"referencedDeclaration\": 34813,\n \"src\": \"13760:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_storage_ptr\",\n \"typeString\": \"struct IVault.FundManagement\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37268,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37256,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"13870:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37255,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13862:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37254,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13862:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37257,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13862:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"hexValue\": \"66616c7365\",\n \"id\": 37258,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"13922:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37263,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"13980:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37262,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13972:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37261,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13972:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37264,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13972:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37260,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"13964:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_payable_$\",\n \"typeString\": \"type(address payable)\"\n },\n \"typeName\": {\n \"id\": 37259,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"13964:8:79\",\n \"stateMutability\": \"payable\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37265,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13964:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n {\n \"hexValue\": \"66616c7365\",\n \"id\": 37266,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"14031:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n ],\n \"expression\": {\n \"id\": 37252,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"13806:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IVault_$34921_$\",\n \"typeString\": \"type(contract IVault)\"\n }\n },\n \"id\": 37253,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"13813:14:79\",\n \"memberName\": \"FundManagement\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34813,\n \"src\": \"13806:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_struct$_FundManagement_$34813_storage_ptr_$\",\n \"typeString\": \"type(struct IVault.FundManagement storage pointer)\"\n }\n },\n \"id\": 37267,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"structConstructorCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [\n \"13854:6:79\",\n \"13901:19:79\",\n \"13953:9:79\",\n \"14012:17:79\"\n ],\n \"names\": [\n \"sender\",\n \"fromInternalBalance\",\n \"recipient\",\n \"toInternalBalance\"\n ],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"13806:253:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"13760:299:79\"\n },\n {\n \"assignments\": [\n 37270\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37270,\n \"mutability\": \"mutable\",\n \"name\": \"swapAmountOut\",\n \"nameLocation\": \"14260:13:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37310,\n \"src\": \"14252:21:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37269,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"14252:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37286,\n \"initialValue\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37273,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"14312:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37275,\n \"indexExpression\": {\n \"id\": 37274,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14328:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14312:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n {\n \"id\": 37276,\n \"name\": \"fundManagement\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37251,\n \"src\": \"14356:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n }\n },\n {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37277,\n \"name\": \"swapData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36988,\n \"src\": \"14396:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData memory\"\n }\n },\n \"id\": 37278,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14405:18:79\",\n \"memberName\": \"minAmountsForSwaps\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 36682,\n \"src\": \"14396:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37280,\n \"indexExpression\": {\n \"id\": 37279,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14424:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14396:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37281,\n \"name\": \"swapData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36988,\n \"src\": \"14452:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData memory\"\n }\n },\n \"id\": 37282,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14461:13:79\",\n \"memberName\": \"swapDeadlines\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 36685,\n \"src\": \"14452:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37284,\n \"indexExpression\": {\n \"id\": 37283,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14475:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14452:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n },\n {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37271,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"14276:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37272,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14282:4:79\",\n \"memberName\": \"swap\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34736,\n \"src\": \"14276:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_payable$_t_struct$_SingleSwap_$34752_memory_ptr_$_t_struct$_FundManagement_$34813_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)\"\n }\n },\n \"id\": 37285,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14276:223:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"14252:247:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37299,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"14646:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37298,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"14638:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37297,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"14638:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37300,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14638:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37301,\n \"name\": \"swapAmountOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37270,\n \"src\": \"14654:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37290,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"14596:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37292,\n \"indexExpression\": {\n \"id\": 37291,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14612:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14596:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37293,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14615:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"14596:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37289,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"14588:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37288,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"14588:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37294,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14588:36:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37287,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"14582:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37295,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14582:43:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37296,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"14626:11:79\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 33969,\n \"src\": \"14582:55:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 37302,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"14582:86:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37303,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"14582:86:79\"\n },\n {\n \"expression\": {\n \"id\": 37308,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37304,\n \"name\": \"joinAmounts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37140,\n \"src\": \"14691:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37306,\n \"indexExpression\": {\n \"id\": 37305,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"14703:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"14691:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 37307,\n \"name\": \"swapAmountOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37270,\n \"src\": \"14708:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"14691:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37309,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"14691:30:79\"\n }\n ]\n }\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37154,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37151,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12459:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37152,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"12463:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37153,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"12479:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"12463:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"12459:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37341,\n \"initializationExpression\": {\n \"assignments\": [\n 37149\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37149,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"12456:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37341,\n \"src\": \"12448:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37148,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"12448:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37150,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"12448:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37156,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"12487:3:79\",\n \"subExpression\": {\n \"id\": 37155,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37149,\n \"src\": \"12489:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37157,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"12487:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"12443:2700:79\"\n },\n {\n \"expression\": {\n \"id\": 37351,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"id\": 37342,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"15156:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n },\n \"id\": 37344,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"15164:8:79\",\n \"memberName\": \"userData\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34669,\n \"src\": \"15156:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 37347,\n \"name\": \"EXACT_TOKENS_IN_FOR_BPT_OUT\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36701,\n \"src\": \"15186:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"id\": 37348,\n \"name\": \"joinAmounts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37140,\n \"src\": \"15215:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n {\n \"id\": 37349,\n \"name\": \"minimumBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36990,\n \"src\": \"15228:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37345,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"15175:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 37346,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"15179:6:79\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"15175:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 37350,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15175:64:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n \"src\": \"15156:83:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n \"id\": 37352,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15156:83:79\"\n }\n ]\n },\n {\n \"assignments\": [\n 37355\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37355,\n \"mutability\": \"mutable\",\n \"name\": \"targetDelta\",\n \"nameLocation\": \"15268:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"15260:19:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37354,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15260:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37363,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37360,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"15310:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37359,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15302:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37358,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15302:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37361,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15302:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37356,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36981,\n \"src\": \"15282:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37357,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15292:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"15282:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37362,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15282:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"15260:56:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37367,\n \"name\": \"poolId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36994,\n \"src\": \"15341:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37370,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"15357:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37369,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15349:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37368,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15349:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37371,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15349:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37374,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"15372:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37373,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15364:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37372,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15364:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37375,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15364:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37376,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37020,\n \"src\": \"15379:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_struct$_JoinPoolRequest_$34672_memory_ptr\",\n \"typeString\": \"struct IVault.JoinPoolRequest memory\"\n }\n ],\n \"expression\": {\n \"id\": 37364,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"15326:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37366,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15332:8:79\",\n \"memberName\": \"joinPool\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34660,\n \"src\": \"15326:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$34672_memory_ptr_$returns$__$\",\n \"typeString\": \"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external\"\n }\n },\n \"id\": 37377,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15326:61:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37378,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15326:61:79\"\n },\n {\n \"expression\": {\n \"id\": 37389,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 37379,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37355,\n \"src\": \"15397:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37388,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37384,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"15439:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37383,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15431:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37382,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15431:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37385,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15431:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37380,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36981,\n \"src\": \"15411:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37381,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15421:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"15411:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37386,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15411:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"-\",\n \"rightExpression\": {\n \"id\": 37387,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37355,\n \"src\": \"15448:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"15411:48:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"15397:62:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37390,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15397:62:79\"\n },\n {\n \"assignments\": [\n 37395\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37395,\n \"mutability\": \"mutable\",\n \"name\": \"inputAmounts\",\n \"nameLocation\": \"15580:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"15563:29:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37393,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15563:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37394,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"15563:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37402,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37399,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15609:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37400,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15625:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"15609:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37398,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"15595:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (uint256[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37396,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15599:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37397,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"15599:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n }\n },\n \"id\": 37401,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15595:37:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"15563:69:79\"\n },\n {\n \"assignments\": [\n 37407\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37407,\n \"mutability\": \"mutable\",\n \"name\": \"inputTokens\",\n \"nameLocation\": \"15657:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"15642:26:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37405,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37404,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"15642:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"15642:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"15642:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37406,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"15642:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37415,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37412,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15683:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37413,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15699:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"15683:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37411,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"15671:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (contract ERC20[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37409,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37408,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"15675:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"15675:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"15675:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37410,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"15675:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n }\n },\n \"id\": 37414,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15671:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"15642:64:79\"\n },\n {\n \"body\": {\n \"id\": 37493,\n \"nodeType\": \"Block\",\n \"src\": \"15846:529:79\",\n \"statements\": [\n {\n \"assignments\": [\n 37427\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37427,\n \"mutability\": \"mutable\",\n \"name\": \"assetIn\",\n \"nameLocation\": \"15868:7:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37493,\n \"src\": \"15860:15:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 37426,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15860:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37435,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37430,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15886:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37432,\n \"indexExpression\": {\n \"id\": 37431,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"15902:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15886:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37433,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15905:7:79\",\n \"memberName\": \"assetIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34744,\n \"src\": \"15886:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37429,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15878:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37428,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15878:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37434,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15878:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"15860:53:79\"\n },\n {\n \"expression\": {\n \"id\": 37445,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37436,\n \"name\": \"inputTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37407,\n \"src\": \"15927:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37438,\n \"indexExpression\": {\n \"id\": 37437,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"15939:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15927:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37442,\n \"name\": \"assetIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37427,\n \"src\": \"15958:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37441,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"15950:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37440,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15950:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37443,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15950:16:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37439,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"15944:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37444,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"15944:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"src\": \"15927:40:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37446,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15927:40:79\"\n },\n {\n \"expression\": {\n \"id\": 37454,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37447,\n \"name\": \"inputAmounts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37395,\n \"src\": \"15981:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37449,\n \"indexExpression\": {\n \"id\": 37448,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"15994:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15981:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37450,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15999:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37452,\n \"indexExpression\": {\n \"id\": 37451,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"16015:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"15999:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37453,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"16018:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"15999:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"15981:43:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37455,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15981:43:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37457,\n \"name\": \"inputTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37407,\n \"src\": \"16106:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37459,\n \"indexExpression\": {\n \"id\": 37458,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"16118:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"16106:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37462,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"16130:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37461,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"16122:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37460,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16122:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37463,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16122:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37456,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38467,\n \"src\": \"16082:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 37464,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16082:55:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37465,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"16082:55:79\"\n },\n {\n \"assignments\": [\n 37467\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37467,\n \"mutability\": \"mutable\",\n \"name\": \"assetOut\",\n \"nameLocation\": \"16219:8:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37493,\n \"src\": \"16211:16:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 37466,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16211:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37475,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37470,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"16238:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37472,\n \"indexExpression\": {\n \"id\": 37471,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"16254:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"16238:18:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37473,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"16257:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"16238:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37469,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"16230:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37468,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16230:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37474,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16230:36:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"16211:55:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37481,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37476,\n \"name\": \"assetOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37467,\n \"src\": \"16284:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"hexValue\": \"30\",\n \"id\": 37479,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"16304:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n }\n ],\n \"id\": 37478,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"16296:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37477,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16296:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37480,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16296:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"16284:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37492,\n \"nodeType\": \"IfStatement\",\n \"src\": \"16280:84:79\",\n \"trueBody\": {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37484,\n \"name\": \"assetOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37467,\n \"src\": \"16338:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37483,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"16332:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37485,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16332:15:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37488,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"16357:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37487,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"16349:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37486,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16349:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37489,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16349:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37482,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38467,\n \"src\": \"16308:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 37490,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16308:56:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37491,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"16308:56:79\"\n }\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37422,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37419,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"15813:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37420,\n \"name\": \"swapsBeforeJoin\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36985,\n \"src\": \"15817:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37421,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"15833:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"15817:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"15813:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37494,\n \"initializationExpression\": {\n \"assignments\": [\n 37417\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37417,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"15810:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37494,\n \"src\": \"15802:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37416,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"15802:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37418,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"15802:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37424,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"15841:3:79\",\n \"subExpression\": {\n \"id\": 37423,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37417,\n \"src\": \"15843:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37425,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"15841:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"15797:578:79\"\n },\n {\n \"assignments\": [\n 37496\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37496,\n \"mutability\": \"mutable\",\n \"name\": \"valueInConvertedToTarget\",\n \"nameLocation\": \"16471:24:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37515,\n \"src\": \"16463:32:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37495,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"16463:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37503,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37499,\n \"name\": \"inputTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37407,\n \"src\": \"16520:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n {\n \"id\": 37500,\n \"name\": \"inputAmounts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37395,\n \"src\": \"16533:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n {\n \"id\": 37501,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36981,\n \"src\": \"16547:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n },\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"expression\": {\n \"id\": 37497,\n \"name\": \"priceRouter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37006,\n \"src\": \"16498:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"id\": 37498,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"16510:9:79\",\n \"memberName\": \"getValues\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 40842,\n \"src\": \"16498:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_contract$_ERC20_$33219_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20[] memory,uint256[] memory,contract ERC20) view external returns (uint256)\"\n }\n },\n \"id\": 37502,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16498:59:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"16463:94:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37510,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37504,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37355,\n \"src\": \"16571:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"id\": 37507,\n \"name\": \"balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36697,\n \"src\": \"16621:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n {\n \"hexValue\": \"316534\",\n \"id\": 37508,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"16639:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_10000_by_1\",\n \"typeString\": \"int_const 10000\"\n },\n \"value\": \"1e4\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n {\n \"typeIdentifier\": \"t_rational_10000_by_1\",\n \"typeString\": \"int_const 10000\"\n }\n ],\n \"expression\": {\n \"id\": 37505,\n \"name\": \"valueInConvertedToTarget\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37496,\n \"src\": \"16585:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37506,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"16610:10:79\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 42514,\n \"src\": \"16585:35:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 37509,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16585:58:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"16571:72:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37514,\n \"nodeType\": \"IfStatement\",\n \"src\": \"16567:129:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37511,\n \"name\": \"BalancerPoolAdaptor___Slippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36661,\n \"src\": \"16664:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37512,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"16664:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37513,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"16657:39:79\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 36978,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"10458:394:79\",\n \"text\": \" @notice Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins.\\n @dev `swapsBeforeJoin` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`.\\n IE if the first token in expected token array is DAI, the first swap in `swapsBeforeJoin` MUST be for DAI.\\n @dev Max Available logic IS supported.\"\n },\n \"functionSelector\": \"5c14acdb\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"joinPool\",\n \"nameLocation\": \"10866:8:79\",\n \"parameters\": {\n \"id\": 36991,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 36981,\n \"mutability\": \"mutable\",\n \"name\": \"targetBpt\",\n \"nameLocation\": \"10890:9:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37516,\n \"src\": \"10884:15:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 36980,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36979,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"10884:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"10884:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"10884:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36985,\n \"mutability\": \"mutable\",\n \"name\": \"swapsBeforeJoin\",\n \"nameLocation\": \"10936:15:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37516,\n \"src\": \"10909:42:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 36983,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36982,\n \"name\": \"IVault.SingleSwap\",\n \"nameLocations\": [\n \"10909:6:79\",\n \"10916:10:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34752,\n \"src\": \"10909:17:79\"\n },\n \"referencedDeclaration\": 34752,\n \"src\": \"10909:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_storage_ptr\",\n \"typeString\": \"struct IVault.SingleSwap\"\n }\n },\n \"id\": 36984,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"10909:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_storage_$dyn_storage_ptr\",\n \"typeString\": \"struct IVault.SingleSwap[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36988,\n \"mutability\": \"mutable\",\n \"name\": \"swapData\",\n \"nameLocation\": \"10977:8:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37516,\n \"src\": \"10961:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData\"\n },\n \"typeName\": {\n \"id\": 36987,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 36986,\n \"name\": \"SwapData\",\n \"nameLocations\": [\n \"10961:8:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 36686,\n \"src\": \"10961:8:79\"\n },\n \"referencedDeclaration\": 36686,\n \"src\": \"10961:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_storage_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 36990,\n \"mutability\": \"mutable\",\n \"name\": \"minimumBpt\",\n \"nameLocation\": \"11003:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37516,\n \"src\": \"10995:18:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 36989,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"10995:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"10874:145:79\"\n },\n \"returnParameters\": {\n \"id\": 36992,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"11029:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 37884,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"17221:4029:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 37883,\n \"nodeType\": \"Block\",\n \"src\": \"17411:3839:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 37534\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37534,\n \"mutability\": \"mutable\",\n \"name\": \"poolId\",\n \"nameLocation\": \"17429:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"17421:14:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 37533,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"17421:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37543,\n \"initialValue\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37538,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37520,\n \"src\": \"17456:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37537,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"17448:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37536,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"17448:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37539,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17448:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37535,\n \"name\": \"IBasePool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35186,\n \"src\": \"17438:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IBasePool_$35186_$\",\n \"typeString\": \"type(contract IBasePool)\"\n }\n },\n \"id\": 37540,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17438:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBasePool_$35186\",\n \"typeString\": \"contract IBasePool\"\n }\n },\n \"id\": 37541,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"17468:9:79\",\n \"memberName\": \"getPoolId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 35126,\n \"src\": \"17438:39:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () view external returns (bytes32)\"\n }\n },\n \"id\": 37542,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17438:41:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"17421:58:79\"\n },\n {\n \"assignments\": [\n 37548,\n null,\n null\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37548,\n \"mutability\": \"mutable\",\n \"name\": \"poolTokens\",\n \"nameLocation\": \"17550:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"17534:26:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37546,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37545,\n \"name\": \"IERC20\",\n \"nameLocations\": [\n \"17534:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 35010,\n \"src\": \"17534:6:79\"\n },\n \"referencedDeclaration\": 35010,\n \"src\": \"17534:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n },\n \"id\": 37547,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"17534:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr\",\n \"typeString\": \"contract IERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n null,\n null\n ],\n \"id\": 37553,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37551,\n \"name\": \"poolId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37534,\n \"src\": \"17588:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"id\": 37549,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"17568:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37550,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"17574:13:79\",\n \"memberName\": \"getPoolTokens\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34647,\n \"src\": \"17568:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"id\": 37552,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17568:27:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"tuple(contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"17533:62:79\"\n },\n {\n \"assignments\": [\n 37558\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37558,\n \"mutability\": \"mutable\",\n \"name\": \"expectedTokensOut\",\n \"nameLocation\": \"17620:17:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"17605:32:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37556,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37555,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"17605:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"17605:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"17605:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37557,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"17605:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37566,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37562,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37520,\n \"src\": \"17681:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37561,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"17673:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37560,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"17673:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37563,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17673:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37564,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37548,\n \"src\": \"17693:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n ],\n \"id\": 37559,\n \"name\": \"_getPoolTokensWithNoPremintedBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38195,\n \"src\": \"17640:32:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)\"\n }\n },\n \"id\": 37565,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17640:64:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"17605:99:79\"\n },\n {\n \"condition\": {\n \"expression\": {\n \"id\": 37567,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37530,\n \"src\": \"17765:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_ExitPoolRequest_$34697_memory_ptr\",\n \"typeString\": \"struct IVault.ExitPoolRequest memory\"\n }\n },\n \"id\": 37568,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"17773:17:79\",\n \"memberName\": \"toInternalBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34696,\n \"src\": \"17765:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37572,\n \"nodeType\": \"IfStatement\",\n \"src\": \"17761:90:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37569,\n \"name\": \"BalancerPoolAdaptor___InternalBalancesNotSupported\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36676,\n \"src\": \"17799:50:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37570,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17799:52:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37571,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"17792:59:79\"\n }\n },\n {\n \"assignments\": [\n 37577\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37577,\n \"mutability\": \"mutable\",\n \"name\": \"tokensOutDelta\",\n \"nameLocation\": \"17980:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"17963:31:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37575,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"17963:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37576,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"17963:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37584,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 37581,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18011:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37582,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18029:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18011:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37580,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"17997:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (uint256[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37578,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18001:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37579,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"18001:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_storage_ptr\",\n \"typeString\": \"uint256[]\"\n }\n }\n },\n \"id\": 37583,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"17997:39:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"17963:73:79\"\n },\n {\n \"body\": {\n \"expression\": {\n \"id\": 37607,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37595,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"18109:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37597,\n \"indexExpression\": {\n \"id\": 37596,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37586,\n \"src\": \"18124:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18109:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37604,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18168:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37603,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18160:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37602,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18160:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37605,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18160:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37598,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18129:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37600,\n \"indexExpression\": {\n \"id\": 37599,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37586,\n \"src\": \"18147:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18129:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37601,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18150:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"18129:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37606,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18129:45:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18109:65:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37608,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18109:65:79\"\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37591,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37588,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37586,\n \"src\": \"18062:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37589,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18066:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37590,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18084:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18066:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18062:28:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37609,\n \"initializationExpression\": {\n \"assignments\": [\n 37586\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37586,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"18059:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37609,\n \"src\": \"18051:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37585,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18051:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37587,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"18051:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37593,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"18092:3:79\",\n \"subExpression\": {\n \"id\": 37592,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37586,\n \"src\": \"18094:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37594,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18092:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"18046:128:79\"\n },\n {\n \"assignments\": [\n 37611\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37611,\n \"mutability\": \"mutable\",\n \"name\": \"targetDelta\",\n \"nameLocation\": \"18193:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"18185:19:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37610,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18185:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37619,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37616,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18235:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37615,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18227:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37614,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18227:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37617,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18227:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37612,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37520,\n \"src\": \"18207:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37613,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18217:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"18207:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37618,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18207:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"18185:56:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37623,\n \"name\": \"poolId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37534,\n \"src\": \"18266:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37626,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18282:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37625,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18274:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37624,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18274:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37627,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18274:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37632,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18305:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37631,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18297:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37630,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18297:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37633,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18297:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37629,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18289:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_payable_$\",\n \"typeString\": \"type(address payable)\"\n },\n \"typeName\": {\n \"id\": 37628,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18289:8:79\",\n \"stateMutability\": \"payable\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37634,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18289:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n {\n \"id\": 37635,\n \"name\": \"request\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37530,\n \"src\": \"18313:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_ExitPoolRequest_$34697_memory_ptr\",\n \"typeString\": \"struct IVault.ExitPoolRequest memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n },\n {\n \"typeIdentifier\": \"t_struct$_ExitPoolRequest_$34697_memory_ptr\",\n \"typeString\": \"struct IVault.ExitPoolRequest memory\"\n }\n ],\n \"expression\": {\n \"id\": 37620,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"18251:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37622,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18257:8:79\",\n \"memberName\": \"exitPool\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34685,\n \"src\": \"18251:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$34697_memory_ptr_$returns$__$\",\n \"typeString\": \"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external\"\n }\n },\n \"id\": 37636,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18251:70:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37637,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18251:70:79\"\n },\n {\n \"expression\": {\n \"id\": 37648,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 37638,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37611,\n \"src\": \"18331:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37647,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37639,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37611,\n \"src\": \"18345:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"-\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37644,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18387:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37643,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18379:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37642,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18379:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37645,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18379:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37640,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37520,\n \"src\": \"18359:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37641,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18369:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"18359:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37646,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18359:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18345:48:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18331:62:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37649,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18331:62:79\"\n },\n {\n \"body\": {\n \"expression\": {\n \"id\": 37676,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37660,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"18466:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37662,\n \"indexExpression\": {\n \"id\": 37661,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37651,\n \"src\": \"18481:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18466:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37675,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37669,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18525:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37668,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18517:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37667,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18517:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37670,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18517:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37663,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18486:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37665,\n \"indexExpression\": {\n \"id\": 37664,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37651,\n \"src\": \"18504:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18486:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37666,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18507:9:79\",\n \"memberName\": \"balanceOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32862,\n \"src\": \"18486:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 37671,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18486:45:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"-\",\n \"rightExpression\": {\n \"baseExpression\": {\n \"id\": 37672,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"18534:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37674,\n \"indexExpression\": {\n \"id\": 37673,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37651,\n \"src\": \"18549:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18534:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18486:65:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18466:85:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37677,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18466:85:79\"\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37656,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37653,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37651,\n \"src\": \"18419:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37654,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18423:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37655,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18441:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18423:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18419:28:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37678,\n \"initializationExpression\": {\n \"assignments\": [\n 37651\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37651,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"18416:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37678,\n \"src\": \"18408:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37650,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18408:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37652,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"18408:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37658,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"18449:3:79\",\n \"subExpression\": {\n \"id\": 37657,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37651,\n \"src\": \"18451:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37659,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18449:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"18403:148:79\"\n },\n {\n \"assignments\": [\n 37681\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37681,\n \"mutability\": \"mutable\",\n \"name\": \"priceRouter\",\n \"nameLocation\": \"18574:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"18562:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n },\n \"typeName\": {\n \"id\": 37680,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37679,\n \"name\": \"PriceRouter\",\n \"nameLocations\": [\n \"18562:11:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 41904,\n \"src\": \"18562:11:79\"\n },\n \"referencedDeclaration\": 41904,\n \"src\": \"18562:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37690,\n \"initialValue\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37685,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"18603:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37684,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18595:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37683,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18595:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37686,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18595:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37682,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 32635,\n \"src\": \"18588:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$32635_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 37687,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18588:21:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$32635\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 37688,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18610:11:79\",\n \"memberName\": \"priceRouter\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 29326,\n \"src\": \"18588:33:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_contract$_PriceRouter_$41904_$\",\n \"typeString\": \"function () view external returns (contract PriceRouter)\"\n }\n },\n \"id\": 37689,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18588:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"18562:61:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37695,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"id\": 37691,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"18637:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37692,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18652:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18637:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37693,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18662:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37694,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18680:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18662:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18637:49:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37699,\n \"nodeType\": \"IfStatement\",\n \"src\": \"18633:100:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37696,\n \"name\": \"BalancerPoolAdaptor___LengthMismatch\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36667,\n \"src\": \"18695:36:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37697,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18695:38:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37698,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"18688:45:79\"\n }\n },\n {\n \"body\": {\n \"id\": 37861,\n \"nodeType\": \"Block\",\n \"src\": \"18794:2118:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37714,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"baseExpression\": {\n \"id\": 37710,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"18877:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37712,\n \"indexExpression\": {\n \"id\": 37711,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"18892:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"18877:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 37713,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"18898:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"18877:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37716,\n \"nodeType\": \"IfStatement\",\n \"src\": \"18873:36:79\",\n \"trueBody\": {\n \"id\": 37715,\n \"nodeType\": \"Continue\",\n \"src\": \"18901:8:79\"\n }\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37730,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37719,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"19000:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37721,\n \"indexExpression\": {\n \"id\": 37720,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19015:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19000:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37722,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19018:7:79\",\n \"memberName\": \"assetIn\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34744,\n \"src\": \"19000:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37718,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"18992:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37717,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18992:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37723,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"18992:34:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37726,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"19038:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37728,\n \"indexExpression\": {\n \"id\": 37727,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19056:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19038:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37725,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19030:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37724,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19030:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37729,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19030:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"18992:67:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37734,\n \"nodeType\": \"IfStatement\",\n \"src\": \"18988:153:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37731,\n \"name\": \"BalancerPoolAdaptor___SwapTokenAndExpectedTokenMismatch\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36673,\n \"src\": \"19084:55:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37732,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19084:57:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37733,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"19077:64:79\"\n }\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 37746,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37737,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"19168:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37739,\n \"indexExpression\": {\n \"id\": 37738,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19183:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19168:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37740,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19186:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"19168:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37736,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19160:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37735,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19160:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37741,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19160:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"hexValue\": \"30\",\n \"id\": 37744,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"19207:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n }\n ],\n \"id\": 37743,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19199:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37742,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19199:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37745,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19199:10:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"19160:49:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"falseBody\": {\n \"condition\": {\n \"id\": 37854,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"20611:46:79\",\n \"subExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37850,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"20636:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37852,\n \"indexExpression\": {\n \"id\": 37851,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20654:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20636:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"expression\": {\n \"id\": 37848,\n \"name\": \"priceRouter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37681,\n \"src\": \"20612:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"id\": 37849,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"20624:11:79\",\n \"memberName\": \"isSupported\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 40619,\n \"src\": \"20612:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_contract$_ERC20_$33219_$returns$_t_bool_$\",\n \"typeString\": \"function (contract ERC20) view external returns (bool)\"\n }\n },\n \"id\": 37853,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20612:45:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37859,\n \"nodeType\": \"IfStatement\",\n \"src\": \"20607:295:79\",\n \"trueBody\": {\n \"id\": 37858,\n \"nodeType\": \"Block\",\n \"src\": \"20659:243:79\",\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37855,\n \"name\": \"BalancerPoolAdaptor___UnsupportedTokenNotSwapped\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36679,\n \"src\": \"20837:48:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37856,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20837:50:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37857,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"20830:57:79\"\n }\n ]\n }\n },\n \"id\": 37860,\n \"nodeType\": \"IfStatement\",\n \"src\": \"19156:1746:79\",\n \"trueBody\": {\n \"id\": 37847,\n \"nodeType\": \"Block\",\n \"src\": \"19211:1390:79\",\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37753,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"19270:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37752,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19262:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37751,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19262:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37754,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19262:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"baseExpression\": {\n \"id\": 37755,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"19278:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37757,\n \"indexExpression\": {\n \"id\": 37756,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19293:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19278:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37747,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"19229:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37749,\n \"indexExpression\": {\n \"id\": 37748,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19247:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19229:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37750,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19250:11:79\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 33969,\n \"src\": \"19229:32:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 37758,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19229:67:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37759,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"19229:67:79\"\n },\n {\n \"assignments\": [\n 37764\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37764,\n \"mutability\": \"mutable\",\n \"name\": \"fundManagement\",\n \"nameLocation\": \"19426:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37847,\n \"src\": \"19397:43:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement\"\n },\n \"typeName\": {\n \"id\": 37763,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37762,\n \"name\": \"IVault.FundManagement\",\n \"nameLocations\": [\n \"19397:6:79\",\n \"19404:14:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34813,\n \"src\": \"19397:21:79\"\n },\n \"referencedDeclaration\": 34813,\n \"src\": \"19397:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_storage_ptr\",\n \"typeString\": \"struct IVault.FundManagement\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37781,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37769,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"19503:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37768,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19495:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37767,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19495:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37770,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19495:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"hexValue\": \"66616c7365\",\n \"id\": 37771,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"19551:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37776,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"19605:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37775,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19597:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37774,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19597:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37777,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19597:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37773,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"19589:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_payable_$\",\n \"typeString\": \"type(address payable)\"\n },\n \"typeName\": {\n \"id\": 37772,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"19589:8:79\",\n \"stateMutability\": \"payable\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37778,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19589:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n {\n \"hexValue\": \"66616c7365\",\n \"id\": 37779,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"19652:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n ],\n \"expression\": {\n \"id\": 37765,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"19443:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IVault_$34921_$\",\n \"typeString\": \"type(contract IVault)\"\n }\n },\n \"id\": 37766,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19450:14:79\",\n \"memberName\": \"FundManagement\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34813,\n \"src\": \"19443:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_struct$_FundManagement_$34813_storage_ptr_$\",\n \"typeString\": \"type(struct IVault.FundManagement storage pointer)\"\n }\n },\n \"id\": 37780,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"structConstructorCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [\n \"19487:6:79\",\n \"19530:19:79\",\n \"19578:9:79\",\n \"19633:17:79\"\n ],\n \"names\": [\n \"sender\",\n \"fromInternalBalance\",\n \"recipient\",\n \"toInternalBalance\"\n ],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19443:233:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"19397:279:79\"\n },\n {\n \"expression\": {\n \"id\": 37789,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37782,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"19766:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37784,\n \"indexExpression\": {\n \"id\": 37783,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19781:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19766:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37785,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"memberLocation\": \"19784:6:79\",\n \"memberName\": \"amount\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34749,\n \"src\": \"19766:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"baseExpression\": {\n \"id\": 37786,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"19793:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37788,\n \"indexExpression\": {\n \"id\": 37787,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19808:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19793:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"19766:44:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37790,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"19766:44:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n },\n \"id\": 37798,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37791,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"19885:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37793,\n \"indexExpression\": {\n \"id\": 37792,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"19900:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"19885:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37794,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19903:4:79\",\n \"memberName\": \"kind\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34741,\n \"src\": \"19885:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"expression\": {\n \"expression\": {\n \"id\": 37795,\n \"name\": \"IVault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34921,\n \"src\": \"19911:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IVault_$34921_$\",\n \"typeString\": \"type(contract IVault)\"\n }\n },\n \"id\": 37796,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"19918:8:79\",\n \"memberName\": \"SwapKind\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34720,\n \"src\": \"19911:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_enum$_SwapKind_$34720_$\",\n \"typeString\": \"type(enum IVault.SwapKind)\"\n }\n },\n \"id\": 37797,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"19927:8:79\",\n \"memberName\": \"GIVEN_IN\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34718,\n \"src\": \"19911:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_enum$_SwapKind_$34720\",\n \"typeString\": \"enum IVault.SwapKind\"\n }\n },\n \"src\": \"19885:50:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37802,\n \"nodeType\": \"IfStatement\",\n \"src\": \"19881:100:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37799,\n \"name\": \"BalancerPoolAdaptor___WrongSwapKind\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36670,\n \"src\": \"19944:35:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37800,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"19944:37:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37801,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"19937:44:79\"\n }\n },\n {\n \"expression\": {\n \"id\": 37821,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37803,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"20083:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37805,\n \"indexExpression\": {\n \"id\": 37804,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20098:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20083:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37808,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"20135:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37810,\n \"indexExpression\": {\n \"id\": 37809,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20150:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20135:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n {\n \"id\": 37811,\n \"name\": \"fundManagement\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37764,\n \"src\": \"20174:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n }\n },\n {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37812,\n \"name\": \"swapData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37527,\n \"src\": \"20210:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData memory\"\n }\n },\n \"id\": 37813,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"20219:18:79\",\n \"memberName\": \"minAmountsForSwaps\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 36682,\n \"src\": \"20210:27:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37815,\n \"indexExpression\": {\n \"id\": 37814,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20238:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20210:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"baseExpression\": {\n \"expression\": {\n \"id\": 37816,\n \"name\": \"swapData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37527,\n \"src\": \"20262:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData memory\"\n }\n },\n \"id\": 37817,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"20271:13:79\",\n \"memberName\": \"swapDeadlines\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 36685,\n \"src\": \"20262:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n \"id\": 37819,\n \"indexExpression\": {\n \"id\": 37818,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20285:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20262:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n },\n {\n \"typeIdentifier\": \"t_struct$_FundManagement_$34813_memory_ptr\",\n \"typeString\": \"struct IVault.FundManagement memory\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37806,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"20103:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 37807,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"20109:4:79\",\n \"memberName\": \"swap\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34736,\n \"src\": \"20103:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_payable$_t_struct$_SingleSwap_$34752_memory_ptr_$_t_struct$_FundManagement_$34813_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)\"\n }\n },\n \"id\": 37820,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20103:202:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"20083:222:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37822,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"20083:222:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 37824,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"20388:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37826,\n \"indexExpression\": {\n \"id\": 37825,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20406:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20388:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37829,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"20418:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n ],\n \"id\": 37828,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"20410:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37827,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"20410:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37830,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20410:14:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37823,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38467,\n \"src\": \"20364:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 37831,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20364:61:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37832,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"20364:61:79\"\n },\n {\n \"expression\": {\n \"id\": 37845,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 37833,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"20521:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37835,\n \"indexExpression\": {\n \"id\": 37834,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20539:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20521:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"expression\": {\n \"baseExpression\": {\n \"id\": 37839,\n \"name\": \"swapsAfterExit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37524,\n \"src\": \"20558:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory[] memory\"\n }\n },\n \"id\": 37841,\n \"indexExpression\": {\n \"id\": 37840,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"20573:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"20558:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap memory\"\n }\n },\n \"id\": 37842,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"20576:8:79\",\n \"memberName\": \"assetOut\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34747,\n \"src\": \"20558:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAsset_$33988\",\n \"typeString\": \"contract IAsset\"\n }\n ],\n \"id\": 37838,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"20550:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37837,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"20550:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37843,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20550:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37836,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"20544:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37844,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"20544:42:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"src\": \"20521:65:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37846,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"20521:65:79\"\n }\n ]\n }\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37706,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37703,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"18759:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"expression\": {\n \"id\": 37704,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"18763:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 37705,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"18781:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"18763:24:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"18759:28:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37862,\n \"initializationExpression\": {\n \"assignments\": [\n 37701\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37701,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"18756:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37862,\n \"src\": \"18748:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37700,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"18748:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37702,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"18748:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 37708,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"18789:3:79\",\n \"subExpression\": {\n \"id\": 37707,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37701,\n \"src\": \"18791:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37709,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"18789:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"18743:2169:79\"\n },\n {\n \"assignments\": [\n 37864\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37864,\n \"mutability\": \"mutable\",\n \"name\": \"valueOutConvertedToTarget\",\n \"nameLocation\": \"21008:25:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37883,\n \"src\": \"21000:33:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37863,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21000:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37871,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37867,\n \"name\": \"expectedTokensOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37558,\n \"src\": \"21058:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n {\n \"id\": 37868,\n \"name\": \"tokensOutDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37577,\n \"src\": \"21077:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n }\n },\n {\n \"id\": 37869,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37520,\n \"src\": \"21093:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_uint256_$dyn_memory_ptr\",\n \"typeString\": \"uint256[] memory\"\n },\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"expression\": {\n \"id\": 37865,\n \"name\": \"priceRouter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37681,\n \"src\": \"21036:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_PriceRouter_$41904\",\n \"typeString\": \"contract PriceRouter\"\n }\n },\n \"id\": 37866,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"21048:9:79\",\n \"memberName\": \"getValues\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 40842,\n \"src\": \"21036:21:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_contract$_ERC20_$33219_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20[] memory,uint256[] memory,contract ERC20) view external returns (uint256)\"\n }\n },\n \"id\": 37870,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21036:67:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"21000:103:79\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 37878,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 37872,\n \"name\": \"valueOutConvertedToTarget\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37864,\n \"src\": \"21117:25:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"arguments\": [\n {\n \"id\": 37875,\n \"name\": \"balancerSlippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36697,\n \"src\": \"21168:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n {\n \"hexValue\": \"316534\",\n \"id\": 37876,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"21186:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_10000_by_1\",\n \"typeString\": \"int_const 10000\"\n },\n \"value\": \"1e4\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n {\n \"typeIdentifier\": \"t_rational_10000_by_1\",\n \"typeString\": \"int_const 10000\"\n }\n ],\n \"expression\": {\n \"id\": 37873,\n \"name\": \"targetDelta\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37611,\n \"src\": \"21145:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37874,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"21157:10:79\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 42514,\n \"src\": \"21145:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 37877,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21145:45:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"21117:73:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37882,\n \"nodeType\": \"IfStatement\",\n \"src\": \"21113:130:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 37879,\n \"name\": \"BalancerPoolAdaptor___Slippage\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36661,\n \"src\": \"21211:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 37880,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21211:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37881,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"21204:39:79\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 37517,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"16709:507:79\",\n \"text\": \" @notice Allows strategists to exit Balancer pools using any exit.\\n @dev The amounts in `swapsAfterExit` are overwritten by the actual amount out received from the swap.\\n @dev `swapsAfterExit` MUST match up with expected token array returned from `_getPoolTokensWithNoPremintedBpt`.\\n IE if the first token in expected token array is BB A DAI, the first swap in `swapsBeforeJoin` MUST be to\\n swap BB A DAI.\\n @dev Max Available logic IS NOT supported.\"\n },\n \"functionSelector\": \"97194b13\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"exitPool\",\n \"nameLocation\": \"17230:8:79\",\n \"parameters\": {\n \"id\": 37531,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 37520,\n \"mutability\": \"mutable\",\n \"name\": \"targetBpt\",\n \"nameLocation\": \"17254:9:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37884,\n \"src\": \"17248:15:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 37519,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37518,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"17248:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"17248:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"17248:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37524,\n \"mutability\": \"mutable\",\n \"name\": \"swapsAfterExit\",\n \"nameLocation\": \"17300:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37884,\n \"src\": \"17273:41:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_memory_ptr_$dyn_memory_ptr\",\n \"typeString\": \"struct IVault.SingleSwap[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 37522,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37521,\n \"name\": \"IVault.SingleSwap\",\n \"nameLocations\": [\n \"17273:6:79\",\n \"17280:10:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34752,\n \"src\": \"17273:17:79\"\n },\n \"referencedDeclaration\": 34752,\n \"src\": \"17273:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SingleSwap_$34752_storage_ptr\",\n \"typeString\": \"struct IVault.SingleSwap\"\n }\n },\n \"id\": 37523,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"17273:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_struct$_SingleSwap_$34752_storage_$dyn_storage_ptr\",\n \"typeString\": \"struct IVault.SingleSwap[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37527,\n \"mutability\": \"mutable\",\n \"name\": \"swapData\",\n \"nameLocation\": \"17340:8:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37884,\n \"src\": \"17324:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_memory_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData\"\n },\n \"typeName\": {\n \"id\": 37526,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37525,\n \"name\": \"SwapData\",\n \"nameLocations\": [\n \"17324:8:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 36686,\n \"src\": \"17324:8:79\"\n },\n \"referencedDeclaration\": 36686,\n \"src\": \"17324:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_SwapData_$36686_storage_ptr\",\n \"typeString\": \"struct BalancerPoolAdaptor.SwapData\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37530,\n \"mutability\": \"mutable\",\n \"name\": \"request\",\n \"nameLocation\": \"17388:7:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37884,\n \"src\": \"17358:37:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_ExitPoolRequest_$34697_memory_ptr\",\n \"typeString\": \"struct IVault.ExitPoolRequest\"\n },\n \"typeName\": {\n \"id\": 37529,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37528,\n \"name\": \"IVault.ExitPoolRequest\",\n \"nameLocations\": [\n \"17358:6:79\",\n \"17365:15:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34697,\n \"src\": \"17358:22:79\"\n },\n \"referencedDeclaration\": 34697,\n \"src\": \"17358:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_ExitPoolRequest_$34697_storage_ptr\",\n \"typeString\": \"struct IVault.ExitPoolRequest\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"17238:163:79\"\n },\n \"returnParameters\": {\n \"id\": 37532,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"17411:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 37946,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"21510:480:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 37945,\n \"nodeType\": \"Block\",\n \"src\": \"21593:397:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37898,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37888,\n \"src\": \"21632:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37897,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"21624:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37896,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21624:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37899,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21624:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37900,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37890,\n \"src\": \"21639:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37895,\n \"name\": \"_validateBptAndGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38059,\n \"src\": \"21603:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$_t_address_$returns$__$\",\n \"typeString\": \"function (address,address) view\"\n }\n },\n \"id\": 37901,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21603:52:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37902,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"21603:52:79\"\n },\n {\n \"assignments\": [\n 37904\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37904,\n \"mutability\": \"mutable\",\n \"name\": \"amountIn\",\n \"nameLocation\": \"21673:8:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37945,\n \"src\": \"21665:16:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37903,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21665:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37909,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37906,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37888,\n \"src\": \"21698:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 37907,\n \"name\": \"_amountIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37892,\n \"src\": \"21704:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37905,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38439,\n \"src\": \"21684:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 37908,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21684:30:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"21665:49:79\"\n },\n {\n \"assignments\": [\n 37912\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37912,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGauge\",\n \"nameLocation\": \"21748:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37945,\n \"src\": \"21724:38:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n },\n \"typeName\": {\n \"id\": 37911,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37910,\n \"name\": \"ILiquidityGaugev3Custom\",\n \"nameLocations\": [\n \"21724:23:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34218,\n \"src\": \"21724:23:79\"\n },\n \"referencedDeclaration\": 34218,\n \"src\": \"21724:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37916,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37914,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37890,\n \"src\": \"21789:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37913,\n \"name\": \"ILiquidityGaugev3Custom\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34218,\n \"src\": \"21765:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ILiquidityGaugev3Custom_$34218_$\",\n \"typeString\": \"type(contract ILiquidityGaugev3Custom)\"\n }\n },\n \"id\": 37915,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21765:40:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"21724:81:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37922,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37912,\n \"src\": \"21836:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n ],\n \"id\": 37921,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"21828:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37920,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21828:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37923,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21828:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37924,\n \"name\": \"amountIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37904,\n \"src\": \"21853:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37917,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37888,\n \"src\": \"21815:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 37919,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"21820:7:79\",\n \"memberName\": \"approve\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 32936,\n \"src\": \"21815:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$\",\n \"typeString\": \"function (address,uint256) external returns (bool)\"\n }\n },\n \"id\": 37925,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21815:47:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 37926,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"21815:47:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37930,\n \"name\": \"amountIn\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37904,\n \"src\": \"21895:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37933,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"21913:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 37932,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"21905:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37931,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21905:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37934,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21905:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37927,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37912,\n \"src\": \"21872:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"id\": 37929,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"21887:7:79\",\n \"memberName\": \"deposit\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34212,\n \"src\": \"21872:22:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$\",\n \"typeString\": \"function (uint256,address) external\"\n }\n },\n \"id\": 37935,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21872:47:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37936,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"21872:47:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37938,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37888,\n \"src\": \"21953:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 37941,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37912,\n \"src\": \"21967:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n ],\n \"id\": 37940,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"21959:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37939,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21959:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37942,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21959:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37937,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38467,\n \"src\": \"21929:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$33219_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 37943,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"21929:54:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37944,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"21929:54:79\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 37885,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"21256:249:79\",\n \"text\": \" @notice stake (deposit) BPTs into respective pool gauge\\n @param _bpt address of BPTs to stake\\n @param _amountIn number of BPTs to stake\\n @dev Interface custom as Balancer/Curve do not provide for liquidityGauges.\"\n },\n \"functionSelector\": \"8f210a6a\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"stakeBPT\",\n \"nameLocation\": \"21519:8:79\",\n \"parameters\": {\n \"id\": 37893,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 37888,\n \"mutability\": \"mutable\",\n \"name\": \"_bpt\",\n \"nameLocation\": \"21534:4:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37946,\n \"src\": \"21528:10:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 37887,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37886,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"21528:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"21528:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"21528:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37890,\n \"mutability\": \"mutable\",\n \"name\": \"_liquidityGauge\",\n \"nameLocation\": \"21548:15:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37946,\n \"src\": \"21540:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 37889,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21540:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37892,\n \"mutability\": \"mutable\",\n \"name\": \"_amountIn\",\n \"nameLocation\": \"21573:9:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37946,\n \"src\": \"21565:17:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37891,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"21565:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"21527:56:79\"\n },\n \"returnParameters\": {\n \"id\": 37894,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"21593:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"external\"\n },\n {\n \"id\": 37991,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"22257:369:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 37990,\n \"nodeType\": \"Block\",\n \"src\": \"22341:285:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37960,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37950,\n \"src\": \"22380:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 37959,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"22372:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37958,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"22372:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37961,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22372:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 37962,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37952,\n \"src\": \"22387:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37957,\n \"name\": \"_validateBptAndGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38059,\n \"src\": \"22351:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$_t_address_$returns$__$\",\n \"typeString\": \"function (address,address) view\"\n }\n },\n \"id\": 37963,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22351:52:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37964,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"22351:52:79\"\n },\n {\n \"assignments\": [\n 37967\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 37967,\n \"mutability\": \"mutable\",\n \"name\": \"liquidityGauge\",\n \"nameLocation\": \"22437:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37990,\n \"src\": \"22413:38:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n },\n \"typeName\": {\n \"id\": 37966,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37965,\n \"name\": \"ILiquidityGaugev3Custom\",\n \"nameLocations\": [\n \"22413:23:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 34218,\n \"src\": \"22413:23:79\"\n },\n \"referencedDeclaration\": 34218,\n \"src\": \"22413:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 37971,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 37969,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37952,\n \"src\": \"22478:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37968,\n \"name\": \"ILiquidityGaugev3Custom\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 34218,\n \"src\": \"22454:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ILiquidityGaugev3Custom_$34218_$\",\n \"typeString\": \"type(contract ILiquidityGaugev3Custom)\"\n }\n },\n \"id\": 37970,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22454:40:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"22413:81:79\"\n },\n {\n \"expression\": {\n \"id\": 37982,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 37972,\n \"name\": \"_amountOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37954,\n \"src\": \"22504:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 37977,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37967,\n \"src\": \"22545:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n ],\n \"id\": 37976,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"22537:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 37975,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"22537:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 37978,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22537:23:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 37974,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"22531:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 37979,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22531:30:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 37980,\n \"name\": \"_amountOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37954,\n \"src\": \"22563:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 37973,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38439,\n \"src\": \"22517:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$33219_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 37981,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22517:57:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"22504:70:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 37983,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"22504:70:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 37987,\n \"name\": \"_amountOut\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37954,\n \"src\": \"22608:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 37984,\n \"name\": \"liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37967,\n \"src\": \"22584:14:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ILiquidityGaugev3Custom_$34218\",\n \"typeString\": \"contract ILiquidityGaugev3Custom\"\n }\n },\n \"id\": 37986,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"22599:8:79\",\n \"memberName\": \"withdraw\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34217,\n \"src\": \"22584:23:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) external\"\n }\n },\n \"id\": 37988,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22584:35:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 37989,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"22584:35:79\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 37947,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"21996:256:79\",\n \"text\": \" @notice unstake (withdraw) BPT from respective pool gauge\\n @param _bpt address of BPTs to unstake\\n @param _amountOut number of BPTs to unstake\\n @dev Interface custom as Balancer/Curve do not provide for liquidityGauges.\"\n },\n \"functionSelector\": \"d2e85806\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"unstakeBPT\",\n \"nameLocation\": \"22266:10:79\",\n \"parameters\": {\n \"id\": 37955,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 37950,\n \"mutability\": \"mutable\",\n \"name\": \"_bpt\",\n \"nameLocation\": \"22283:4:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37991,\n \"src\": \"22277:10:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 37949,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 37948,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"22277:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"22277:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"22277:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37952,\n \"mutability\": \"mutable\",\n \"name\": \"_liquidityGauge\",\n \"nameLocation\": \"22297:15:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37991,\n \"src\": \"22289:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 37951,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"22289:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 37954,\n \"mutability\": \"mutable\",\n \"name\": \"_amountOut\",\n \"nameLocation\": \"22322:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 37991,\n \"src\": \"22314:18:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 37953,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"22314:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"22276:57:79\"\n },\n \"returnParameters\": {\n \"id\": 37956,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"22341:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 38004,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"22759:79:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 38003,\n \"nodeType\": \"Block\",\n \"src\": \"22803:35:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 38000,\n \"name\": \"gauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 37994,\n \"src\": \"22825:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 37997,\n \"name\": \"minter\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36694,\n \"src\": \"22813:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBalancerMinter_$35222\",\n \"typeString\": \"contract IBalancerMinter\"\n }\n },\n \"id\": 37999,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"22820:4:79\",\n \"memberName\": \"mint\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 35221,\n \"src\": \"22813:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$returns$__$\",\n \"typeString\": \"function (address) external\"\n }\n },\n \"id\": 38001,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"22813:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 38002,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"22813:18:79\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 37992,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"22632:122:79\",\n \"text\": \" @notice claim rewards ($BAL) from LP position\\n @dev rewards are only accrued for staked positions\"\n },\n \"functionSelector\": \"ef5cfb8c\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"claimRewards\",\n \"nameLocation\": \"22768:12:79\",\n \"parameters\": {\n \"id\": 37995,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 37994,\n \"mutability\": \"mutable\",\n \"name\": \"gauge\",\n \"nameLocation\": \"22789:5:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38004,\n \"src\": \"22781:13:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 37993,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"22781:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"22780:15:79\"\n },\n \"returnParameters\": {\n \"id\": 37996,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"22803:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 38059,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"23379:461:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 38058,\n \"nodeType\": \"Block\",\n \"src\": \"23462:378:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 38013\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38013,\n \"mutability\": \"mutable\",\n \"name\": \"positionHash\",\n \"nameLocation\": \"23480:12:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38058,\n \"src\": \"23472:20:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 38012,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23472:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38027,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 38017,\n \"name\": \"identifier\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [\n 36753\n ],\n \"referencedDeclaration\": 36753,\n \"src\": \"23516:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () pure returns (bytes32)\"\n }\n },\n \"id\": 38018,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23516:12:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n {\n \"hexValue\": \"66616c7365\",\n \"id\": 38019,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"23530:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n {\n \"arguments\": [\n {\n \"id\": 38022,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38007,\n \"src\": \"23548:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 38023,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38009,\n \"src\": \"23554:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 38020,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"23537:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 38021,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"23541:6:79\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"23537:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 38024,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23537:33:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"expression\": {\n \"id\": 38015,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"23505:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 38016,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"23509:6:79\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"23505:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 38025,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23505:66:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 38014,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"23495:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 38026,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23495:77:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"23472:100:79\"\n },\n {\n \"assignments\": [\n 38029\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38029,\n \"mutability\": \"mutable\",\n \"name\": \"positionId\",\n \"nameLocation\": \"23589:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38058,\n \"src\": \"23582:17:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"typeName\": {\n \"id\": 38028,\n \"name\": \"uint32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23582:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38041,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 38039,\n \"name\": \"positionHash\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38013,\n \"src\": \"23663:12:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 38033,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"23617:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 38032,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"23609:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38031,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23609:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38034,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23609:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38030,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 32635,\n \"src\": \"23602:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$32635_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 38035,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23602:21:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$32635\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 38036,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"23624:8:79\",\n \"memberName\": \"registry\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 30271,\n \"src\": \"23602:30:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_contract$_Registry_$29225_$\",\n \"typeString\": \"function () view external returns (contract Registry)\"\n }\n },\n \"id\": 38037,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23602:32:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Registry_$29225\",\n \"typeString\": \"contract Registry\"\n }\n },\n \"id\": 38038,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"23635:27:79\",\n \"memberName\": \"getPositionHashToPositionId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 28972,\n \"src\": \"23602:60:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_uint32_$\",\n \"typeString\": \"function (bytes32) view external returns (uint32)\"\n }\n },\n \"id\": 38040,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23602:74:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"23582:94:79\"\n },\n {\n \"condition\": {\n \"id\": 38051,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"23690:49:79\",\n \"subExpression\": {\n \"arguments\": [\n {\n \"id\": 38049,\n \"name\": \"positionId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38029,\n \"src\": \"23728:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 38045,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"23706:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_BalancerPoolAdaptor_$38236\",\n \"typeString\": \"contract BalancerPoolAdaptor\"\n }\n ],\n \"id\": 38044,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"23698:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38043,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23698:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38046,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23698:13:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38042,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 32635,\n \"src\": \"23691:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$32635_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 38047,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23691:21:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$32635\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 38048,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"23713:14:79\",\n \"memberName\": \"isPositionUsed\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 29501,\n \"src\": \"23691:36:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_uint256_$returns$_t_bool_$\",\n \"typeString\": \"function (uint256) view external returns (bool)\"\n }\n },\n \"id\": 38050,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23691:48:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38057,\n \"nodeType\": \"IfStatement\",\n \"src\": \"23686:147:79\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [\n {\n \"id\": 38053,\n \"name\": \"_bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38007,\n \"src\": \"23811:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 38054,\n \"name\": \"_liquidityGauge\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38009,\n \"src\": \"23817:15:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38052,\n \"name\": \"BalancerPoolAdaptor__BptAndGaugeComboMustBeTracked\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36658,\n \"src\": \"23760:50:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$_t_address_$_t_address_$returns$__$\",\n \"typeString\": \"function (address,address) pure\"\n }\n },\n \"id\": 38055,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"23760:73:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 38056,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"23753:80:79\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 38005,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"22957:417:79\",\n \"text\": \" @notice Validates that a given bpt and liquidityGauge is set up as a position in the Cellar\\n @dev This function uses `address(this)` as the address of the Cellar\\n @param _bpt of interest\\n @param _liquidityGauge corresponding to _bpt\\n NOTE: _liquidityGauge can be zeroAddress in cases where Cellar doesn't want to stake or there are no gauges yet available for respective bpt\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"_validateBptAndGauge\",\n \"nameLocation\": \"23388:20:79\",\n \"parameters\": {\n \"id\": 38010,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 38007,\n \"mutability\": \"mutable\",\n \"name\": \"_bpt\",\n \"nameLocation\": \"23417:4:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38059,\n \"src\": \"23409:12:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 38006,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23409:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 38009,\n \"mutability\": \"mutable\",\n \"name\": \"_liquidityGauge\",\n \"nameLocation\": \"23431:15:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38059,\n \"src\": \"23423:23:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 38008,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"23423:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"23408:39:79\"\n },\n \"returnParameters\": {\n \"id\": 38011,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"23462:0:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 38195,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"23963:1066:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 38194,\n \"nodeType\": \"Block\",\n \"src\": \"24114:915:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 38074\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38074,\n \"mutability\": \"mutable\",\n \"name\": \"poolTokensLength\",\n \"nameLocation\": \"24132:16:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38194,\n \"src\": \"24124:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 38073,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24124:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38077,\n \"initialValue\": {\n \"expression\": {\n \"id\": 38075,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38066,\n \"src\": \"24151:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 38076,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"24162:6:79\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"24151:17:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24124:44:79\"\n },\n {\n \"assignments\": [\n 38079\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38079,\n \"mutability\": \"mutable\",\n \"name\": \"removePremintedBpts\",\n \"nameLocation\": \"24183:19:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38194,\n \"src\": \"24178:24:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 38078,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24178:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38080,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24178:24:79\"\n },\n {\n \"body\": {\n \"id\": 38105,\n \"nodeType\": \"Block\",\n \"src\": \"24331:141:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 38097,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 38092,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38066,\n \"src\": \"24357:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 38094,\n \"indexExpression\": {\n \"id\": 38093,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38082,\n \"src\": \"24368:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24357:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n ],\n \"id\": 38091,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"24349:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38090,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24349:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38095,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24349:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"id\": 38096,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38062,\n \"src\": \"24375:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"24349:29:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38104,\n \"nodeType\": \"IfStatement\",\n \"src\": \"24345:117:79\",\n \"trueBody\": {\n \"id\": 38103,\n \"nodeType\": \"Block\",\n \"src\": \"24380:82:79\",\n \"statements\": [\n {\n \"expression\": {\n \"id\": 38100,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 38098,\n \"name\": \"removePremintedBpts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38079,\n \"src\": \"24398:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"hexValue\": \"74727565\",\n \"id\": 38099,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"24420:4:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"true\"\n },\n \"src\": \"24398:26:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38101,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24398:26:79\"\n },\n {\n \"id\": 38102,\n \"nodeType\": \"Break\",\n \"src\": \"24442:5:79\"\n }\n ]\n }\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 38086,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 38084,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38082,\n \"src\": \"24304:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 38085,\n \"name\": \"poolTokensLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38074,\n \"src\": \"24308:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"24304:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38106,\n \"initializationExpression\": {\n \"assignments\": [\n 38082\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38082,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"24301:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38106,\n \"src\": \"24293:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 38081,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24293:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38083,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24293:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 38088,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"24326:3:79\",\n \"subExpression\": {\n \"id\": 38087,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38082,\n \"src\": \"24328:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 38089,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24326:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"24288:184:79\"\n },\n {\n \"condition\": {\n \"id\": 38107,\n \"name\": \"removePremintedBpts\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38079,\n \"src\": \"24485:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"falseBody\": {\n \"id\": 38192,\n \"nodeType\": \"Block\",\n \"src\": \"24862:161:79\",\n \"statements\": [\n {\n \"expression\": {\n \"id\": 38167,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 38160,\n \"name\": \"tokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38071,\n \"src\": \"24876:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 38165,\n \"name\": \"poolTokensLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38074,\n \"src\": \"24897:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 38164,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"24885:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (contract ERC20[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38162,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38161,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"24889:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"24889:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"24889:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38163,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"24889:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n }\n },\n \"id\": 38166,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24885:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"src\": \"24876:38:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 38168,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24876:38:79\"\n },\n {\n \"body\": {\n \"expression\": {\n \"id\": 38189,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 38178,\n \"name\": \"tokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38071,\n \"src\": \"24971:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 38180,\n \"indexExpression\": {\n \"id\": 38179,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38170,\n \"src\": \"24978:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24971:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 38184,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38066,\n \"src\": \"24997:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 38186,\n \"indexExpression\": {\n \"id\": 38185,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38170,\n \"src\": \"25008:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24997:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n ],\n \"id\": 38183,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"24989:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38182,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24989:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38187,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24989:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38181,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"24983:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 38188,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24983:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"src\": \"24971:41:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38190,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24971:41:79\"\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 38174,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 38172,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38170,\n \"src\": \"24944:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 38173,\n \"name\": \"poolTokensLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38074,\n \"src\": \"24948:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"24944:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38191,\n \"initializationExpression\": {\n \"assignments\": [\n 38170\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38170,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"24941:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38191,\n \"src\": \"24933:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 38169,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24933:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38171,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24933:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 38176,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"24966:3:79\",\n \"subExpression\": {\n \"id\": 38175,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38170,\n \"src\": \"24968:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 38177,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24966:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"24928:84:79\"\n }\n ]\n },\n \"id\": 38193,\n \"nodeType\": \"IfStatement\",\n \"src\": \"24481:542:79\",\n \"trueBody\": {\n \"id\": 38159,\n \"nodeType\": \"Block\",\n \"src\": \"24506:350:79\",\n \"statements\": [\n {\n \"expression\": {\n \"id\": 38117,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 38108,\n \"name\": \"tokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38071,\n \"src\": \"24520:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 38115,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 38113,\n \"name\": \"poolTokensLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38074,\n \"src\": \"24541:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"-\",\n \"rightExpression\": {\n \"hexValue\": \"31\",\n \"id\": 38114,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"24560:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1_by_1\",\n \"typeString\": \"int_const 1\"\n },\n \"value\": \"1\"\n },\n \"src\": \"24541:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 38112,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"NewExpression\",\n \"src\": \"24529:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (uint256) pure returns (contract ERC20[] memory)\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38110,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38109,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"24533:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"24533:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"24533:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38111,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"24533:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n }\n },\n \"id\": 38116,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24529:33:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"src\": \"24520:42:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 38118,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24520:42:79\"\n },\n {\n \"assignments\": [\n 38120\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38120,\n \"mutability\": \"mutable\",\n \"name\": \"tokensIndex\",\n \"nameLocation\": \"24584:11:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38159,\n \"src\": \"24576:19:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 38119,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24576:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38121,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24576:19:79\"\n },\n {\n \"body\": {\n \"id\": 38157,\n \"nodeType\": \"Block\",\n \"src\": \"24652:194:79\",\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"id\": 38138,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 38133,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38066,\n \"src\": \"24682:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 38135,\n \"indexExpression\": {\n \"id\": 38134,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38123,\n \"src\": \"24693:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24682:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n ],\n \"id\": 38132,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"24674:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38131,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24674:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38136,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24674:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"id\": 38137,\n \"name\": \"bpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38062,\n \"src\": \"24700:3:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"src\": \"24674:29:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38156,\n \"nodeType\": \"IfStatement\",\n \"src\": \"24670:162:79\",\n \"trueBody\": {\n \"id\": 38155,\n \"nodeType\": \"Block\",\n \"src\": \"24705:127:79\",\n \"statements\": [\n {\n \"expression\": {\n \"id\": 38150,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"baseExpression\": {\n \"id\": 38139,\n \"name\": \"tokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38071,\n \"src\": \"24727:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"id\": 38141,\n \"indexExpression\": {\n \"id\": 38140,\n \"name\": \"tokensIndex\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38120,\n \"src\": \"24734:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": true,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24727:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"baseExpression\": {\n \"id\": 38145,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38066,\n \"src\": \"24763:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n },\n \"id\": 38147,\n \"indexExpression\": {\n \"id\": 38146,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38123,\n \"src\": \"24774:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"IndexAccess\",\n \"src\": \"24763:13:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n ],\n \"id\": 38144,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"24755:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38143,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24755:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38148,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24755:22:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38142,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 33219,\n \"src\": \"24749:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$33219_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 38149,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"24749:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"src\": \"24727:51:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38151,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24727:51:79\"\n },\n {\n \"expression\": {\n \"id\": 38153,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": false,\n \"src\": \"24800:13:79\",\n \"subExpression\": {\n \"id\": 38152,\n \"name\": \"tokensIndex\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38120,\n \"src\": \"24800:11:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 38154,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24800:13:79\"\n }\n ]\n }\n }\n ]\n },\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 38127,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 38125,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38123,\n \"src\": \"24625:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 38126,\n \"name\": \"poolTokensLength\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38074,\n \"src\": \"24629:16:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"24625:20:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 38158,\n \"initializationExpression\": {\n \"assignments\": [\n 38123\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38123,\n \"mutability\": \"mutable\",\n \"name\": \"i\",\n \"nameLocation\": \"24622:1:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38158,\n \"src\": \"24614:9:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 38122,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24614:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38124,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"24614:9:79\"\n },\n \"loopExpression\": {\n \"expression\": {\n \"id\": 38129,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"++\",\n \"prefix\": true,\n \"src\": \"24647:3:79\",\n \"subExpression\": {\n \"id\": 38128,\n \"name\": \"i\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38123,\n \"src\": \"24649:1:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 38130,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"24647:3:79\"\n },\n \"nodeType\": \"ForStatement\",\n \"src\": \"24609:237:79\"\n }\n ]\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 38060,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"23846:112:79\",\n \"text\": \" @notice Returns a BPT's token array with any pre-minted BPT removed, but the order preserved.\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"_getPoolTokensWithNoPremintedBpt\",\n \"nameLocation\": \"23972:32:79\",\n \"parameters\": {\n \"id\": 38067,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 38062,\n \"mutability\": \"mutable\",\n \"name\": \"bpt\",\n \"nameLocation\": \"24022:3:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38195,\n \"src\": \"24014:11:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 38061,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"24014:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 38066,\n \"mutability\": \"mutable\",\n \"name\": \"poolTokens\",\n \"nameLocation\": \"24051:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38195,\n \"src\": \"24035:26:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38064,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38063,\n \"name\": \"IERC20\",\n \"nameLocations\": [\n \"24035:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 35010,\n \"src\": \"24035:6:79\"\n },\n \"referencedDeclaration\": 35010,\n \"src\": \"24035:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n },\n \"id\": 38065,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"24035:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr\",\n \"typeString\": \"contract IERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"24004:63:79\"\n },\n \"returnParameters\": {\n \"id\": 38072,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 38071,\n \"mutability\": \"mutable\",\n \"name\": \"tokens\",\n \"nameLocation\": \"24106:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38195,\n \"src\": \"24091:21:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38069,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38068,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"24091:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"24091:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"24091:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38070,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"24091:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"24090:23:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 38235,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"25262:328:79\",\n \"nodes\": [],\n \"body\": {\n \"id\": 38234,\n \"nodeType\": \"Block\",\n \"src\": \"25362:228:79\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 38206\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38206,\n \"mutability\": \"mutable\",\n \"name\": \"poolId\",\n \"nameLocation\": \"25380:6:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38234,\n \"src\": \"25372:14:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 38205,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"25372:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 38215,\n \"initialValue\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 38210,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38198,\n \"src\": \"25407:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38209,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"25399:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38208,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"25399:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38211,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25399:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38207,\n \"name\": \"IBasePool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 35186,\n \"src\": \"25389:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IBasePool_$35186_$\",\n \"typeString\": \"type(contract IBasePool)\"\n }\n },\n \"id\": 38212,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25389:29:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IBasePool_$35186\",\n \"typeString\": \"contract IBasePool\"\n }\n },\n \"id\": 38213,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"25419:9:79\",\n \"memberName\": \"getPoolId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 35126,\n \"src\": \"25389:39:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () view external returns (bytes32)\"\n }\n },\n \"id\": 38214,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25389:41:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"25372:58:79\"\n },\n {\n \"assignments\": [\n 38220,\n null,\n null\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 38220,\n \"mutability\": \"mutable\",\n \"name\": \"poolTokens\",\n \"nameLocation\": \"25457:10:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38234,\n \"src\": \"25441:26:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38218,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38217,\n \"name\": \"IERC20\",\n \"nameLocations\": [\n \"25441:6:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 35010,\n \"src\": \"25441:6:79\"\n },\n \"referencedDeclaration\": 35010,\n \"src\": \"25441:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IERC20_$35010\",\n \"typeString\": \"contract IERC20\"\n }\n },\n \"id\": 38219,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"25441:8:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_storage_ptr\",\n \"typeString\": \"contract IERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n },\n null,\n null\n ],\n \"id\": 38225,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 38223,\n \"name\": \"poolId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38206,\n \"src\": \"25495:6:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"id\": 38221,\n \"name\": \"vault\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 36690,\n \"src\": \"25475:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IVault_$34921\",\n \"typeString\": \"contract IVault\"\n }\n },\n \"id\": 38222,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"25481:13:79\",\n \"memberName\": \"getPoolTokens\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 34647,\n \"src\": \"25475:19:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"id\": 38224,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25475:27:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$\",\n \"typeString\": \"tuple(contract IERC20[] memory,uint256[] memory,uint256)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"25440:62:79\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 38229,\n \"name\": \"targetBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38198,\n \"src\": \"25560:9:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 38228,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"25552:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 38227,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"25552:7:79\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 38230,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25552:18:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 38231,\n \"name\": \"poolTokens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38220,\n \"src\": \"25572:10:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr\",\n \"typeString\": \"contract IERC20[] memory\"\n }\n ],\n \"id\": 38226,\n \"name\": \"_getPoolTokensWithNoPremintedBpt\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 38195,\n \"src\": \"25519:32:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_address_$_t_array$_t_contract$_IERC20_$35010_$dyn_memory_ptr_$returns$_t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr_$\",\n \"typeString\": \"function (address,contract IERC20[] memory) pure returns (contract ERC20[] memory)\"\n }\n },\n \"id\": 38232,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"25519:64:79\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[] memory\"\n }\n },\n \"functionReturnParameters\": 38204,\n \"id\": 38233,\n \"nodeType\": \"Return\",\n \"src\": \"25512:71:79\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 38196,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"25035:222:79\",\n \"text\": \" @notice Returns the expected tokens array for a given `targetBpt`.\\n @dev This function is NOT used by the adaptor, but could be used by strategists\\n when formulating Balancer rebalances.\"\n },\n \"functionSelector\": \"7906afbf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"getExpectedTokens\",\n \"nameLocation\": \"25271:17:79\",\n \"parameters\": {\n \"id\": 38199,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 38198,\n \"mutability\": \"mutable\",\n \"name\": \"targetBpt\",\n \"nameLocation\": \"25297:9:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38235,\n \"src\": \"25289:17:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 38197,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"25289:7:79\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"25288:19:79\"\n },\n \"returnParameters\": {\n \"id\": 38204,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 38203,\n \"mutability\": \"mutable\",\n \"name\": \"expectedTokens\",\n \"nameLocation\": \"25346:14:79\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 38235,\n \"src\": \"25331:29:79\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_memory_ptr\",\n \"typeString\": \"contract ERC20[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 38201,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 38200,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"25331:5:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 33219,\n \"src\": \"25331:5:79\"\n },\n \"referencedDeclaration\": 33219,\n \"src\": \"25331:5:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$33219\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 38202,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"25331:7:79\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_contract$_ERC20_$33219_$dyn_storage_ptr\",\n \"typeString\": \"contract ERC20[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"25330:31:79\"\n },\n \"scope\": 38236,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"external\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 36643,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"1135:11:79\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 38526,\n \"src\": \"1135:11:79\"\n },\n \"id\": 36644,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"1135:11:79\"\n }\n ],\n \"canonicalName\": \"BalancerPoolAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 36642,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"929:173:79\",\n \"text\": \" @title Balancer Pool Adaptor\\n @notice Allows Cellars to interact with Weighted, Stable, and Linear Balancer Pools (BPs).\\n @author 0xEinCodes and CrispyMangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 38236,\n 38526\n ],\n \"name\": \"BalancerPoolAdaptor\",\n \"nameLocation\": \"1112:19:79\",\n \"scope\": 38237,\n \"usedErrors\": [\n 36658,\n 36661,\n 36664,\n 36667,\n 36670,\n 36673,\n 36676,\n 36679,\n 38261,\n 38264,\n 38267,\n 38270,\n 38275,\n 38278\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 79\n }\n") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct BalancerPoolAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for BalancerPoolAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug for BalancerPoolAdaptorV1 { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(BalancerPoolAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> BalancerPoolAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + BALANCERPOOLADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `EXACT_TOKENS_IN_FOR_BPT_OUT` (0x0e222e52) function"] + pub fn exact_tokens_in_for_bpt_out( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([14, 34, 46, 82], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balancerSlippage` (0xf7e69b16) function"] + pub fn balancer_slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([247, 230, 155, 22], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `claimRewards` (0xef5cfb8c) function"] + pub fn claim_rewards( + &self, + gauge: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([239, 92, 251, 140], gauge) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + p0: ethers::core::types::U256, + p1: ethers::core::types::Bytes, + p2: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 68, 92, 49], (p0, p1, p2)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `exitPool` (0x97194b13) function"] + pub fn exit_pool( + &self, + target_bpt: ethers::core::types::Address, + swaps_after_exit: ::std::vec::Vec, + swap_data: SwapData, + request: ExitPoolRequest, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [151, 25, 75, 19], + (target_bpt, swaps_after_exit, swap_data, request), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `getExpectedTokens` (0x7906afbf) function"] + pub fn get_expected_tokens( + &self, + target_bpt: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([121, 6, 175, 191], target_bpt) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `joinPool` (0x5c14acdb) function"] + pub fn join_pool( + &self, + target_bpt: ethers::core::types::Address, + swaps_before_join: ::std::vec::Vec, + swap_data: SwapData, + minimum_bpt: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [92, 20, 172, 219], + (target_bpt, swaps_before_join, swap_data, minimum_bpt), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `minter` (0x07546172) function"] + pub fn minter( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([7, 84, 97, 114], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `stakeBPT` (0x8f210a6a) function"] + pub fn stake_bpt( + &self, + bpt: ethers::core::types::Address, + liquidity_gauge: ethers::core::types::Address, + amount_in: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([143, 33, 10, 106], (bpt, liquidity_gauge, amount_in)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `unstakeBPT` (0xd2e85806) function"] + pub fn unstake_bpt( + &self, + bpt: ethers::core::types::Address, + liquidity_gauge: ethers::core::types::Address, + amount_out: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([210, 232, 88, 6], (bpt, liquidity_gauge, amount_out)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `vault` (0xfbfa77cf) function"] + pub fn vault( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([251, 250, 119, 207], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + amount_bpt_to_send: ethers::core::types::U256, + recipient: ethers::core::types::Address, + adaptor_data: ethers::core::types::Bytes, + p3: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [201, 17, 27, 215], + (amount_bpt_to_send, recipient, adaptor_data, p3), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + adaptor_data: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (adaptor_data, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `EXACT_TOKENS_IN_FOR_BPT_OUT`function with signature `EXACT_TOKENS_IN_FOR_BPT_OUT()` and selector `[14, 34, 46, 82]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "EXACT_TOKENS_IN_FOR_BPT_OUT", + abi = "EXACT_TOKENS_IN_FOR_BPT_OUT()" + )] + pub struct ExactTokensInForBptOutCall; + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balancerSlippage`function with signature `balancerSlippage()` and selector `[247, 230, 155, 22]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balancerSlippage", abi = "balancerSlippage()")] + pub struct BalancerSlippageCall; + #[doc = "Container type for all input parameters for the `claimRewards`function with signature `claimRewards(address)` and selector `[239, 92, 251, 140]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "claimRewards", abi = "claimRewards(address)")] + pub struct ClaimRewardsCall { + pub gauge: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall( + pub ethers::core::types::U256, + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[doc = "Container type for all input parameters for the `exitPool`function with signature `exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))` and selector `[151, 25, 75, 19]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "exitPool", + abi = "exitPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),(address[],uint256[],bytes,bool))" + )] + pub struct ExitPoolCall { + pub target_bpt: ethers::core::types::Address, + pub swaps_after_exit: ::std::vec::Vec, + pub swap_data: SwapData, + pub request: ExitPoolRequest, + } + #[doc = "Container type for all input parameters for the `getExpectedTokens`function with signature `getExpectedTokens(address)` and selector `[121, 6, 175, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "getExpectedTokens", abi = "getExpectedTokens(address)")] + pub struct GetExpectedTokensCall { + pub target_bpt: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `joinPool`function with signature `joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)` and selector `[92, 20, 172, 219]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "joinPool", + abi = "joinPool(address,(bytes32,uint8,address,address,uint256,bytes)[],(uint256[],uint256[]),uint256)" + )] + pub struct JoinPoolCall { + pub target_bpt: ethers::core::types::Address, + pub swaps_before_join: ::std::vec::Vec, + pub swap_data: SwapData, + pub minimum_bpt: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `minter`function with signature `minter()` and selector `[7, 84, 97, 114]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "minter", abi = "minter()")] + pub struct MinterCall; + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `stakeBPT`function with signature `stakeBPT(address,address,uint256)` and selector `[143, 33, 10, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "stakeBPT", abi = "stakeBPT(address,address,uint256)")] + pub struct StakeBPTCall { + pub bpt: ethers::core::types::Address, + pub liquidity_gauge: ethers::core::types::Address, + pub amount_in: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `unstakeBPT`function with signature `unstakeBPT(address,address,uint256)` and selector `[210, 232, 88, 6]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "unstakeBPT", abi = "unstakeBPT(address,address,uint256)")] + pub struct UnstakeBPTCall { + pub bpt: ethers::core::types::Address, + pub liquidity_gauge: ethers::core::types::Address, + pub amount_out: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `vault`function with signature `vault()` and selector `[251, 250, 119, 207]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "vault", abi = "vault()")] + pub struct VaultCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall { + pub amount_bpt_to_send: ethers::core::types::U256, + pub recipient: ethers::core::types::Address, + pub adaptor_data: ethers::core::types::Bytes, + pub p3: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall { + pub adaptor_data: ethers::core::types::Bytes, + pub p1: ethers::core::types::Bytes, + } + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum BalancerPoolAdaptorV1Calls { + ExactTokensInForBptOut(ExactTokensInForBptOutCall), + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + BalancerSlippage(BalancerSlippageCall), + ClaimRewards(ClaimRewardsCall), + Deposit(DepositCall), + ExitPool(ExitPoolCall), + GetExpectedTokens(GetExpectedTokensCall), + Identifier(IdentifierCall), + IsDebt(IsDebtCall), + JoinPool(JoinPoolCall), + Minter(MinterCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + StakeBPT(StakeBPTCall), + UnstakeBPT(UnstakeBPTCall), + Vault(VaultCall), + Withdraw(WithdrawCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for BalancerPoolAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::ExactTokensInForBptOut(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::AssetsUsed(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::BalanceOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::BalancerSlippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::ClaimRewards(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::ExitPool(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::GetExpectedTokens(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Identifier(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::JoinPool(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Minter(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::RevokeApproval(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Slippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::StakeBPT(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::UnstakeBPT(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Vault(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::Withdraw(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(BalancerPoolAdaptorV1Calls::WithdrawableFrom(decoded)); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for BalancerPoolAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + BalancerPoolAdaptorV1Calls::ExactTokensInForBptOut(element) => element.encode(), + BalancerPoolAdaptorV1Calls::AssetOf(element) => element.encode(), + BalancerPoolAdaptorV1Calls::AssetsUsed(element) => element.encode(), + BalancerPoolAdaptorV1Calls::BalanceOf(element) => element.encode(), + BalancerPoolAdaptorV1Calls::BalancerSlippage(element) => element.encode(), + BalancerPoolAdaptorV1Calls::ClaimRewards(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Deposit(element) => element.encode(), + BalancerPoolAdaptorV1Calls::ExitPool(element) => element.encode(), + BalancerPoolAdaptorV1Calls::GetExpectedTokens(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Identifier(element) => element.encode(), + BalancerPoolAdaptorV1Calls::IsDebt(element) => element.encode(), + BalancerPoolAdaptorV1Calls::JoinPool(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Minter(element) => element.encode(), + BalancerPoolAdaptorV1Calls::RevokeApproval(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Slippage(element) => element.encode(), + BalancerPoolAdaptorV1Calls::StakeBPT(element) => element.encode(), + BalancerPoolAdaptorV1Calls::UnstakeBPT(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Vault(element) => element.encode(), + BalancerPoolAdaptorV1Calls::Withdraw(element) => element.encode(), + BalancerPoolAdaptorV1Calls::WithdrawableFrom(element) => element.encode(), + } + } + } + impl ::std::fmt::Display for BalancerPoolAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + BalancerPoolAdaptorV1Calls::ExactTokensInForBptOut(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::AssetOf(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::BalancerSlippage(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::ClaimRewards(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Deposit(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::ExitPool(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::GetExpectedTokens(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Identifier(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::IsDebt(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::JoinPool(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Minter(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::RevokeApproval(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Slippage(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::StakeBPT(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::UnstakeBPT(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Vault(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::Withdraw(element) => element.fmt(f), + BalancerPoolAdaptorV1Calls::WithdrawableFrom(element) => element.fmt(f), + } + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: ExactTokensInForBptOutCall) -> Self { + BalancerPoolAdaptorV1Calls::ExactTokensInForBptOut(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + BalancerPoolAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + BalancerPoolAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + BalancerPoolAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: BalancerSlippageCall) -> Self { + BalancerPoolAdaptorV1Calls::BalancerSlippage(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: ClaimRewardsCall) -> Self { + BalancerPoolAdaptorV1Calls::ClaimRewards(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + BalancerPoolAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: ExitPoolCall) -> Self { + BalancerPoolAdaptorV1Calls::ExitPool(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: GetExpectedTokensCall) -> Self { + BalancerPoolAdaptorV1Calls::GetExpectedTokens(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + BalancerPoolAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + BalancerPoolAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: JoinPoolCall) -> Self { + BalancerPoolAdaptorV1Calls::JoinPool(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: MinterCall) -> Self { + BalancerPoolAdaptorV1Calls::Minter(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + BalancerPoolAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + BalancerPoolAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: StakeBPTCall) -> Self { + BalancerPoolAdaptorV1Calls::StakeBPT(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: UnstakeBPTCall) -> Self { + BalancerPoolAdaptorV1Calls::UnstakeBPT(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: VaultCall) -> Self { + BalancerPoolAdaptorV1Calls::Vault(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + BalancerPoolAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From for BalancerPoolAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + BalancerPoolAdaptorV1Calls::WithdrawableFrom(var) + } + } + #[doc = "`SwapData(uint256[],uint256[])`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthAbiType, + serde :: Deserialize, + serde :: Serialize, + )] + pub struct SwapData { + pub min_amounts_for_swaps: Vec, + pub swap_deadlines: Vec, + } + #[doc = "`ExitPoolRequest(address[],uint256[],bytes,bool)`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthAbiType, + serde :: Deserialize, + serde :: Serialize, + )] + pub struct ExitPoolRequest { + pub assets: Vec, + pub min_amounts_out: Vec, + pub user_data: ethers::core::types::Bytes, + pub to_internal_balance: bool, + } + #[doc = "`SingleSwap(bytes32,uint8,address,address,uint256,bytes)`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthAbiType, + serde :: Deserialize, + serde :: Serialize, + )] + pub struct SingleSwap { + pub pool_id: [u8; 32], + pub kind: u8, + pub asset_in: ethers::core::types::Address, + pub asset_out: ethers::core::types::Address, + pub amount: ethers::core::types::U256, + pub user_data: ethers::core::types::Bytes, + } +} diff --git a/steward_abi/src/lib.rs b/steward_abi/src/lib.rs index 7eeac8af..1b219e35 100644 --- a/steward_abi/src/lib.rs +++ b/steward_abi/src/lib.rs @@ -7,6 +7,7 @@ pub mod aave_v2_enable_asset_as_collateral_adaptor_v1; pub mod aave_v2_stablecoin; pub mod aave_v3_a_token_adaptor_v1; pub mod aave_v3_debt_token_adaptor_v1; +pub mod balancer_pool_adaptor_v1; pub mod cellar_adaptor_v1; pub mod cellar_v1; pub mod cellar_v2; diff --git a/steward_abi_build/src/main.rs b/steward_abi_build/src/main.rs index d426a3e1..14f55375 100644 --- a/steward_abi_build/src/main.rs +++ b/steward_abi_build/src/main.rs @@ -50,6 +50,7 @@ fn main() { "morpho_aave_v3_debt_token_adaptor_v1", ), ("MorphoRewardHandler", "morpho_reward_handler"), + ("BalancerPoolAdaptorV1", "balancer_pool_adaptor_v1"), ]; contracts diff --git a/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go b/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go index 3e691839..28d79b18 100644 --- a/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go +++ b/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go @@ -484,6 +484,7 @@ type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan struct { // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls CallData isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData `protobuf_oneof:"call_data"` } @@ -687,6 +688,13 @@ func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV3 return nil } +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetBalancerPoolV1Calls() *BalancerPoolAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls); ok { + return x.BalancerPoolV1Calls + } + return nil +} + type isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData interface { isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() } @@ -801,6 +809,11 @@ type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtToke MorphoAaveV3DebtTokenV1Calls *MorphoAaveV3DebtTokenAdaptorV1Calls `protobuf:"bytes,23,opt,name=morpho_aave_v3_debt_token_v1_calls,json=morphoAaveV3DebtTokenV1Calls,proto3,oneof"` } +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls struct { + // Represents function calls to the BalancerPoolAdaptor V1 + BalancerPoolV1Calls *BalancerPoolAdaptorV1Calls `protobuf:"bytes,24,opt,name=balancer_pool_v1_calls,json=balancerPoolV1Calls,proto3,oneof"` +} + func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_UniswapV3V1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { } @@ -867,6 +880,9 @@ func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3AToken func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { } +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + var File_adaptors_aave_aave_v3_debt_token_proto protoreflect.FileDescriptor var file_adaptors_aave_aave_v3_debt_token_proto_rawDesc = []byte{ @@ -879,255 +895,263 @@ var file_adaptors_aave_aave_v3_debt_token_proto_rawDesc = []byte{ 0x2f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, - 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, - 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, - 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, - 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, - 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, + 0x2f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, - 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, - 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, - 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, - 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, - 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, - 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, - 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, - 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, - 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, - 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, - 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, - 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x19, 0x0a, 0x18, 0x41, 0x61, + 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x65, + 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6e, + 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, 0x6c, + 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xe6, 0x19, 0x0a, 0x18, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, + 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x5f, 0x0a, 0x10, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, + 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, + 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, + 0x62, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, + 0x65, 0x62, 0x74, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x5f, 0x0a, - 0x10, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, - 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x0e, - 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x5c, - 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, - 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x72, - 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x12, 0x66, 0x0a, 0x13, - 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6c, 0x6f, - 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x46, - 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x73, - 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x1a, 0x3e, 0x0a, 0x0e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, - 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, - 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x55, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, - 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x64, 0x65, - 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x6f, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x70, 0x61, 0x79, + 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0a, 0x66, + 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6c, 0x6f, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x1a, 0x3e, 0x0a, 0x0e, + 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0d, + 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xab, 0x01, 0x0a, 0x09, - 0x46, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, - 0x6c, 0x6f, 0x61, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, - 0x61, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5a, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, - 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, - 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, - 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x9b, 0x12, 0x0a, 0x1d, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, - 0x56, 0x33, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, - 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, - 0x61, 0x70, 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, - 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, - 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, - 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, - 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, - 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, - 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, - 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, - 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, - 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x55, 0x0a, 0x10, 0x52, + 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x1a, 0xab, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, + 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x1a, 0xfa, 0x12, 0x0a, 0x1d, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, + 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, + 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, + 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, + 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, + 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, + 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, + 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, + 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, + 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, + 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, + 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, + 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, - 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, - 0x63, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, - 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, - 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, - 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, - 0x48, 0x0a, 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, - 0x6f, 0x58, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, - 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, - 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, - 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, - 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, - 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, - 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, - 0x72, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, - 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, - 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, - 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, - 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, - 0x10, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x72, 0x0a, 0x1f, 0x6d, 0x6f, - 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x19, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, - 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, - 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, - 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, + 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, + 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, + 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, + 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, + 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, + 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, + 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, + 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, + 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, + 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x12, 0x72, 0x0a, 0x1f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, - 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, + 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, + 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x2a, - 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, - 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x23, 0x6d, 0x6f, 0x72, 0x70, - 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, - 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, - 0x7c, 0x0a, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, - 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, - 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, - 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, - 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, - 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, - 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, + 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x2a, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x70, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, - 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x1d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, + 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0a, 0x0a, + 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x1d, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, + 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1173,6 +1197,7 @@ var file_adaptors_aave_aave_v3_debt_token_proto_goTypes = []interface{}{ (*MorphoAaveV3ATokenCollateralAdaptorV1Calls)(nil), // 26: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls (*MorphoAaveV3ATokenP2PAdaptorV1Calls)(nil), // 27: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls (*MorphoAaveV3DebtTokenAdaptorV1Calls)(nil), // 28: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls + (*BalancerPoolAdaptorV1Calls)(nil), // 29: steward.v3.BalancerPoolAdaptorV1Calls } var file_adaptors_aave_aave_v3_debt_token_proto_depIdxs = []int32{ 7, // 0: steward.v3.AaveV3DebtTokenAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval @@ -1204,11 +1229,12 @@ var file_adaptors_aave_aave_v3_debt_token_proto_depIdxs = []int32{ 26, // 26: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_a_token_collateral_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls 27, // 27: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_a_token_p2p_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls 28, // 28: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls - 29, // [29:29] is the sub-list for method output_type - 29, // [29:29] is the sub-list for method input_type - 29, // [29:29] is the sub-list for extension type_name - 29, // [29:29] is the sub-list for extension extendee - 0, // [0:29] is the sub-list for field type_name + 29, // 29: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.balancer_pool_v1_calls:type_name -> steward.v3.BalancerPoolAdaptorV1Calls + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_adaptors_aave_aave_v3_debt_token_proto_init() } @@ -1219,6 +1245,7 @@ func file_adaptors_aave_aave_v3_debt_token_proto_init() { file_adaptors_aave_a_token_proto_init() file_adaptors_aave_debt_token_proto_init() file_adaptors_aave_aave_v3_a_token_proto_init() + file_adaptors_balancer_balancer_pool_proto_init() file_adaptors_compound_c_token_proto_init() file_adaptors_frax_f_token_proto_init() file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() @@ -1351,6 +1378,7 @@ func file_adaptors_aave_aave_v3_debt_token_proto_init() { (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls)(nil), (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls)(nil), (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/steward_proto_go/steward_proto/balancer_pool.pb.go b/steward_proto_go/steward_proto/balancer_pool.pb.go new file mode 100644 index 00000000..4b68f4f3 --- /dev/null +++ b/steward_proto_go/steward_proto/balancer_pool.pb.go @@ -0,0 +1,1176 @@ +// +// Protos for function calls to the Balancer Pool adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/balancer/balancer_pool.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents the SwapKind enum defined here: +// https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol +type BalancerPoolAdaptorV1_SwapKind int32 + +const ( + BalancerPoolAdaptorV1_SWAP_KIND_UNSPECIFIED BalancerPoolAdaptorV1_SwapKind = 0 + BalancerPoolAdaptorV1_SWAP_KIND_GIVEN_IN BalancerPoolAdaptorV1_SwapKind = 1 + BalancerPoolAdaptorV1_SWAP_KIND_GIVEN_OUT BalancerPoolAdaptorV1_SwapKind = 2 +) + +// Enum value maps for BalancerPoolAdaptorV1_SwapKind. +var ( + BalancerPoolAdaptorV1_SwapKind_name = map[int32]string{ + 0: "SWAP_KIND_UNSPECIFIED", + 1: "SWAP_KIND_GIVEN_IN", + 2: "SWAP_KIND_GIVEN_OUT", + } + BalancerPoolAdaptorV1_SwapKind_value = map[string]int32{ + "SWAP_KIND_UNSPECIFIED": 0, + "SWAP_KIND_GIVEN_IN": 1, + "SWAP_KIND_GIVEN_OUT": 2, + } +) + +func (x BalancerPoolAdaptorV1_SwapKind) Enum() *BalancerPoolAdaptorV1_SwapKind { + p := new(BalancerPoolAdaptorV1_SwapKind) + *p = x + return p +} + +func (x BalancerPoolAdaptorV1_SwapKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BalancerPoolAdaptorV1_SwapKind) Descriptor() protoreflect.EnumDescriptor { + return file_adaptors_balancer_balancer_pool_proto_enumTypes[0].Descriptor() +} + +func (BalancerPoolAdaptorV1_SwapKind) Type() protoreflect.EnumType { + return &file_adaptors_balancer_balancer_pool_proto_enumTypes[0] +} + +func (x BalancerPoolAdaptorV1_SwapKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_SwapKind.Descriptor instead. +func (BalancerPoolAdaptorV1_SwapKind) EnumDescriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 0} +} + +// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. +type BalancerPoolAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *BalancerPoolAdaptorV1_RevokeApproval + // *BalancerPoolAdaptorV1_JoinPool_ + // *BalancerPoolAdaptorV1_ExitPool_ + // *BalancerPoolAdaptorV1_StakeBpt + // *BalancerPoolAdaptorV1_UnstakeBpt + // *BalancerPoolAdaptorV1_ClaimRewards_ + Function isBalancerPoolAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *BalancerPoolAdaptorV1) Reset() { + *x = BalancerPoolAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0} +} + +func (m *BalancerPoolAdaptorV1) GetFunction() isBalancerPoolAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetJoinPool() *BalancerPoolAdaptorV1_JoinPool { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_JoinPool_); ok { + return x.JoinPool + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetExitPool() *BalancerPoolAdaptorV1_ExitPool { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_ExitPool_); ok { + return x.ExitPool + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetStakeBpt() *BalancerPoolAdaptorV1_StakeBPT { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_StakeBpt); ok { + return x.StakeBpt + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetUnstakeBpt() *BalancerPoolAdaptorV1_UnstakeBPT { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_UnstakeBpt); ok { + return x.UnstakeBpt + } + return nil +} + +func (x *BalancerPoolAdaptorV1) GetClaimRewards() *BalancerPoolAdaptorV1_ClaimRewards { + if x, ok := x.GetFunction().(*BalancerPoolAdaptorV1_ClaimRewards_); ok { + return x.ClaimRewards + } + return nil +} + +type isBalancerPoolAdaptorV1_Function interface { + isBalancerPoolAdaptorV1_Function() +} + +type BalancerPoolAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type BalancerPoolAdaptorV1_JoinPool_ struct { + // Represents function `relayerJoinPool(ERC20[] tokensIn, uint256[] amountsIn, ERC20 btpOut, bytes[] memory callData)` + JoinPool *BalancerPoolAdaptorV1_JoinPool `protobuf:"bytes,2,opt,name=join_pool,json=joinPool,proto3,oneof"` +} + +type BalancerPoolAdaptorV1_ExitPool_ struct { + // Represents function `relayerExitPool(ERC20 bptIn, uint256 amountIn, ERC20[] memory tokensOut, bytes[] memory callData)` + ExitPool *BalancerPoolAdaptorV1_ExitPool `protobuf:"bytes,3,opt,name=exit_pool,json=exitPool,proto3,oneof"` +} + +type BalancerPoolAdaptorV1_StakeBpt struct { + // Represents function `stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)` + StakeBpt *BalancerPoolAdaptorV1_StakeBPT `protobuf:"bytes,4,opt,name=stake_bpt,json=stakeBpt,proto3,oneof"` +} + +type BalancerPoolAdaptorV1_UnstakeBpt struct { + // Represents function `unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)` + UnstakeBpt *BalancerPoolAdaptorV1_UnstakeBPT `protobuf:"bytes,5,opt,name=unstake_bpt,json=unstakeBpt,proto3,oneof"` +} + +type BalancerPoolAdaptorV1_ClaimRewards_ struct { + // Represents function `claimRewards(address gauge)` + ClaimRewards *BalancerPoolAdaptorV1_ClaimRewards `protobuf:"bytes,6,opt,name=claim_rewards,json=claimRewards,proto3,oneof"` +} + +func (*BalancerPoolAdaptorV1_RevokeApproval) isBalancerPoolAdaptorV1_Function() {} + +func (*BalancerPoolAdaptorV1_JoinPool_) isBalancerPoolAdaptorV1_Function() {} + +func (*BalancerPoolAdaptorV1_ExitPool_) isBalancerPoolAdaptorV1_Function() {} + +func (*BalancerPoolAdaptorV1_StakeBpt) isBalancerPoolAdaptorV1_Function() {} + +func (*BalancerPoolAdaptorV1_UnstakeBpt) isBalancerPoolAdaptorV1_Function() {} + +func (*BalancerPoolAdaptorV1_ClaimRewards_) isBalancerPoolAdaptorV1_Function() {} + +type BalancerPoolAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*BalancerPoolAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *BalancerPoolAdaptorV1Calls) Reset() { + *x = BalancerPoolAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1Calls) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{1} +} + +func (x *BalancerPoolAdaptorV1Calls) GetCalls() []*BalancerPoolAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on the `kind` value. +// Represents the SingleSwap struct defined here: +// https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol +type BalancerPoolAdaptorV1_SingleSwap struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The pool ID (bytes32) + PoolId string `protobuf:"bytes,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + // The swap kind (enum) + Kind BalancerPoolAdaptorV1_SwapKind `protobuf:"varint,2,opt,name=kind,proto3,enum=steward.v3.BalancerPoolAdaptorV1_SwapKind" json:"kind,omitempty"` + // The asset in (address) + AssetIn string `protobuf:"bytes,3,opt,name=asset_in,json=assetIn,proto3" json:"asset_in,omitempty"` + // The asset out (address) + AssetOut string `protobuf:"bytes,4,opt,name=asset_out,json=assetOut,proto3" json:"asset_out,omitempty"` + // The amount (uint256) + Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + // The user data (bytes) + UserData []byte `protobuf:"bytes,6,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) Reset() { + *x = BalancerPoolAdaptorV1_SingleSwap{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_SingleSwap) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_SingleSwap) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_SingleSwap.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_SingleSwap) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetPoolId() string { + if x != nil { + return x.PoolId + } + return "" +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetKind() BalancerPoolAdaptorV1_SwapKind { + if x != nil { + return x.Kind + } + return BalancerPoolAdaptorV1_SWAP_KIND_UNSPECIFIED +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetAssetIn() string { + if x != nil { + return x.AssetIn + } + return "" +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetAssetOut() string { + if x != nil { + return x.AssetOut + } + return "" +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *BalancerPoolAdaptorV1_SingleSwap) GetUserData() []byte { + if x != nil { + return x.UserData + } + return nil +} + +// Stores each swaps min amount, and deadline +type BalancerPoolAdaptorV1_SwapData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The minimum amounts for swaps + MinAmountsForSwaps []string `protobuf:"bytes,1,rep,name=min_amounts_for_swaps,json=minAmountsForSwaps,proto3" json:"min_amounts_for_swaps,omitempty"` + // The swap deadlines + SwapDeadlines []string `protobuf:"bytes,2,rep,name=swap_deadlines,json=swapDeadlines,proto3" json:"swap_deadlines,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_SwapData) Reset() { + *x = BalancerPoolAdaptorV1_SwapData{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_SwapData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_SwapData) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_SwapData) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_SwapData.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_SwapData) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *BalancerPoolAdaptorV1_SwapData) GetMinAmountsForSwaps() []string { + if x != nil { + return x.MinAmountsForSwaps + } + return nil +} + +func (x *BalancerPoolAdaptorV1_SwapData) GetSwapDeadlines() []string { + if x != nil { + return x.SwapDeadlines + } + return nil +} + +// +// Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins +// +// Represents function `joinPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, uint256 minimumBpt)` +type BalancerPoolAdaptorV1_JoinPool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The target pool + TargetBpt string `protobuf:"bytes,1,opt,name=target_bpt,json=targetBpt,proto3" json:"target_bpt,omitempty"` + // Swap to execute before joining pool + SwapsBeforeJoin []*BalancerPoolAdaptorV1_SingleSwap `protobuf:"bytes,2,rep,name=swaps_before_join,json=swapsBeforeJoin,proto3" json:"swaps_before_join,omitempty"` + // Data for swaps + SwapData *BalancerPoolAdaptorV1_SwapData `protobuf:"bytes,3,opt,name=swap_data,json=swapData,proto3" json:"swap_data,omitempty"` + // The minimum BPT to mint + MinimumBpt string `protobuf:"bytes,4,opt,name=minimum_bpt,json=minimumBpt,proto3" json:"minimum_bpt,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_JoinPool) Reset() { + *x = BalancerPoolAdaptorV1_JoinPool{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_JoinPool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_JoinPool) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_JoinPool) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_JoinPool.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_JoinPool) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *BalancerPoolAdaptorV1_JoinPool) GetTargetBpt() string { + if x != nil { + return x.TargetBpt + } + return "" +} + +func (x *BalancerPoolAdaptorV1_JoinPool) GetSwapsBeforeJoin() []*BalancerPoolAdaptorV1_SingleSwap { + if x != nil { + return x.SwapsBeforeJoin + } + return nil +} + +func (x *BalancerPoolAdaptorV1_JoinPool) GetSwapData() *BalancerPoolAdaptorV1_SwapData { + if x != nil { + return x.SwapData + } + return nil +} + +func (x *BalancerPoolAdaptorV1_JoinPool) GetMinimumBpt() string { + if x != nil { + return x.MinimumBpt + } + return "" +} + +type BalancerPoolAdaptorV1_ExitPoolRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Assets []string `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"` + MinAmountsOut []string `protobuf:"bytes,2,rep,name=min_amounts_out,json=minAmountsOut,proto3" json:"min_amounts_out,omitempty"` + UserData []byte `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + ToInternalBalance bool `protobuf:"varint,4,opt,name=to_internal_balance,json=toInternalBalance,proto3" json:"to_internal_balance,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) Reset() { + *x = BalancerPoolAdaptorV1_ExitPoolRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_ExitPoolRequest) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_ExitPoolRequest.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_ExitPoolRequest) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) GetAssets() []string { + if x != nil { + return x.Assets + } + return nil +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) GetMinAmountsOut() []string { + if x != nil { + return x.MinAmountsOut + } + return nil +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) GetUserData() []byte { + if x != nil { + return x.UserData + } + return nil +} + +func (x *BalancerPoolAdaptorV1_ExitPoolRequest) GetToInternalBalance() bool { + if x != nil { + return x.ToInternalBalance + } + return false +} + +// +// Call `BalancerRelayer` on mainnet to carry out exit txs +// +// Represents function `exitPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, IVault.ExitPoolRequest request)` +type BalancerPoolAdaptorV1_ExitPool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The target pool + TargetBpt string `protobuf:"bytes,1,opt,name=target_bpt,json=targetBpt,proto3" json:"target_bpt,omitempty"` + // Swaps to execute after exiting pool + SwapsAfterExit []*BalancerPoolAdaptorV1_SingleSwap `protobuf:"bytes,2,rep,name=swaps_after_exit,json=swapsAfterExit,proto3" json:"swaps_after_exit,omitempty"` + // Data for swaps + SwapData *BalancerPoolAdaptorV1_SwapData `protobuf:"bytes,3,opt,name=swap_data,json=swapData,proto3" json:"swap_data,omitempty"` + Request *BalancerPoolAdaptorV1_ExitPoolRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_ExitPool) Reset() { + *x = BalancerPoolAdaptorV1_ExitPool{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_ExitPool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_ExitPool) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_ExitPool) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_ExitPool.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_ExitPool) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *BalancerPoolAdaptorV1_ExitPool) GetTargetBpt() string { + if x != nil { + return x.TargetBpt + } + return "" +} + +func (x *BalancerPoolAdaptorV1_ExitPool) GetSwapsAfterExit() []*BalancerPoolAdaptorV1_SingleSwap { + if x != nil { + return x.SwapsAfterExit + } + return nil +} + +func (x *BalancerPoolAdaptorV1_ExitPool) GetSwapData() *BalancerPoolAdaptorV1_SwapData { + if x != nil { + return x.SwapData + } + return nil +} + +func (x *BalancerPoolAdaptorV1_ExitPool) GetRequest() *BalancerPoolAdaptorV1_ExitPoolRequest { + if x != nil { + return x.Request + } + return nil +} + +// +// Stake (deposit) BPTs into respective pool gauge +// +// Represents `function stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)`` +type BalancerPoolAdaptorV1_StakeBPT struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The BPT to stake + Bpt string `protobuf:"bytes,1,opt,name=bpt,proto3" json:"bpt,omitempty"` + // The liquidity gauge to stake into + LiquidityGauge string `protobuf:"bytes,2,opt,name=liquidity_gauge,json=liquidityGauge,proto3" json:"liquidity_gauge,omitempty"` + // The amount to stake + AmountIn string `protobuf:"bytes,3,opt,name=amount_in,json=amountIn,proto3" json:"amount_in,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_StakeBPT) Reset() { + *x = BalancerPoolAdaptorV1_StakeBPT{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_StakeBPT) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_StakeBPT) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_StakeBPT) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_StakeBPT.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_StakeBPT) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *BalancerPoolAdaptorV1_StakeBPT) GetBpt() string { + if x != nil { + return x.Bpt + } + return "" +} + +func (x *BalancerPoolAdaptorV1_StakeBPT) GetLiquidityGauge() string { + if x != nil { + return x.LiquidityGauge + } + return "" +} + +func (x *BalancerPoolAdaptorV1_StakeBPT) GetAmountIn() string { + if x != nil { + return x.AmountIn + } + return "" +} + +// +// Unstake (withdraw) BPT from respective pool gauge +// +// Represents `function unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)`` +type BalancerPoolAdaptorV1_UnstakeBPT struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The BPT to unstake + Bpt string `protobuf:"bytes,1,opt,name=bpt,proto3" json:"bpt,omitempty"` + // The liquidity gauge to unstake from + LiquidityGauge string `protobuf:"bytes,2,opt,name=liquidity_gauge,json=liquidityGauge,proto3" json:"liquidity_gauge,omitempty"` + // The amount to unstake + AmountOut string `protobuf:"bytes,3,opt,name=amount_out,json=amountOut,proto3" json:"amount_out,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) Reset() { + *x = BalancerPoolAdaptorV1_UnstakeBPT{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_UnstakeBPT) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_UnstakeBPT.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_UnstakeBPT) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 6} +} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) GetBpt() string { + if x != nil { + return x.Bpt + } + return "" +} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) GetLiquidityGauge() string { + if x != nil { + return x.LiquidityGauge + } + return "" +} + +func (x *BalancerPoolAdaptorV1_UnstakeBPT) GetAmountOut() string { + if x != nil { + return x.AmountOut + } + return "" +} + +// +// Claim rewards ($BAL) from LP position +// +// Represents `function claimRewards(address gauge)` +type BalancerPoolAdaptorV1_ClaimRewards struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The gauge to claim rewards from + Gauge string `protobuf:"bytes,1,opt,name=gauge,proto3" json:"gauge,omitempty"` +} + +func (x *BalancerPoolAdaptorV1_ClaimRewards) Reset() { + *x = BalancerPoolAdaptorV1_ClaimRewards{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BalancerPoolAdaptorV1_ClaimRewards) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BalancerPoolAdaptorV1_ClaimRewards) ProtoMessage() {} + +func (x *BalancerPoolAdaptorV1_ClaimRewards) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_balancer_balancer_pool_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BalancerPoolAdaptorV1_ClaimRewards.ProtoReflect.Descriptor instead. +func (*BalancerPoolAdaptorV1_ClaimRewards) Descriptor() ([]byte, []int) { + return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 7} +} + +func (x *BalancerPoolAdaptorV1_ClaimRewards) GetGauge() string { + if x != nil { + return x.Gauge + } + return "" +} + +var File_adaptors_balancer_balancer_pool_proto protoreflect.FileDescriptor + +var file_adaptors_balancer_balancer_pool_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x0e, 0x0a, 0x15, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x49, 0x0a, 0x09, 0x6a, 0x6f, 0x69, + 0x6e, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, + 0x4a, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x49, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x6f, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, + 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x50, + 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, + 0x49, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x62, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x50, 0x54, 0x48, 0x00, + 0x52, 0x08, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x70, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x62, 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x50, 0x54, 0x48, 0x00, 0x52, + 0x0a, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x70, 0x74, 0x12, 0x55, 0x0a, 0x0d, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x1a, 0xd2, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x77, 0x61, + 0x70, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, + 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, + 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x49, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6f, + 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4f, + 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x64, 0x0a, 0x08, 0x53, 0x77, 0x61, 0x70, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x53, 0x77, 0x61, 0x70, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x64, + 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x77, 0x61, 0x70, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x1a, 0xed, 0x01, + 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x70, 0x74, 0x12, 0x58, 0x0a, 0x11, 0x73, 0x77, 0x61, + 0x70, 0x73, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x77, + 0x61, 0x70, 0x52, 0x0f, 0x73, 0x77, 0x61, 0x70, 0x73, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x4a, + 0x6f, 0x69, 0x6e, 0x12, 0x47, 0x0a, 0x09, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x73, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x62, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x42, 0x70, 0x74, 0x1a, 0x9e, 0x01, + 0x0a, 0x0f, 0x45, 0x78, 0x69, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, + 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4f, 0x75, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, + 0x0a, 0x13, 0x74, 0x6f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x74, 0x6f, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x97, + 0x02, 0x0a, 0x08, 0x45, 0x78, 0x69, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x70, 0x74, 0x12, 0x56, 0x0a, 0x10, 0x73, 0x77, + 0x61, 0x70, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x77, + 0x61, 0x70, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x45, 0x78, + 0x69, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x73, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, + 0x45, 0x78, 0x69, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x62, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x42, 0x50, 0x54, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x62, 0x70, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x5f, 0x67, 0x61, 0x75, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x47, 0x61, 0x75, 0x67, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x1a, 0x66, 0x0a, 0x0a, + 0x55, 0x6e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x42, 0x50, 0x54, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x70, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x70, 0x74, 0x12, 0x27, 0x0a, 0x0f, + 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x61, 0x75, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x47, 0x61, 0x75, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x4f, 0x75, 0x74, 0x1a, 0x24, 0x0a, 0x0c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x61, 0x75, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x61, 0x75, 0x67, 0x65, 0x22, 0x56, 0x0a, 0x08, 0x53, 0x77, + 0x61, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x41, 0x50, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x41, 0x50, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, + 0x49, 0x56, 0x45, 0x4e, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x57, 0x41, + 0x50, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x49, 0x56, 0x45, 0x4e, 0x5f, 0x4f, 0x55, 0x54, + 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, + 0x0a, 0x1a, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x05, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, 0x05, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_adaptors_balancer_balancer_pool_proto_rawDescOnce sync.Once + file_adaptors_balancer_balancer_pool_proto_rawDescData = file_adaptors_balancer_balancer_pool_proto_rawDesc +) + +func file_adaptors_balancer_balancer_pool_proto_rawDescGZIP() []byte { + file_adaptors_balancer_balancer_pool_proto_rawDescOnce.Do(func() { + file_adaptors_balancer_balancer_pool_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_balancer_balancer_pool_proto_rawDescData) + }) + return file_adaptors_balancer_balancer_pool_proto_rawDescData +} + +var file_adaptors_balancer_balancer_pool_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_adaptors_balancer_balancer_pool_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_adaptors_balancer_balancer_pool_proto_goTypes = []interface{}{ + (BalancerPoolAdaptorV1_SwapKind)(0), // 0: steward.v3.BalancerPoolAdaptorV1.SwapKind + (*BalancerPoolAdaptorV1)(nil), // 1: steward.v3.BalancerPoolAdaptorV1 + (*BalancerPoolAdaptorV1Calls)(nil), // 2: steward.v3.BalancerPoolAdaptorV1Calls + (*BalancerPoolAdaptorV1_SingleSwap)(nil), // 3: steward.v3.BalancerPoolAdaptorV1.SingleSwap + (*BalancerPoolAdaptorV1_SwapData)(nil), // 4: steward.v3.BalancerPoolAdaptorV1.SwapData + (*BalancerPoolAdaptorV1_JoinPool)(nil), // 5: steward.v3.BalancerPoolAdaptorV1.JoinPool + (*BalancerPoolAdaptorV1_ExitPoolRequest)(nil), // 6: steward.v3.BalancerPoolAdaptorV1.ExitPoolRequest + (*BalancerPoolAdaptorV1_ExitPool)(nil), // 7: steward.v3.BalancerPoolAdaptorV1.ExitPool + (*BalancerPoolAdaptorV1_StakeBPT)(nil), // 8: steward.v3.BalancerPoolAdaptorV1.StakeBPT + (*BalancerPoolAdaptorV1_UnstakeBPT)(nil), // 9: steward.v3.BalancerPoolAdaptorV1.UnstakeBPT + (*BalancerPoolAdaptorV1_ClaimRewards)(nil), // 10: steward.v3.BalancerPoolAdaptorV1.ClaimRewards + (*RevokeApproval)(nil), // 11: steward.v3.RevokeApproval +} +var file_adaptors_balancer_balancer_pool_proto_depIdxs = []int32{ + 11, // 0: steward.v3.BalancerPoolAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 5, // 1: steward.v3.BalancerPoolAdaptorV1.join_pool:type_name -> steward.v3.BalancerPoolAdaptorV1.JoinPool + 7, // 2: steward.v3.BalancerPoolAdaptorV1.exit_pool:type_name -> steward.v3.BalancerPoolAdaptorV1.ExitPool + 8, // 3: steward.v3.BalancerPoolAdaptorV1.stake_bpt:type_name -> steward.v3.BalancerPoolAdaptorV1.StakeBPT + 9, // 4: steward.v3.BalancerPoolAdaptorV1.unstake_bpt:type_name -> steward.v3.BalancerPoolAdaptorV1.UnstakeBPT + 10, // 5: steward.v3.BalancerPoolAdaptorV1.claim_rewards:type_name -> steward.v3.BalancerPoolAdaptorV1.ClaimRewards + 1, // 6: steward.v3.BalancerPoolAdaptorV1Calls.calls:type_name -> steward.v3.BalancerPoolAdaptorV1 + 0, // 7: steward.v3.BalancerPoolAdaptorV1.SingleSwap.kind:type_name -> steward.v3.BalancerPoolAdaptorV1.SwapKind + 3, // 8: steward.v3.BalancerPoolAdaptorV1.JoinPool.swaps_before_join:type_name -> steward.v3.BalancerPoolAdaptorV1.SingleSwap + 4, // 9: steward.v3.BalancerPoolAdaptorV1.JoinPool.swap_data:type_name -> steward.v3.BalancerPoolAdaptorV1.SwapData + 3, // 10: steward.v3.BalancerPoolAdaptorV1.ExitPool.swaps_after_exit:type_name -> steward.v3.BalancerPoolAdaptorV1.SingleSwap + 4, // 11: steward.v3.BalancerPoolAdaptorV1.ExitPool.swap_data:type_name -> steward.v3.BalancerPoolAdaptorV1.SwapData + 6, // 12: steward.v3.BalancerPoolAdaptorV1.ExitPool.request:type_name -> steward.v3.BalancerPoolAdaptorV1.ExitPoolRequest + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_adaptors_balancer_balancer_pool_proto_init() } +func file_adaptors_balancer_balancer_pool_proto_init() { + if File_adaptors_balancer_balancer_pool_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_balancer_balancer_pool_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_SingleSwap); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_SwapData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_JoinPool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_ExitPoolRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_ExitPool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_StakeBPT); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_UnstakeBPT); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BalancerPoolAdaptorV1_ClaimRewards); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_balancer_balancer_pool_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*BalancerPoolAdaptorV1_RevokeApproval)(nil), + (*BalancerPoolAdaptorV1_JoinPool_)(nil), + (*BalancerPoolAdaptorV1_ExitPool_)(nil), + (*BalancerPoolAdaptorV1_StakeBpt)(nil), + (*BalancerPoolAdaptorV1_UnstakeBpt)(nil), + (*BalancerPoolAdaptorV1_ClaimRewards_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_balancer_balancer_pool_proto_rawDesc, + NumEnums: 1, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_balancer_balancer_pool_proto_goTypes, + DependencyIndexes: file_adaptors_balancer_balancer_pool_proto_depIdxs, + EnumInfos: file_adaptors_balancer_balancer_pool_proto_enumTypes, + MessageInfos: file_adaptors_balancer_balancer_pool_proto_msgTypes, + }.Build() + File_adaptors_balancer_balancer_pool_proto = out.File + file_adaptors_balancer_balancer_pool_proto_rawDesc = nil + file_adaptors_balancer_balancer_pool_proto_goTypes = nil + file_adaptors_balancer_balancer_pool_proto_depIdxs = nil +} diff --git a/steward_proto_go/steward_proto/cellar_v2.pb.go b/steward_proto_go/steward_proto/cellar_v2.pb.go index ad1970c2..052ae7c7 100644 --- a/steward_proto_go/steward_proto/cellar_v2.pb.go +++ b/steward_proto_go/steward_proto/cellar_v2.pb.go @@ -376,6 +376,7 @@ type AdaptorCall struct { // *AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls // *AdaptorCall_MorphoAaveV3ATokenP2PV1Calls // *AdaptorCall_MorphoAaveV3DebtTokenV1Calls + // *AdaptorCall_BalancerPoolV1Calls CallData isAdaptorCall_CallData `protobuf_oneof:"call_data"` } @@ -579,6 +580,13 @@ func (x *AdaptorCall) GetMorphoAaveV3DebtTokenV1Calls() *MorphoAaveV3DebtTokenAd return nil } +func (x *AdaptorCall) GetBalancerPoolV1Calls() *BalancerPoolAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_BalancerPoolV1Calls); ok { + return x.BalancerPoolV1Calls + } + return nil +} + type isAdaptorCall_CallData interface { isAdaptorCall_CallData() } @@ -693,6 +701,11 @@ type AdaptorCall_MorphoAaveV3DebtTokenV1Calls struct { MorphoAaveV3DebtTokenV1Calls *MorphoAaveV3DebtTokenAdaptorV1Calls `protobuf:"bytes,23,opt,name=morpho_aave_v3_debt_token_v1_calls,json=morphoAaveV3DebtTokenV1Calls,proto3,oneof"` } +type AdaptorCall_BalancerPoolV1Calls struct { + // Represents function calls to the BalancerPoolAdaptor V1 + BalancerPoolV1Calls *BalancerPoolAdaptorV1Calls `protobuf:"bytes,24,opt,name=balancer_pool_v1_calls,json=balancerPoolV1Calls,proto3,oneof"` +} + func (*AdaptorCall_UniswapV3V1Calls) isAdaptorCall_CallData() {} func (*AdaptorCall_AaveATokenV1Calls) isAdaptorCall_CallData() {} @@ -737,6 +750,8 @@ func (*AdaptorCall_MorphoAaveV3ATokenP2PV1Calls) isAdaptorCall_CallData() {} func (*AdaptorCall_MorphoAaveV3DebtTokenV1Calls) isAdaptorCall_CallData() {} +func (*AdaptorCall_BalancerPoolV1Calls) isAdaptorCall_CallData() {} + // // Insert a trusted position to the list of positions used by the cellar at a given index. // @@ -2540,261 +2555,113 @@ var file_cellar_v2_proto_rawDesc = []byte{ 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, - 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, - 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, - 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, + 0x64, 0x2f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, - 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, - 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, - 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, - 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, - 0x61, 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, - 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, - 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, - 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, - 0x2f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x0e, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x41, - 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, - 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x63, 0x61, 0x6c, - 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, - 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, - 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x1d, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, - 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, - 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, - 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x77, - 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, - 0x15, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, + 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, + 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, + 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, + 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x6f, + 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x61, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x0e, 0x0a, + 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x64, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4c, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, + 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4e, + 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, + 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x73, - 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, - 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x46, 0x65, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x48, 0x0a, 0x0d, - 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, - 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, - 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, - 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, - 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x1a, 0x3c, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, - 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, - 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x1a, 0x34, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x31, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, - 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, - 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, - 0x3c, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x28, 0x0a, - 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x33, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x1a, 0x12, 0x0a, 0x10, - 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, - 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, - 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfa, 0x14, 0x0a, - 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x12, 0x4a, 0x0a, 0x0d, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x40, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, + 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x1d, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, + 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, + 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x15, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, + 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x10, + 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x73, + 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x12, 0x54, 0x0a, + 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x49, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, + 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, + 0x6f, 0x77, 0x6e, 0x12, 0x48, 0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, 0x74, + 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, - 0x5f, 0x32, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x1a, 0xd1, 0x0b, 0x0a, 0x0c, 0x46, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x64, - 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, - 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x1d, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, - 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, - 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0e, - 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x77, 0x61, - 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, - 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x73, - 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, - 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x15, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, - 0x12, 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x12, 0x56, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x70, 0x0a, 0x1b, 0x73, - 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, - 0x74, 0x48, 0x00, 0x52, 0x18, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x12, 0x4a, 0x0a, - 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x4c, 0x69, 0x66, - 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, - 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x64, 0x64, - 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, - 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, - 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x15, 0x61, 0x64, 0x64, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x75, 0x65, 0x12, 0x6a, 0x0a, 0x19, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, - 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x16, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x76, - 0x0a, 0x1d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x43, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x79, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x75, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, - 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x97, 0x01, + 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, + 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, @@ -2833,179 +2700,336 @@ var file_cellar_v2_proto_rawDesc = []byte{ 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x76, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x33, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x28, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x33, + 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x46, 0x65, 0x65, 0x1a, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xfa, 0x14, 0x0a, 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, + 0x5f, 0x32, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, + 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x00, + 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x40, + 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, + 0x1a, 0xd1, 0x0b, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, + 0x6c, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x63, 0x61, + 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, + 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6c, + 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x14, + 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, + 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x1d, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, + 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x15, 0x73, 0x65, + 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, + 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x56, 0x0a, 0x11, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x49, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, + 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x12, 0x70, 0x0a, 0x1b, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x75, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, + 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x48, 0x00, 0x52, 0x18, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x43, 0x75, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x75, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x43, 0x75, 0x74, 0x1a, 0x0e, 0x0a, - 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x31, 0x0a, - 0x15, 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x1a, 0x57, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x4a, 0x0a, - 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x46, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x0d, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x16, 0x41, 0x64, 0x64, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x36, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x3e, 0x0a, 0x1b, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, - 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x0b, 0x0a, 0x09, - 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x89, 0x12, 0x0a, 0x0b, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, + 0x6d, 0x43, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, + 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, + 0x32, 0x5f, 0x32, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x12, 0x67, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, + 0x48, 0x00, 0x52, 0x15, 0x61, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x6a, 0x0a, 0x19, 0x61, 0x64, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x16, 0x61, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x76, 0x0a, 0x1d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, + 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, + 0x00, 0x52, 0x1a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x79, 0x0a, + 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, + 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x3c, + 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, + 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x0e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, + 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x48, + 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, + 0x34, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, + 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x12, + 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, + 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, 0x0a, 0x12, + 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, 0x3c, 0x0a, + 0x15, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, + 0x65, 0x77, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x0a, 0x10, 0x49, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, + 0x33, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x65, 0x77, 0x5f, 0x63, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x65, + 0x77, 0x43, 0x75, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, + 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x31, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x4a, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, + 0x6c, 0x52, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x1a, 0x39, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x36, 0x0a, 0x1a, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, - 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, - 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, - 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, - 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, - 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x1a, 0x3e, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x22, 0xe8, 0x12, 0x0a, 0x0b, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, + 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, + 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, + 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, + 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x64, 0x0a, + 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, + 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, + 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, + 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, + 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, + 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, + 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x6f, + 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x6e, 0x65, + 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x66, + 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x65, 0x65, + 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x66, 0x65, + 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x5f, 0x76, + 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, - 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, - 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, - 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, - 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, - 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, - 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, - 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, - 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, - 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, - 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, - 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, - 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, - 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, - 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, + 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, + 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, + 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, - 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, - 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, - 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, - 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x72, 0x0a, 0x1f, 0x6d, 0x6f, 0x72, 0x70, - 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x19, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, - 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, - 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, + 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x2b, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, 0x61, 0x61, + 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, + 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x72, 0x0a, 0x1f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, + 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, - 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, + 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x2a, 0x6d, 0x6f, - 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, - 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, - 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, - 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, - 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7c, 0x0a, - 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, - 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, - 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, + 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x91, 0x01, 0x0a, 0x2a, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, + 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, + 0x32, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x50, 0x32, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, - 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, - 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, - 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, + 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, + 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, + 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x5d, 0x0a, 0x16, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x0b, + 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x5a, 0x0e, 0x2f, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3076,6 +3100,7 @@ var file_cellar_v2_proto_goTypes = []interface{}{ (*MorphoAaveV3ATokenCollateralAdaptorV1Calls)(nil), // 51: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls (*MorphoAaveV3ATokenP2PAdaptorV1Calls)(nil), // 52: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls (*MorphoAaveV3DebtTokenAdaptorV1Calls)(nil), // 53: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls + (*BalancerPoolAdaptorV1Calls)(nil), // 54: steward.v3.BalancerPoolAdaptorV1Calls } var file_cellar_v2_proto_depIdxs = []int32{ 3, // 0: steward.v3.CellarV2.add_position:type_name -> steward.v3.CellarV2.AddPosition @@ -3114,29 +3139,30 @@ var file_cellar_v2_proto_depIdxs = []int32{ 51, // 33: steward.v3.AdaptorCall.morpho_aave_v3_a_token_collateral_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls 52, // 34: steward.v3.AdaptorCall.morpho_aave_v3_a_token_p2p_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls 53, // 35: steward.v3.AdaptorCall.morpho_aave_v3_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls - 2, // 36: steward.v3.CellarV2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall - 16, // 37: steward.v3.CellarV2_2.FunctionCall.add_position:type_name -> steward.v3.CellarV2_2.AddPosition - 17, // 38: steward.v3.CellarV2_2.FunctionCall.call_on_adaptor:type_name -> steward.v3.CellarV2_2.CallOnAdaptor - 18, // 39: steward.v3.CellarV2_2.FunctionCall.remove_position:type_name -> steward.v3.CellarV2_2.RemovePosition - 19, // 40: steward.v3.CellarV2_2.FunctionCall.set_holding_position:type_name -> steward.v3.CellarV2_2.SetHoldingPosition - 20, // 41: steward.v3.CellarV2_2.FunctionCall.set_strategist_payout_address:type_name -> steward.v3.CellarV2_2.SetStrategistPayoutAddress - 21, // 42: steward.v3.CellarV2_2.FunctionCall.swap_positions:type_name -> steward.v3.CellarV2_2.SwapPositions - 23, // 43: steward.v3.CellarV2_2.FunctionCall.set_rebalance_deviation:type_name -> steward.v3.CellarV2_2.SetRebalanceDeviation - 22, // 44: steward.v3.CellarV2_2.FunctionCall.set_share_lock_period:type_name -> steward.v3.CellarV2_2.SetShareLockPeriod - 24, // 45: steward.v3.CellarV2_2.FunctionCall.initiate_shutdown:type_name -> steward.v3.CellarV2_2.InitiateShutdown - 25, // 46: steward.v3.CellarV2_2.FunctionCall.set_strategist_platform_cut:type_name -> steward.v3.CellarV2_2.SetStrategistPlatformCut - 26, // 47: steward.v3.CellarV2_2.FunctionCall.lift_shutdown:type_name -> steward.v3.CellarV2_2.LiftShutdown - 27, // 48: steward.v3.CellarV2_2.FunctionCall.add_adaptor_to_catalogue:type_name -> steward.v3.CellarV2_2.AddAdaptorToCatalogue - 29, // 49: steward.v3.CellarV2_2.FunctionCall.add_position_to_catalogue:type_name -> steward.v3.CellarV2_2.AddPositionToCatalogue - 30, // 50: steward.v3.CellarV2_2.FunctionCall.remove_adaptor_from_catalogue:type_name -> steward.v3.CellarV2_2.RemoveAdaptorFromCatalogue - 31, // 51: steward.v3.CellarV2_2.FunctionCall.remove_position_from_catalogue:type_name -> steward.v3.CellarV2_2.RemovePositionFromCatalogue - 2, // 52: steward.v3.CellarV2_2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall - 15, // 53: steward.v3.CellarV2_2.Multicall.function_calls:type_name -> steward.v3.CellarV2_2.FunctionCall - 54, // [54:54] is the sub-list for method output_type - 54, // [54:54] is the sub-list for method input_type - 54, // [54:54] is the sub-list for extension type_name - 54, // [54:54] is the sub-list for extension extendee - 0, // [0:54] is the sub-list for field type_name + 54, // 36: steward.v3.AdaptorCall.balancer_pool_v1_calls:type_name -> steward.v3.BalancerPoolAdaptorV1Calls + 2, // 37: steward.v3.CellarV2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall + 16, // 38: steward.v3.CellarV2_2.FunctionCall.add_position:type_name -> steward.v3.CellarV2_2.AddPosition + 17, // 39: steward.v3.CellarV2_2.FunctionCall.call_on_adaptor:type_name -> steward.v3.CellarV2_2.CallOnAdaptor + 18, // 40: steward.v3.CellarV2_2.FunctionCall.remove_position:type_name -> steward.v3.CellarV2_2.RemovePosition + 19, // 41: steward.v3.CellarV2_2.FunctionCall.set_holding_position:type_name -> steward.v3.CellarV2_2.SetHoldingPosition + 20, // 42: steward.v3.CellarV2_2.FunctionCall.set_strategist_payout_address:type_name -> steward.v3.CellarV2_2.SetStrategistPayoutAddress + 21, // 43: steward.v3.CellarV2_2.FunctionCall.swap_positions:type_name -> steward.v3.CellarV2_2.SwapPositions + 23, // 44: steward.v3.CellarV2_2.FunctionCall.set_rebalance_deviation:type_name -> steward.v3.CellarV2_2.SetRebalanceDeviation + 22, // 45: steward.v3.CellarV2_2.FunctionCall.set_share_lock_period:type_name -> steward.v3.CellarV2_2.SetShareLockPeriod + 24, // 46: steward.v3.CellarV2_2.FunctionCall.initiate_shutdown:type_name -> steward.v3.CellarV2_2.InitiateShutdown + 25, // 47: steward.v3.CellarV2_2.FunctionCall.set_strategist_platform_cut:type_name -> steward.v3.CellarV2_2.SetStrategistPlatformCut + 26, // 48: steward.v3.CellarV2_2.FunctionCall.lift_shutdown:type_name -> steward.v3.CellarV2_2.LiftShutdown + 27, // 49: steward.v3.CellarV2_2.FunctionCall.add_adaptor_to_catalogue:type_name -> steward.v3.CellarV2_2.AddAdaptorToCatalogue + 29, // 50: steward.v3.CellarV2_2.FunctionCall.add_position_to_catalogue:type_name -> steward.v3.CellarV2_2.AddPositionToCatalogue + 30, // 51: steward.v3.CellarV2_2.FunctionCall.remove_adaptor_from_catalogue:type_name -> steward.v3.CellarV2_2.RemoveAdaptorFromCatalogue + 31, // 52: steward.v3.CellarV2_2.FunctionCall.remove_position_from_catalogue:type_name -> steward.v3.CellarV2_2.RemovePositionFromCatalogue + 2, // 53: steward.v3.CellarV2_2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall + 15, // 54: steward.v3.CellarV2_2.Multicall.function_calls:type_name -> steward.v3.CellarV2_2.FunctionCall + 55, // [55:55] is the sub-list for method output_type + 55, // [55:55] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_cellar_v2_proto_init() } @@ -3148,6 +3174,7 @@ func file_cellar_v2_proto_init() { file_adaptors_aave_debt_token_proto_init() file_adaptors_aave_aave_v3_a_token_proto_init() file_adaptors_aave_aave_v3_debt_token_proto_init() + file_adaptors_balancer_balancer_pool_proto_init() file_adaptors_compound_c_token_proto_init() file_adaptors_frax_f_token_proto_init() file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() @@ -3590,6 +3617,7 @@ func file_cellar_v2_proto_init() { (*AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls)(nil), (*AdaptorCall_MorphoAaveV3ATokenP2PV1Calls)(nil), (*AdaptorCall_MorphoAaveV3DebtTokenV1Calls)(nil), + (*AdaptorCall_BalancerPoolV1Calls)(nil), } file_cellar_v2_proto_msgTypes[15].OneofWrappers = []interface{}{ (*CellarV2_2_FunctionCall_AddPosition)(nil), diff --git a/steward_proto_rust/src/prost/descriptor.bin b/steward_proto_rust/src/prost/descriptor.bin index 0b5ee4a2..f6af6cd2 100644 Binary files a/steward_proto_rust/src/prost/descriptor.bin and b/steward_proto_rust/src/prost/descriptor.bin differ diff --git a/steward_proto_rust/src/prost/steward.v3.rs b/steward_proto_rust/src/prost/steward.v3.rs index cb602b06..e97b8868 100644 --- a/steward_proto_rust/src/prost/steward.v3.rs +++ b/steward_proto_rust/src/prost/steward.v3.rs @@ -1672,6 +1672,192 @@ pub struct AaveV3aTokenAdaptorV1Calls { #[prost(message, repeated, tag = "1")] pub calls: ::prost::alloc::vec::Vec, } +/// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct BalancerPoolAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost( + oneof = "balancer_pool_adaptor_v1::Function", + tags = "1, 2, 3, 4, 5, 6" + )] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `BalancerPoolAdaptorV1`. +pub mod balancer_pool_adaptor_v1 { + /// Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on the `kind` value. + /// Represents the SingleSwap struct defined here: + /// https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct SingleSwap { + /// The pool ID (bytes32) + #[prost(string, tag = "1")] + pub pool_id: ::prost::alloc::string::String, + /// The swap kind (enum) + #[prost(enumeration = "SwapKind", tag = "2")] + pub kind: i32, + /// The asset in (address) + #[prost(string, tag = "3")] + pub asset_in: ::prost::alloc::string::String, + /// The asset out (address) + #[prost(string, tag = "4")] + pub asset_out: ::prost::alloc::string::String, + /// The amount (uint256) + #[prost(string, tag = "5")] + pub amount: ::prost::alloc::string::String, + /// The user data (bytes) + #[prost(bytes = "vec", tag = "6")] + pub user_data: ::prost::alloc::vec::Vec, + } + /// Stores each swaps min amount, and deadline + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct SwapData { + /// The minimum amounts for swaps + #[prost(string, repeated, tag = "1")] + pub min_amounts_for_swaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The swap deadlines + #[prost(string, repeated, tag = "2")] + pub swap_deadlines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + } + /// + /// Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins + /// + /// Represents function `joinPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, uint256 minimumBpt)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct JoinPool { + /// The target pool + #[prost(string, tag = "1")] + pub target_bpt: ::prost::alloc::string::String, + /// Swap to execute before joining pool + #[prost(message, repeated, tag = "2")] + pub swaps_before_join: ::prost::alloc::vec::Vec, + /// Data for swaps + #[prost(message, optional, tag = "3")] + pub swap_data: ::core::option::Option, + /// The minimum BPT to mint + #[prost(string, tag = "4")] + pub minimum_bpt: ::prost::alloc::string::String, + } + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct ExitPoolRequest { + #[prost(string, repeated, tag = "1")] + pub assets: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(string, repeated, tag = "2")] + pub min_amounts_out: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(bytes = "vec", tag = "3")] + pub user_data: ::prost::alloc::vec::Vec, + #[prost(bool, tag = "4")] + pub to_internal_balance: bool, + } + /// + /// Call `BalancerRelayer` on mainnet to carry out exit txs + /// + /// Represents function `exitPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, IVault.ExitPoolRequest request)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct ExitPool { + /// The target pool + #[prost(string, tag = "1")] + pub target_bpt: ::prost::alloc::string::String, + /// Swaps to execute after exiting pool + #[prost(message, repeated, tag = "2")] + pub swaps_after_exit: ::prost::alloc::vec::Vec, + /// Data for swaps + #[prost(message, optional, tag = "3")] + pub swap_data: ::core::option::Option, + #[prost(message, optional, tag = "4")] + pub request: ::core::option::Option, + } + /// + /// Stake (deposit) BPTs into respective pool gauge + /// + /// Represents `function stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)`` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct StakeBpt { + /// The BPT to stake + #[prost(string, tag = "1")] + pub bpt: ::prost::alloc::string::String, + /// The liquidity gauge to stake into + #[prost(string, tag = "2")] + pub liquidity_gauge: ::prost::alloc::string::String, + /// The amount to stake + #[prost(string, tag = "3")] + pub amount_in: ::prost::alloc::string::String, + } + /// + /// Unstake (withdraw) BPT from respective pool gauge + /// + /// Represents `function unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)`` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct UnstakeBpt { + /// The BPT to unstake + #[prost(string, tag = "1")] + pub bpt: ::prost::alloc::string::String, + /// The liquidity gauge to unstake from + #[prost(string, tag = "2")] + pub liquidity_gauge: ::prost::alloc::string::String, + /// The amount to unstake + #[prost(string, tag = "3")] + pub amount_out: ::prost::alloc::string::String, + } + /// + /// Claim rewards ($BAL) from LP position + /// + /// Represents `function claimRewards(address gauge)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct ClaimRewards { + /// The gauge to claim rewards from + #[prost(string, tag = "1")] + pub gauge: ::prost::alloc::string::String, + } + /// Represents the SwapKind enum defined here: + /// https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol + #[derive( + serde::Deserialize, + serde::Serialize, + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration, + )] + #[repr(i32)] + pub enum SwapKind { + Unspecified = 0, + GivenIn = 1, + GivenOut = 2, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `relayerJoinPool(ERC20[] tokensIn, uint256[] amountsIn, ERC20 btpOut, bytes[] memory callData)` + #[prost(message, tag = "2")] + JoinPool(JoinPool), + /// Represents function `relayerExitPool(ERC20 bptIn, uint256 amountIn, ERC20[] memory tokensOut, bytes[] memory callData)` + #[prost(message, tag = "3")] + ExitPool(ExitPool), + /// Represents function `stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)` + #[prost(message, tag = "4")] + StakeBpt(StakeBpt), + /// Represents function `unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)` + #[prost(message, tag = "5")] + UnstakeBpt(UnstakeBpt), + /// Represents function `claimRewards(address gauge)` + #[prost(message, tag = "6")] + ClaimRewards(ClaimRewards), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct BalancerPoolAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} /// Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] pub struct CompoundCTokenAdaptorV2 { @@ -2018,7 +2204,7 @@ pub mod aave_v3_debt_token_adaptor_v1 { /// The function call data for the adaptor #[prost( oneof = "adaptor_call_for_aave_v3_flashloan::CallData", - tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23" + tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24" )] pub call_data: ::core::option::Option, } @@ -2097,6 +2283,9 @@ pub mod aave_v3_debt_token_adaptor_v1 { /// Represents function calls to the MorphoAaveV3DebtToken V1 #[prost(message, tag = "23")] MorphoAaveV3DebtTokenV1Calls(super::super::MorphoAaveV3DebtTokenAdaptorV1Calls), + /// Represents function calls to the BalancerPoolAdaptor V1 + #[prost(message, tag = "24")] + BalancerPoolV1Calls(super::super::BalancerPoolAdaptorV1Calls), } } ///**** BASE ADAPTOR FUNCTIONS **** @@ -2553,7 +2742,7 @@ pub struct AdaptorCall { /// The function call data for the adaptor #[prost( oneof = "adaptor_call::CallData", - tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23" + tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24" )] pub call_data: ::core::option::Option, } @@ -2628,6 +2817,9 @@ pub mod adaptor_call { /// Represents function calls to the MorphoAaveV3DebtToken V1 #[prost(message, tag = "23")] MorphoAaveV3DebtTokenV1Calls(super::MorphoAaveV3DebtTokenAdaptorV1Calls), + /// Represents function calls to the BalancerPoolAdaptor V1 + #[prost(message, tag = "24")] + BalancerPoolV1Calls(super::BalancerPoolAdaptorV1Calls), } } ///