More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 402 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exchange | 4314188 | 2 hrs ago | IN | 0 S | 0.00421127 | ||||
Exchange | 4313841 | 2 hrs ago | IN | 0 S | 0.00421193 | ||||
Exchange | 4313450 | 2 hrs ago | IN | 0 S | 0.0042126 | ||||
Exchange | 4312826 | 2 hrs ago | IN | 0 S | 0.0139798 | ||||
Exchange | 4305841 | 3 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4305322 | 3 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4304789 | 3 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4304354 | 3 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4303574 | 3 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4302998 | 4 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4301909 | 4 hrs ago | IN | 0 S | 0.00833997 | ||||
Exchange | 4301339 | 4 hrs ago | IN | 20 S | 0.0106282 | ||||
Exchange | 4301034 | 4 hrs ago | IN | 20 S | 0.0106282 | ||||
Exchange | 4300448 | 4 hrs ago | IN | 142 S | 0.01187214 | ||||
Exchange | 4299223 | 4 hrs ago | IN | 0 S | 0.00897688 | ||||
Exchange | 4295417 | 5 hrs ago | IN | 0 S | 0.0244225 | ||||
Exchange | 4295304 | 5 hrs ago | IN | 0 S | 0.02444119 | ||||
Exchange | 4295160 | 5 hrs ago | IN | 2 S | 0.00975599 | ||||
Exchange | 4291755 | 6 hrs ago | IN | 0 S | 0.00909243 | ||||
Exchange | 4290097 | 6 hrs ago | IN | 4,835.81760568 S | 0.01293959 | ||||
Exchange | 4285049 | 7 hrs ago | IN | 0.05 S | 0.02299561 | ||||
Exchange | 4282714 | 8 hrs ago | IN | 0 S | 0.02220525 | ||||
Exchange | 4282588 | 8 hrs ago | IN | 0 S | 0.03801741 | ||||
Exchange | 4282366 | 8 hrs ago | IN | 0 S | 0.02308981 | ||||
Exchange | 4282342 | 8 hrs ago | IN | 0 S | 0.02307062 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
4314188 | 2 hrs ago | 142 S | ||||
4314188 | 2 hrs ago | 142 S | ||||
4313841 | 2 hrs ago | 141 S | ||||
4313841 | 2 hrs ago | 141 S | ||||
4313450 | 2 hrs ago | 3.26648616 S | ||||
4313450 | 2 hrs ago | 3.26648616 S | ||||
4305841 | 3 hrs ago | 142 S | ||||
4305841 | 3 hrs ago | 142 S | ||||
4305322 | 3 hrs ago | 142 S | ||||
4305322 | 3 hrs ago | 142 S | ||||
4304789 | 3 hrs ago | 142 S | ||||
4304789 | 3 hrs ago | 142 S | ||||
4304354 | 3 hrs ago | 142 S | ||||
4304354 | 3 hrs ago | 142 S | ||||
4303574 | 3 hrs ago | 142 S | ||||
4303574 | 3 hrs ago | 142 S | ||||
4302998 | 4 hrs ago | 142 S | ||||
4302998 | 4 hrs ago | 142 S | ||||
4301909 | 4 hrs ago | 142 S | ||||
4301909 | 4 hrs ago | 142 S | ||||
4301339 | 4 hrs ago | 20 S | ||||
4301034 | 4 hrs ago | 20 S | ||||
4300448 | 4 hrs ago | 142 S | ||||
4299223 | 4 hrs ago | 142 S | ||||
4299223 | 4 hrs ago | 142 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveRouter
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 # pragma evm-version paris """ @title CurveRouter @custom:version 1.1.0 @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved @notice Performs up to 5 swaps in a single transaction Can do estimations with get_dy and get_dx """ version: public(constant(String[8])) = "1.1.0" # ng pools from vyper.interfaces import ERC20 interface StableNgPool: def get_dy(i: int128, j: int128, in_amount: uint256) -> uint256: view def get_dx(i: int128, j: int128, out_amount: uint256) -> uint256: view def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): nonpayable def calc_token_amount(_amounts: DynArray[uint256, 8], _is_deposit: bool) -> uint256: view def add_liquidity(_amounts: DynArray[uint256, 8], _min_mint_amount: uint256) -> uint256: nonpayable def calc_withdraw_one_coin(token_amount: uint256, i: int128) -> uint256: view def remove_liquidity_one_coin(token_amount: uint256, i: int128, min_amount: uint256): nonpayable interface StableNgMetaPool: def get_dy_underlying(i: int128, j: int128, amount: uint256) -> uint256: view def get_dx_underlying(i: int128, j: int128, amount: uint256) -> uint256: view def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256): nonpayable interface CryptoNgPool: def get_dy(i: uint256, j: uint256, in_amount: uint256) -> uint256: view def get_dx(i: uint256, j: uint256, out_amount: uint256) -> uint256: view def exchange(i: uint256, j: uint256, dx: uint256, min_dy: uint256): nonpayable def calc_withdraw_one_coin(token_amount: uint256, i: uint256) -> uint256: view def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256): nonpayable interface TwoCryptoNgPool: def calc_token_amount(amounts: uint256[2], is_deposit: bool) -> uint256: view def add_liquidity(amounts: uint256[2], min_mint_amount: uint256) -> uint256: nonpayable interface TriCryptoNgPool: def calc_token_amount(amounts: uint256[3], is_deposit: bool) -> uint256: view def add_liquidity(amounts: uint256[3], min_mint_amount: uint256) -> uint256: nonpayable interface WETH: def deposit(): payable def withdraw(_amount: uint256): nonpayable event Exchange: sender: indexed(address) receiver: indexed(address) route: address[11] swap_params: uint256[4][5] in_amount: uint256 out_amount: uint256 ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE WETH_ADDRESS: immutable(address) is_approved: HashMap[address, HashMap[address, bool]] @external @payable def __default__(): pass @external def __init__( _weth: address): WETH_ADDRESS = _weth @external @payable @nonreentrant('lock') def exchange( _route: address[11], _swap_params: uint256[4][5], _amount: uint256, _min_dy: uint256, _receiver: address=msg.sender ) -> uint256: """ @notice Performs up to 5 swaps in a single transaction. @dev Routing and swap params must be determined off-chain. This functionality is designed for gas efficiency over ease-of-use. @param _route Array of [initial token, pool, token, pool, token, ...] The array is iterated until a pool address of 0x00, then the last given token is transferred to `_receiver` @param _swap_params Multidimensional array of [i, j, swap type, pool_type] where i is the index of input token j is the index of output token The swap_type should be: 1. for `exchange`, 2. for `exchange_underlying` (stable-ng metapools), 3. -- legacy -- 4. for coin -> LP token "exchange" (actually `add_liquidity`), 5. -- legacy -- 6. for LP token -> coin "exchange" (actually `remove_liquidity_one_coin`) 7. -- legacy -- 8. for ETH <-> WETH pool_type: 10 - stable-ng, 20 - twocrypto-ng, 30 - tricrypto-ng, 4 - llamma @param _amount The amount of input token (`_route[0]`) to be sent. @param _min_dy The minimum amount received after the final swap. @param _receiver Address to transfer the final output token to. @return Received amount of the final output token. """ input_token: address = _route[0] output_token: address = empty(address) amount: uint256 = _amount # validate / transfer initial token if input_token == ETH_ADDRESS: assert msg.value == amount else: assert msg.value == 0 assert ERC20(input_token).transferFrom(msg.sender, self, amount, default_return_value=True) for i in range(5): # 5 rounds of iteration to perform up to 5 swaps swap: address = _route[i * 2 + 1] output_token = _route[(i + 1) * 2] params: uint256[4] = _swap_params[i] # i, j, swap_type, pool_type # store the initial balance of the output_token output_token_initial_balance: uint256 = self.balance if output_token != ETH_ADDRESS: output_token_initial_balance = ERC20(output_token).balanceOf(self) if not self.is_approved[input_token][swap]: assert ERC20(input_token).approve(swap, max_value(uint256), default_return_value=True, skip_contract_check=True) self.is_approved[input_token][swap] = True # perform the swap according to the swap type if params[2] == 1: if params[3] == 10: # stable-ng StableNgPool(swap).exchange(convert(params[0], int128), convert(params[1], int128), amount, 0) else: # twocrypto-ng, tricrypto-ng, llamma CryptoNgPool(swap).exchange(params[0], params[1], amount, 0) elif params[2] == 2: # stable-ng metapools StableNgMetaPool(swap).exchange_underlying(convert(params[0], int128), convert(params[1], int128), amount, 0) elif params[2] == 4: if params[3] == 10: # stable-ng amounts: DynArray[uint256, 8] = [0, 0, 0, 0, 0, 0, 0, 0] amounts[params[0]] = amount StableNgPool(swap).add_liquidity(amounts, 0) elif params[3] == 20: # twocrypto-ng amounts: uint256[2] = [0, 0] amounts[params[0]] = amount TwoCryptoNgPool(swap).add_liquidity(amounts, 0) elif params[3] == 30: # tricrypto-ng amounts: uint256[3] = [0, 0, 0] amounts[params[0]] = amount TriCryptoNgPool(swap).add_liquidity(amounts, 0) elif params[2] == 6: if params[3] == 10: # stable-ng StableNgPool(swap).remove_liquidity_one_coin(amount, convert(params[1], int128), 0) else: # twocrypto-ng, tricrypto-ng CryptoNgPool(swap).remove_liquidity_one_coin(amount, params[1], 0) elif params[2] == 8: if input_token == ETH_ADDRESS and output_token == WETH_ADDRESS: WETH(swap).deposit(value=amount) elif input_token == WETH_ADDRESS and output_token == ETH_ADDRESS: WETH(swap).withdraw(amount) else: raise "Swap type 8 is only for ETH <-> WETH" else: raise "Bad swap type" # update the amount received if output_token == ETH_ADDRESS: amount = self.balance else: amount = ERC20(output_token).balanceOf(self) # sanity check, if the routing data is incorrect we will have a 0 balance change and that is bad assert amount - output_token_initial_balance != 0, "Received nothing" # check if this was the last swap if i == 4 or _route[i * 2 + 3] == empty(address): break # if there is another swap, the output token becomes the input for the next round input_token = output_token amount -= 1 # Change non-zero -> non-zero costs less gas than zero -> non-zero assert amount >= _min_dy, "Slippage" # transfer the final token to the receiver if output_token == ETH_ADDRESS: raw_call(_receiver, b"", value=amount) else: assert ERC20(output_token).transfer(_receiver, amount, default_return_value=True) log Exchange(msg.sender, _receiver, _route, _swap_params, _amount, amount) return amount @view @external def get_dy( _route: address[11], _swap_params: uint256[4][5], _amount: uint256, ) -> uint256: """ @notice Get amount of the final output token received in an exchange @dev Routing and swap params must be determined off-chain. This functionality is designed for gas efficiency over ease-of-use. @param _route Array of [initial token, pool, token, pool, token, ...] The array is iterated until a pool address of 0x00, then the last given token is transferred to `_receiver` @param _swap_params Multidimensional array of [i, j, swap type, pool_type] where i is the index of input token j is the index of output token The swap_type should be: 1. for `exchange`, 2. for `exchange_underlying` (stable-ng metapools), 3. -- legacy -- 4. for coin -> LP token "exchange" (actually `add_liquidity`), 5. -- legacy -- 6. for LP token -> coin "exchange" (actually `remove_liquidity_one_coin`) 7. -- legacy -- 8. for ETH <-> WETH pool_type: 10 - stable-ng, 20 - twocrypto-ng, 30 - tricrypto-ng, 4 - llamma @param _amount The amount of input token (`_route[0]`) to be sent. @return Expected amount of the final output token. """ amount: uint256 = _amount for i in range(5): # 5 rounds of iteration to perform up to 5 swaps swap: address = _route[i * 2 + 1] params: uint256[4] = _swap_params[i] # i, j, swap_type, pool_type # Calc output amount according to the swap type if params[2] == 1: if params[3] == 10: # stable_ng amount = StableNgPool(swap).get_dy(convert(params[0], int128), convert(params[1], int128), amount) else: # twocrypto-ng, tricrypto-ng, llamma amount = CryptoNgPool(swap).get_dy(params[0], params[1], amount) elif params[2] == 2: # stable-ng metapools amount = StableNgMetaPool(swap).get_dy_underlying(convert(params[0], int128), convert(params[1], int128), amount) elif params[2] == 4: if params[3] == 10: # stable-ng amounts: DynArray[uint256, 8] = [0, 0, 0, 0, 0, 0, 0, 0] amounts[params[0]] = amount amount = StableNgPool(swap).calc_token_amount(amounts, True) elif params[3] == 20: # twocrypto-ng amounts: uint256[2] = [0, 0] amounts[params[0]] = amount amount = TwoCryptoNgPool(swap).calc_token_amount(amounts, True) elif params[3] == 30: # tricrypto-ng amounts: uint256[3] = [0, 0, 0] amounts[params[0]] = amount amount = TriCryptoNgPool(swap).calc_token_amount(amounts, True) elif params[2] == 6: if params[3] == 10: # stable-ng amount = StableNgPool(swap).calc_withdraw_one_coin(amount, convert(params[1], int128)) else: # twocrypto-ng, tricrypto-ng amount = CryptoNgPool(swap).calc_withdraw_one_coin(amount, params[1]) elif params[2] == 8: # ETH <--> WETH rate is 1:1 pass else: raise "Bad swap type" # check if this was the last swap if i == 4 or _route[i * 2 + 3] == empty(address): break return amount - 1 @view @external def get_dx( _route: address[11], _swap_params: uint256[4][5], _out_amount: uint256, _base_pools: address[5]=empty(address[5]), ) -> uint256: """ @notice Calculate the input amount required to receive the desired output amount @dev Routing and swap params must be determined off-chain. This functionality is designed for gas efficiency over ease-of-use. @param _route Array of [initial token, pool, token, pool, token, ...] The array is iterated until a pool address of 0x00, then the last given token is transferred to `_receiver` @param _swap_params Multidimensional array of [i, j, swap type, pool_type] where i is the index of input token j is the index of output token The swap_type should be: 1. for `exchange`, 2. for `exchange_underlying` (stable-ng metapools), 3. -- legacy -- 4. for coin -> LP token "exchange" (actually `add_liquidity`), 5. -- legacy -- 6. for LP token -> coin "exchange" (actually `remove_liquidity_one_coin`) 7. -- legacy -- 8. for ETH <-> WETH pool_type: 10 - stable-ng, 20 - twocrypto-ng, 30 - tricrypto-ng, 4 - llamma @param _out_amount The desired amount of output coin to receive. @param _base_pools Array of base pools (for meta pools). @return Required amount of input token to send. """ amount: uint256 = _out_amount for _i in range(5): # 5 rounds of iteration to perform up to 5 swaps i: uint256 = 4 - _i swap: address = _route[i * 2 + 1] if swap == empty(address): continue base_pool: address = _base_pools[i] params: uint256[4] = _swap_params[i] # i, j, swap_type, pool_type # Calc a required input amount according to the swap type if params[2] == 1: if params[3] == 10: # stable-ng amount = StableNgPool(swap).get_dx(convert(params[0], int128), convert(params[1], int128), amount) else: # twocrypto-ng, tricrypto-ng, llamma amount = CryptoNgPool(swap).get_dx(params[0], params[1], amount) elif params[2] == 2: # stable-ng metapool _n: int128 = convert(params[0], int128) _k: int128 = convert(params[1], int128) if _n > 0 and _k > 0: amount = StableNgPool(base_pool).get_dx(_n - 1, _k - 1, amount) else: amount = StableNgMetaPool(swap).get_dx_underlying(_n, _k, amount) elif params[2] == 4: # This is not correct. Should be something like calc_add_one_coin. But tests say that it's precise enough. if params[3] == 10: # stable_ng amount = StableNgPool(swap).calc_withdraw_one_coin(amount, convert(params[0], int128)) else: # twocrypto-ng, tricrypto-ng amount = CryptoNgPool(swap).calc_withdraw_one_coin(amount, params[0]) elif params[2] == 6: if params[3] == 10: # stable-ng amounts: DynArray[uint256, 8] = [0, 0, 0, 0, 0, 0, 0, 0] amounts[params[1]] = amount amount = StableNgPool(swap).calc_token_amount(amounts, False) elif params[3] == 20: # twocrypto-ng amounts: uint256[2] = [0, 0] amounts[params[1]] = amount amount = TwoCryptoNgPool(swap).calc_token_amount(amounts, False) elif params[3] == 30: # tricrypto-ng amounts: uint256[3] = [0, 0, 0] amounts[params[1]] = amount amount = TriCryptoNgPool(swap).calc_token_amount(amounts, False) elif params[2] == 8: # ETH <--> WETH rate is 1:1 pass else: raise "Bad swap type" return amount
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Exchange","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"route","type":"address[11]","indexed":false},{"name":"swap_params","type":"uint256[4][5]","indexed":false},{"name":"in_amount","type":"uint256","indexed":false},{"name":"out_amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_weth","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_route","type":"address[11]"},{"name":"_swap_params","type":"uint256[4][5]"},{"name":"_amount","type":"uint256"},{"name":"_min_dy","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_route","type":"address[11]"},{"name":"_swap_params","type":"uint256[4][5]"},{"name":"_amount","type":"uint256"},{"name":"_min_dy","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_dy","inputs":[{"name":"_route","type":"address[11]"},{"name":"_swap_params","type":"uint256[4][5]"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_dx","inputs":[{"name":"_route","type":"address[11]"},{"name":"_swap_params","type":"uint256[4][5]"},{"name":"_out_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_dx","inputs":[{"name":"_route","type":"address[11]"},{"name":"_swap_params","type":"uint256[4][5]"},{"name":"_out_amount","type":"uint256"},{"name":"_base_pools","type":"address[5]"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]}]
Contract Creation Code
611a62515034610038576020611ab46000396000518060a01c61003857604052604051611a6252611a6261003d61000039611a82610000f35b600080fd60003560e01c60026006820660011b611a5601601e39600051565b6354fd4d5081186100995734611a515760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63fd44959c8118611a4f57610443361115611a5157610424358060a01c611a51576101a0525b6004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a515761018052600054600214611a515760026000556040516101c05260006101e0526103e4356102005273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c051186101b257610200513418611a5157610230565b34611a51576101c0516323b872dd610220523361024052306102605261020051610280526020610220606461023c6000855af16101f4573d600060003e3d6000fd5b3d61020b57803b15611a515760016102a052610224565b60203d10611a5157610220518060011c611a51576102a0525b6102a090505115611a51575b60006005905b8061022052610220518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b60400151610240526102205160018101818110611a515790508060011b818160011c18611a51579050600a8111611a515760051b604001516101e0526102205160048111611a515760071b6101640180356102605260208101356102805260408101356102a05260608101356102c05250476102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e0511461033c576101e0516370a082316103005230610320526020610300602461031c845afa610329573d600060003e3d6000fd5b60203d10611a51576103009050516102e0525b60016101c05160205260005260406000208061024051602052600052604060002090505461040f576101c05163095ea7b36103005261024051610320527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610340526020610300604461031c6000855af16103bc573d600060003e3d6000fd5b3d6103cc576001610360526103dd565b610300518060011c611a5157610360525b61036090505115611a5157600160016101c0516020526000526040600020806102405160205260005260406000209050555b60016102a051186104e157600a6102c0511861048b5761024051633df02124610300526102605180607f1c611a5157610320526102805180607f1c611a5157610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af1610485573d600060003e3d6000fd5b506109dc565b61024051635b41b90861030052610260516103205261028051610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af16104db573d600060003e3d6000fd5b506109dc565b60026102a05118610552576102405163a6417ed6610300526102605180607f1c611a5157610320526102805180607f1c611a5157610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af161054c573d600060003e3d6000fd5b506109dc565b60046102a0511861073257600a6102c05118610630576101003661032037600861030052610200516102605161030051811015611a515760051b61032001526102405163b72df5de610420526040806104405280610440016000610300518083528060051b60008260088111611a515780156105e857905b8060051b61032001518160051b6020880101526001018181186105ca575b5050820160200191505090508101905060006104605250602061042061016461043c6000855af161061e573d600060003e3d6000fd5b60203d10611a515761042050506109dc565b60146102c051186106ad5760403661030037610200516102605160018111611a515760051b610300015261024051630b4c7e4d610340526103005161036052610320516103805260006103a0526020610340606461035c6000855af161069b573d600060003e3d6000fd5b60203d10611a515761034050506109dc565b601e6102c051186109dc5760603661030037610200516102605160028111611a515760051b610300015261024051634515cef3610360526103005161038052610320516103a052610340516103c05260006103e0526020610360608461037c6000855af1610720573d600060003e3d6000fd5b60203d10611a515761036050506109dc565b60066102a051186107ec57600a6102c0511861079e5761024051631a4d01d26103005261020051610320526102805180607f1c611a515761034052600061036052803b15611a51576000610300606461031c6000855af1610798573d600060003e3d6000fd5b506109dc565b6102405163f1dc3cc96103005261020051610320526102805161034052600061036052803b15611a51576000610300606461031c6000855af16107e6573d600060003e3d6000fd5b506109dc565b60086102a051186109765773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c0511861082b576020611a626000396000516101e051181561082e565b60005b61093c576020611a626000396000516101c051186108665773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e0511815610869565b60005b6108fc576024610300527f5377617020747970652038206973206f6e6c7920666f7220455448203c2d3e20610320527f57455448000000000000000000000000000000000000000000000000000000006103405261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd6109dc565b61024051632e1a7d4d610300526102005161032052803b15611a51576000610300602461031c6000855af1610936573d600060003e3d6000fd5b506109dc565b6102405163d0e30db061030052803b15611a51576000610300600461031c61020051855af1610970573d600060003e3d6000fd5b506109dc565b600d610300527f42616420737761702074797065000000000000000000000000000000000000006103205261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e05118610a04574761020052610a45565b6101e0516370a082316103005230610320526020610300602461031c845afa610a32573d600060003e3d6000fd5b60203d10611a5157610300905051610200525b610200516102e051808203828111611a515790509050610ac5576010610300527f5265636569766564206e6f7468696e67000000000000000000000000000000006103205261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b60046102205118610ad7576001610b09565b610220518060011b818160011c18611a5157905060038101818110611a51579050600a8111611a515760051b60400151155b15610b1357610b26565b6101e0516101c052600101818118610236575b50506102005160018103818111611a515790506102005261040435610200511015610bb1576008610220527f536c6970706167650000000000000000000000000000000000000000000000006102405261022050610220518061024001601f826000031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e05118610c0a576101a051610200515a600061022052610220506000600061022051610240858786f1905090509050610c81573d600060003e3d6000fd610c81565b6101e05163a9059cbb610220526101a0516102405261020051610260526020610220604461023c6000855af1610c45573d600060003e3d6000fd5b3d610c5c57803b15611a5157600161028052610c75565b60203d10611a5157610220518060011c611a5157610280525b61028090505115611a51575b6101a051337f6324485a21bc5138ec352d4949d0adc75d8e1382a687e1aa1ce6863f40c9e463610160610220610160604060045afa5060806101646103803760806101e46104003760806102646104803760806102e4610500376080610364610580376103e435610600526102005161062052610420610220a360206102006003600055f3611a4f565b63aad348a28118610d2a57610423361115611a5157336101a0526100bf565b6311e213868118611a4f5761040436103417611a51576004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a5157610180526103e4356101a05260006005905b806101c0526101c0518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b604001516101e0526101c05160048111611a515760071b610164018035610200526020810135610220526040810135610240526060810135610260525060016102405118610f3457600a6102605118610edc576101e051635e0d443f610280526102005180607f1c611a51576102a0526102205180607f1c611a51576102c0526101a0516102e0526020610280606461029c845afa610ec5573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6101e05163556d6e9f61028052610200516102a052610220516102c0526101a0516102e0526020610280606461029c845afa610f1d573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b60026102405118610fa7576101e0516307211ef7610280526102005180607f1c611a51576102a0526102205180607f1c611a51576102c0526101a0516102e0526020610280606461029c845afa610f90573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6004610240511861119057600a610260511861108857610100366102a0376008610280526101a0516102005161028051811015611a515760051b6102a001526101e051633db06dd86103a0526040806103c052806103c0016000610280518083528060051b60008260088111611a5157801561103d57905b8060051b6102a001518160051b60208801015260010181811861101f575b5050820160200191505090508101905060016103e0525060206103a06101646103bc845afa611071573d600060003e3d6000fd5b60203d10611a51576103a09050516101a0526112c4565b6014610260511861110857604036610280376101a0516102005160018111611a515760051b61028001526101e05163ed8e84f36102c052610280516102e0526102a0516103005260016103205260206102c060646102dc845afa6110f1573d600060003e3d6000fd5b60203d10611a51576102c09050516101a0526112c4565b601e61026051186112c457606036610280376101a0516102005160028111611a515760051b61028001526101e051633883e1196102e05261028051610300526102a051610320526102c0516103405260016103605260206102e060846102fc845afa611179573d600060003e3d6000fd5b60203d10611a51576102e09050516101a0526112c4565b6006610240511861124e57600a61026051186111fe576101e05163cc2b27d7610280526101a0516102a0526102205180607f1c611a51576102c0526020610280604461029c845afa6111e7573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6101e051634fb08c5e610280526101a0516102a052610220516102c0526020610280604461029c845afa611237573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6008610240511861125e576112c4565b600d610280527f42616420737761702074797065000000000000000000000000000000000000006102a0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b60046101c051186112d6576001611308565b6101c0518060011b818160011c18611a5157905060038101818110611a51579050600a8111611a515760051b60400151155b156113125761131d565b600101818118610df0575b50506101a05160018103818111611a515790506101c05260206101c0f3611a4f565b637b5e2c7b8118611a4f5761040436103417611a515760a0366101a0376113cc56611a4f565b63736d82648118611a4f576104a436103417611a5157610404358060a01c611a51576101a052610424358060a01c611a51576101c052610444358060a01c611a51576101e052610464358060a01c611a515761020052610484358060a01c611a5157610220525b6004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a5157610180526103e4356102405260006005905b8061026052610260518060040360048111611a5157905061028052610280518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b604001516102a0526102a0516114d857611a33565b6102805160048111611a515760051b6101a001516102c0526102805160048111611a515760071b6101640180356102e05260208101356103005260408101356103205260608101356103405250600161032051186115fb57600a61034051186115a3576102a0516367df02ca610360526102e05180607f1c611a5157610380526103005180607f1c611a51576103a052610240516103c0526020610360606461037c845afa61158c573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b6102a0516337ed3a7a610360526102e05161038052610300516103a052610240516103c0526020610360606461037c845afa6115e4573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b60026103205118611716576102e05180607f1c611a5157610360526103005180607f1c611a5157610380526001610360511215611639576000611642565b60016103805112155b61169e576102a051630e71d1b96103a052610360516103c052610380516103e052610240516104005260206103a060646103bc845afa611687573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b6102c0516367df02ca6103a052610360516001810380600f0b8118611a515790506103c052610380516001810380600f0b8118611a515790506103e052610240516104005260206103a060646103bc845afa6116ff573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b600461032051186117d457600a6103405118611784576102a05163cc2b27d76103605261024051610380526102e05180607f1c611a51576103a0526020610360604461037c845afa61176d573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b6102a051634fb08c5e6103605261024051610380526102e0516103a0526020610360604461037c845afa6117bd573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b600661032051186119bd57600a61034051186118b5576101003661038037600861036052610240516103005161036051811015611a515760051b61038001526102a051633db06dd8610480526040806104a052806104a0016000610360518083528060051b60008260088111611a5157801561186a57905b8060051b61038001518160051b60208801015260010181811861184c575b5050820160200191505090508101905060006104c05250602061048061016461049c845afa61189e573d600060003e3d6000fd5b60203d10611a515761048090505161024052611a33565b601461034051186119355760403661036037610240516103005160018111611a515760051b61036001526102a05163ed8e84f36103a052610360516103c052610380516103e05260006104005260206103a060646103bc845afa61191e573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b601e6103405118611a335760603661036037610240516103005160028111611a515760051b61036001526102a051633883e1196103c052610360516103e05261038051610400526103a0516104205260006104405260206103c060846103dc845afa6119a6573d600060003e3d6000fd5b60203d10611a51576103c090505161024052611a33565b600861032051186119cd57611a33565b600d610360527f42616420737761702074797065000000000000000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b60010181811861147c5750506020610240f3611a4f56611a4f565b5b005b600080fd0d0b1a4e001a133f13651a4e84191a62810c1820a16576797065728300030a0015000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Deployed Bytecode
0x60003560e01c60026006820660011b611a5601601e39600051565b6354fd4d5081186100995734611a515760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63fd44959c8118611a4f57610443361115611a5157610424358060a01c611a51576101a0525b6004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a515761018052600054600214611a515760026000556040516101c05260006101e0526103e4356102005273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c051186101b257610200513418611a5157610230565b34611a51576101c0516323b872dd610220523361024052306102605261020051610280526020610220606461023c6000855af16101f4573d600060003e3d6000fd5b3d61020b57803b15611a515760016102a052610224565b60203d10611a5157610220518060011c611a51576102a0525b6102a090505115611a51575b60006005905b8061022052610220518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b60400151610240526102205160018101818110611a515790508060011b818160011c18611a51579050600a8111611a515760051b604001516101e0526102205160048111611a515760071b6101640180356102605260208101356102805260408101356102a05260608101356102c05250476102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e0511461033c576101e0516370a082316103005230610320526020610300602461031c845afa610329573d600060003e3d6000fd5b60203d10611a51576103009050516102e0525b60016101c05160205260005260406000208061024051602052600052604060002090505461040f576101c05163095ea7b36103005261024051610320527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610340526020610300604461031c6000855af16103bc573d600060003e3d6000fd5b3d6103cc576001610360526103dd565b610300518060011c611a5157610360525b61036090505115611a5157600160016101c0516020526000526040600020806102405160205260005260406000209050555b60016102a051186104e157600a6102c0511861048b5761024051633df02124610300526102605180607f1c611a5157610320526102805180607f1c611a5157610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af1610485573d600060003e3d6000fd5b506109dc565b61024051635b41b90861030052610260516103205261028051610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af16104db573d600060003e3d6000fd5b506109dc565b60026102a05118610552576102405163a6417ed6610300526102605180607f1c611a5157610320526102805180607f1c611a5157610340526102005161036052600061038052803b15611a51576000610300608461031c6000855af161054c573d600060003e3d6000fd5b506109dc565b60046102a0511861073257600a6102c05118610630576101003661032037600861030052610200516102605161030051811015611a515760051b61032001526102405163b72df5de610420526040806104405280610440016000610300518083528060051b60008260088111611a515780156105e857905b8060051b61032001518160051b6020880101526001018181186105ca575b5050820160200191505090508101905060006104605250602061042061016461043c6000855af161061e573d600060003e3d6000fd5b60203d10611a515761042050506109dc565b60146102c051186106ad5760403661030037610200516102605160018111611a515760051b610300015261024051630b4c7e4d610340526103005161036052610320516103805260006103a0526020610340606461035c6000855af161069b573d600060003e3d6000fd5b60203d10611a515761034050506109dc565b601e6102c051186109dc5760603661030037610200516102605160028111611a515760051b610300015261024051634515cef3610360526103005161038052610320516103a052610340516103c05260006103e0526020610360608461037c6000855af1610720573d600060003e3d6000fd5b60203d10611a515761036050506109dc565b60066102a051186107ec57600a6102c0511861079e5761024051631a4d01d26103005261020051610320526102805180607f1c611a515761034052600061036052803b15611a51576000610300606461031c6000855af1610798573d600060003e3d6000fd5b506109dc565b6102405163f1dc3cc96103005261020051610320526102805161034052600061036052803b15611a51576000610300606461031c6000855af16107e6573d600060003e3d6000fd5b506109dc565b60086102a051186109765773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c0511861082b576020611a626000396000516101e051181561082e565b60005b61093c576020611a626000396000516101c051186108665773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e0511815610869565b60005b6108fc576024610300527f5377617020747970652038206973206f6e6c7920666f7220455448203c2d3e20610320527f57455448000000000000000000000000000000000000000000000000000000006103405261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd6109dc565b61024051632e1a7d4d610300526102005161032052803b15611a51576000610300602461031c6000855af1610936573d600060003e3d6000fd5b506109dc565b6102405163d0e30db061030052803b15611a51576000610300600461031c61020051855af1610970573d600060003e3d6000fd5b506109dc565b600d610300527f42616420737761702074797065000000000000000000000000000000000000006103205261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e05118610a04574761020052610a45565b6101e0516370a082316103005230610320526020610300602461031c845afa610a32573d600060003e3d6000fd5b60203d10611a5157610300905051610200525b610200516102e051808203828111611a515790509050610ac5576010610300527f5265636569766564206e6f7468696e67000000000000000000000000000000006103205261030050610300518061032001601f826000031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b60046102205118610ad7576001610b09565b610220518060011b818160011c18611a5157905060038101818110611a51579050600a8111611a515760051b60400151155b15610b1357610b26565b6101e0516101c052600101818118610236575b50506102005160018103818111611a515790506102005261040435610200511015610bb1576008610220527f536c6970706167650000000000000000000000000000000000000000000000006102405261022050610220518061024001601f826000031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101e05118610c0a576101a051610200515a600061022052610220506000600061022051610240858786f1905090509050610c81573d600060003e3d6000fd610c81565b6101e05163a9059cbb610220526101a0516102405261020051610260526020610220604461023c6000855af1610c45573d600060003e3d6000fd5b3d610c5c57803b15611a5157600161028052610c75565b60203d10611a5157610220518060011c611a5157610280525b61028090505115611a51575b6101a051337f6324485a21bc5138ec352d4949d0adc75d8e1382a687e1aa1ce6863f40c9e463610160610220610160604060045afa5060806101646103803760806101e46104003760806102646104803760806102e4610500376080610364610580376103e435610600526102005161062052610420610220a360206102006003600055f3611a4f565b63aad348a28118610d2a57610423361115611a5157336101a0526100bf565b6311e213868118611a4f5761040436103417611a51576004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a5157610180526103e4356101a05260006005905b806101c0526101c0518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b604001516101e0526101c05160048111611a515760071b610164018035610200526020810135610220526040810135610240526060810135610260525060016102405118610f3457600a6102605118610edc576101e051635e0d443f610280526102005180607f1c611a51576102a0526102205180607f1c611a51576102c0526101a0516102e0526020610280606461029c845afa610ec5573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6101e05163556d6e9f61028052610200516102a052610220516102c0526101a0516102e0526020610280606461029c845afa610f1d573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b60026102405118610fa7576101e0516307211ef7610280526102005180607f1c611a51576102a0526102205180607f1c611a51576102c0526101a0516102e0526020610280606461029c845afa610f90573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6004610240511861119057600a610260511861108857610100366102a0376008610280526101a0516102005161028051811015611a515760051b6102a001526101e051633db06dd86103a0526040806103c052806103c0016000610280518083528060051b60008260088111611a5157801561103d57905b8060051b6102a001518160051b60208801015260010181811861101f575b5050820160200191505090508101905060016103e0525060206103a06101646103bc845afa611071573d600060003e3d6000fd5b60203d10611a51576103a09050516101a0526112c4565b6014610260511861110857604036610280376101a0516102005160018111611a515760051b61028001526101e05163ed8e84f36102c052610280516102e0526102a0516103005260016103205260206102c060646102dc845afa6110f1573d600060003e3d6000fd5b60203d10611a51576102c09050516101a0526112c4565b601e61026051186112c457606036610280376101a0516102005160028111611a515760051b61028001526101e051633883e1196102e05261028051610300526102a051610320526102c0516103405260016103605260206102e060846102fc845afa611179573d600060003e3d6000fd5b60203d10611a51576102e09050516101a0526112c4565b6006610240511861124e57600a61026051186111fe576101e05163cc2b27d7610280526101a0516102a0526102205180607f1c611a51576102c0526020610280604461029c845afa6111e7573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6101e051634fb08c5e610280526101a0516102a052610220516102c0526020610280604461029c845afa611237573d600060003e3d6000fd5b60203d10611a51576102809050516101a0526112c4565b6008610240511861125e576112c4565b600d610280527f42616420737761702074797065000000000000000000000000000000000000006102a0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b60046101c051186112d6576001611308565b6101c0518060011b818160011c18611a5157905060038101818110611a51579050600a8111611a515760051b60400151155b156113125761131d565b600101818118610df0575b50506101a05160018103818111611a515790506101c05260206101c0f3611a4f565b637b5e2c7b8118611a4f5761040436103417611a515760a0366101a0376113cc56611a4f565b63736d82648118611a4f576104a436103417611a5157610404358060a01c611a51576101a052610424358060a01c611a51576101c052610444358060a01c611a51576101e052610464358060a01c611a515761020052610484358060a01c611a5157610220525b6004358060a01c611a51576040526024358060a01c611a51576060526044358060a01c611a51576080526064358060a01c611a515760a0526084358060a01c611a515760c05260a4358060a01c611a515760e05260c4358060a01c611a51576101005260e4358060a01c611a515761012052610104358060a01c611a515761014052610124358060a01c611a515761016052610144358060a01c611a5157610180526103e4356102405260006005905b8061026052610260518060040360048111611a5157905061028052610280518060011b818160011c18611a5157905060018101818110611a51579050600a8111611a515760051b604001516102a0526102a0516114d857611a33565b6102805160048111611a515760051b6101a001516102c0526102805160048111611a515760071b6101640180356102e05260208101356103005260408101356103205260608101356103405250600161032051186115fb57600a61034051186115a3576102a0516367df02ca610360526102e05180607f1c611a5157610380526103005180607f1c611a51576103a052610240516103c0526020610360606461037c845afa61158c573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b6102a0516337ed3a7a610360526102e05161038052610300516103a052610240516103c0526020610360606461037c845afa6115e4573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b60026103205118611716576102e05180607f1c611a5157610360526103005180607f1c611a5157610380526001610360511215611639576000611642565b60016103805112155b61169e576102a051630e71d1b96103a052610360516103c052610380516103e052610240516104005260206103a060646103bc845afa611687573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b6102c0516367df02ca6103a052610360516001810380600f0b8118611a515790506103c052610380516001810380600f0b8118611a515790506103e052610240516104005260206103a060646103bc845afa6116ff573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b600461032051186117d457600a6103405118611784576102a05163cc2b27d76103605261024051610380526102e05180607f1c611a51576103a0526020610360604461037c845afa61176d573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b6102a051634fb08c5e6103605261024051610380526102e0516103a0526020610360604461037c845afa6117bd573d600060003e3d6000fd5b60203d10611a515761036090505161024052611a33565b600661032051186119bd57600a61034051186118b5576101003661038037600861036052610240516103005161036051811015611a515760051b61038001526102a051633db06dd8610480526040806104a052806104a0016000610360518083528060051b60008260088111611a5157801561186a57905b8060051b61038001518160051b60208801015260010181811861184c575b5050820160200191505090508101905060006104c05250602061048061016461049c845afa61189e573d600060003e3d6000fd5b60203d10611a515761048090505161024052611a33565b601461034051186119355760403661036037610240516103005160018111611a515760051b61036001526102a05163ed8e84f36103a052610360516103c052610380516103e05260006104005260206103a060646103bc845afa61191e573d600060003e3d6000fd5b60203d10611a51576103a090505161024052611a33565b601e6103405118611a335760603661036037610240516103005160028111611a515760051b61036001526102a051633883e1196103c052610360516103e05261038051610400526103a0516104205260006104405260206103c060846103dc845afa6119a6573d600060003e3d6000fd5b60203d10611a51576103c090505161024052611a33565b600861032051186119cd57611a33565b600d610360527f42616420737761702074797065000000000000000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b60010181811861147c5750506020610240f3611a4f56611a4f565b5b005b600080fd0d0b1a4e001a133f13651a4e000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
-----Decoded View---------------
Arg [0] : _weth (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.