Spend less on fees, more on crypto. Buy crypto easily with MoonPay Balance. 20M+ users trust MoonPay worldwide.
Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
Don’t invest unless you’re prepared to lose all the money you invest.
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Slots, Roulette, Poker & more - Proud sponsors of UFC, Everton & StakeF1 team!
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
100s of games, generous bonuses, 20+ years of trusted gaming. Join CryptoWins & start winning today!
Overview
ETH Balance
Eth Value
$839,905.13 (@ $3,582.80/ETH)Token Holdings
Could not find any matches!
- ERC-20 Tokens (108)31.07555777 AAVEAave Token (AAVE)$6,888.52@221.67387,590.6677587 AKROAkropolis (AKRO)$1,768.12@0.0046320.52493174 ALEPHaleph.im v2 (ALEPH)$53.35@0.1664566.4 ANKRAnkr Network (ANKR)$23.25@0.041319.59390645 AUDIOAudius (AUDIO)$57.53@0.187.19124931 BADGERBadger (BADGER)$27.11@3.77284.2359649 LEOBitfinex LEO... (LEO)$2,495.59@8.78503.46344717 CFGCentrifuge (CFG)$207.43@0.412915.09795156 LINKChainLink To... (LINK)$18,027.43@19.706.8 CHOchoise.com T... (CHO)$0.22@0.03237.57760981 CREAMCream (CREAM)$141.10@18.626,004.20055319 CROCronos Coin (CRO)$1,063.52@0.17713 CRUCRUST (CRU)$1.91@0.63663,255.93910385 MANADecentraland (MANA)$1,966.21@0.60391,496.28510999 DIADIAToken (DIA)$1,246.67@0.83320.5 EGGTEgg n Partne... (EGGT)$0.37@0.730514.97778481 FTX TokenFTT (FTX To...)$36.70@2.454,375.0249554 GRTGraph Token (GRT)$1,187.73@0.271555.8808492 HMXHermes (HMX)$0.04@0.0007347,265.04142678 HOTHoloToken (HOT)$1,071.18@0.0031137.65020397 HUSDHUSD (HUSD)$3.89@0.02831,217.23602511 IDEXIDEX Token (IDEX)$61.57@0.0506433.12191219 KNCKyberNetwork (KNC)$285.70@0.6596937.04663097 LITLitentry (LIT)$887.63@0.94732.08150008 LPTLivepeer Tok... (LPT)$30.33@14.571,000 MTVMultiVAC (MTV)$1.03@0.0017,905.03642867 OCEANOcean Token (OCEAN)$5,982.64@0.756810.39403266 OKBOKB (OKB)$558.37@53.7284.53861001 OGNOriginToken (OGN)$11.54@0.13650 PAXGPaxos Gold (PAXG)$0.00@2,632.2827,218.01904251 PHAPhala (PHA)$4,319.61@0.1587222,461.07616155 RARERARE.UNIQUE (RARE)$2,283.12@0.0103336,033.00662969 REEFReef.finance (REEF)$554.03@0.00160.06441393 renBTCrenBTC (renBTC)$5,862.57@91,014.001,243.13254596 RENRepublic (REN)$56.03@0.0451548.12048204 RLCRLC (RLC)$1,222.31@2.231,475.1263028 XRTRobonomics (XRT)$1,814.41@1.23430.6792718 KOBEShabu Shabu (KOBE)$0.20@0.00051,569.44662165 FISStaFi (FIS)$609.98@0.3887242.7951679 STAKESTAKE (STAKE)$22.92@0.0944589.41819508 SUSHISushiToken (SUSHI)$748.56@1.273.59767776 sUSDSynth sUSD (sUSD)$3.57@0.9935146,190.07 TELTelcoin (TEL)$948.80@0.0065132.95044232 UMAUMA Voting T... (UMA)$420.12@3.1612,522,534,378.113 UMIUmiToken (UMI)$7,528.43@0.00306.09137935 UBTUniBright (UBT)$11.78@0.03853.61171864 xFUNDunification.... (xFUND)$1,274.94@353.00499.26688863 UNIUniswap (UNI)$6,510.44@13.047,458.27183576 VRAVERA (VRA)$53.75@0.00722,844.14082549 USTCWrapped USTC... (USTC)$70.18@0.02470.04929732 YFIyearn.financ... (YFI)$382.11@7,751.190.74648459 BNTBancor (BNT)$0.58@0.7818,298.53495828 BUSDBUSD (BUSD)$8,121.39@0.978710.84955171 COMPCompound (COMP)$820.99@75.671,462.33198186 CRVCurve DAO To... (CRV)$1,020.06@0.6976414,764.02317167 DAIDai Stableco... (DAI)$414,546.27@0.99950.3335752 MKRMaker (MKR)$596.96@1,789.587,378.46409646 MATICMatic Token (MATIC)$4,275.61@0.5795373.44240898 NEXONexo (NEXO)$528.63@1.41564,320.08231649 USDPPax Dollar (USDP)$4,314.39@0.998717,502.086918 USDTTether USD (USDT)$17,483.10@0.9989783.04053009 TUSDTrueUSD (TUSD)$783.04@1.0095,526.801616 USDCUSDC (USDC)$95,388.38@0.99860.28655073 WBTCWrapped BTC (WBTC)$27,189.08@94,884.001.50067641 TONCOINWrapped TON ... (TONCOI...)$9.62@6.41750 $stLink rewards on stlink.fiERC-20: ! st... ($stLin...)4,000 Earn $UNI airdrops at https://www.uniswaplabs.comERC-20: # un... (Earn $...)30,000 $ Evmosia.comERC-20: $ E... ($ Evm...)48,000 Earn $TUSD airdrops at https://www.tenorusd.orgERC-20: $ te... (Earn $...)4.75ERC20 ***130,753.91767543 FANSFANS.UNIQUE5,000 FTTv2.ioERC-20: FTTv... (FTTv2....)1,900 KUSOERC-20: KUSO (KUSO)107 KYLKylin Network3.77769475 SIMPERC-20: Simp... (SIMP)604.21614994 RUNETHORChain ETH.RUNE80,713.60464181 CAPSCapsule Coin$353.57@0.00444,695,923.73860695 FOTOFOTO2,212.95879952 PDEXPolkadex$289.40@0.13081.2 TokenERC-20 TOKEN*[Suspicious]30 TokenERC-20 TOKEN*[Suspicious]30 TokenERC-20 TOKEN*[Suspicious]5,000 TokenERC-20 TOKEN*[Suspicious]35,000 TokenERC-20 TOKEN*[Suspicious]1.7 TokenERC-20 TOKEN*[Suspicious]1.5 TokenERC-20 TOKEN*[Suspicious]4,999 TokenERC-20 TOKEN*[Suspicious]3,200 TokenERC-20 TOKEN*[Suspicious]1.4 TokenERC-20 TOKEN*[Suspicious]3,999.99 TokenERC-20 TOKEN*[Suspicious]0.7 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Suspicious]245.44 TokenERC-20 TOKEN*[Suspicious]5,000 TokenERC-20 TOKEN*[Suspicious]35,000 TokenERC-20 TOKEN*[Suspicious]3,999.99 TokenERC-20 TOKEN*[Suspicious]100,000 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Unsafe]1 TokenERC-20 TOKEN*[Spam]1.4 TokenERC-20 TOKEN*[Spam]1.4 TokenERC-20 TOKEN*[Spam]1.4 TokenERC-20 TOKEN*[Spam]132.84 TokenERC-20 TOKEN*[Spam]5,000 TokenERC-20 TOKEN*[Spam]3,999.99 TokenERC-20 TOKEN*[Spam]7,000 TokenERC-20 TOKEN*[Spam]NFT Tokens (76)claim rewards on apylink.comapylink.comERC-1155claim rewards on apyusd.netapyusd.netERC-1155Mysteryboxcentrifuge.giftERC-1155nft-dai.comDAI Mysterybox NFTERC-1155ether-origin.comether-origin.comERC-1155claim rewards on graphtoken.orggraphtoken.orgERC-1155claim rewards on paxgnetwork.compaxgnetwork.comERC-1155claim rewards on pseth.netpseth.netERC-1155t.ly/puferPuffer : Airdrop RecipientERC-721Reward Club [Ba4JxawA]Reward Club [c37rpqQx]ERC-1155claim rewards on univ4labs.orguniv4labs.orgERC-1155claim rewards on wbtcnetwork.netwbtcnetwork.netERC-1155debridgeth.comWithdrawal Badge debridgeth.comERC-1155debridgeth.comWithdrawal Badge debridgeth.comERC-1155ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]
More Info
Private Name Tags
ContractCreator
Multichain Info
1 address found via- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
- Cards New
- Info
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 30,611 transactions
Transaction Hash MethodBlockFromToSend Eth To Side... 21314194 2024-12-02 10:20:59 1 hr ago 1733134859 IN 0.332 ETH$1,189.49 0.00033235 12.737306 Send Eth To Side... 21314067 2024-12-02 9:55:35 1 hr ago 1733133335 IN 0.05687632 ETH$203.78 0.00036533 14.0010936 Send ERC20To Sid... 21314057 2024-12-02 9:53:35 2 hrs ago 1733133215 IN 0 ETH$0.00 0.00086591 16.72004065 Send ERC20To Sid... 21314017 2024-12-02 9:45:35 2 hrs ago 1733132735 IN 0 ETH$0.00 0.00077519 14.96483449 Receive By Ether... 21313937 2024-12-02 9:29:35 2 hrs ago 1733131775 IN 0 ETH$0.00 0.00175193 13.38890306 Receive By Ether... 21313790 2024-12-02 8:59:59 2 hrs ago 1733129999 IN 0 ETH$0.00 0.00287413 21.9602709 Receive By Ether... 21313725 2024-12-02 8:46:59 3 hrs ago 1733129219 IN 0 ETH$0.00 0.00445512 30.82084213 Send ERC20To Sid... 21313443 2024-12-02 7:50:11 4 hrs ago 1733125811 IN 0 ETH$0.00 0.00073969 14.27950389 Send ERC20To Sid... 21313306 2024-12-02 7:22:35 4 hrs ago 1733124155 IN 0 ETH$0.00 0.00071912 13.8856308 Send ERC20To Sid... 21313239 2024-12-02 7:09:11 4 hrs ago 1733123351 IN 0 ETH$0.00 0.00068565 13.23641413 Receive By Ether... 21312673 2024-12-02 5:15:23 6 hrs ago 1733116523 IN 0 ETH$0.00 0.00210908 14.59168077 Receive By Ether... 21312479 2024-12-02 4:36:11 7 hrs ago 1733114171 IN 0 ETH$0.00 0.0021875 15.13223966 Send ERC20To Sid... 21312205 2024-12-02 3:40:59 8 hrs ago 1733110859 IN 0 ETH$0.00 0.000625 14.77755602 Send ERC20To Sid... 21312084 2024-12-02 3:16:35 8 hrs ago 1733109395 IN 0 ETH$0.00 0.00088307 17.04749131 Receive By Sidec... 21311951 2024-12-02 2:49:47 9 hrs ago 1733107787 IN 0 ETH$0.00 0.00167461 12.57285932 Send ERC20To Sid... 21311693 2024-12-02 1:57:59 9 hrs ago 1733104679 IN 0 ETH$0.00 0.00089549 17.29127758 Send Eth To Side... 21311642 2024-12-02 1:47:35 10 hrs ago 1733104055 IN 0.59 ETH$2,113.85 0.000402 15.40656191 Send ERC20To Sid... 21311529 2024-12-02 1:24:59 10 hrs ago 1733102699 IN 0 ETH$0.00 0.00086937 16.78304573 Send ERC20To Sid... 21311382 2024-12-02 0:55:35 10 hrs ago 1733100935 IN 0 ETH$0.00 0.00087948 16.9781877 Send ERC20To Sid... 21311089 2024-12-01 23:56:47 11 hrs ago 1733097407 IN 0 ETH$0.00 0.00088586 17.10131279 Send ERC20To Sid... 21311013 2024-12-01 23:41:23 12 hrs ago 1733096483 IN 0 ETH$0.00 0.00075585 16.06045092 Send ERC20To Sid... 21310833 2024-12-01 23:05:23 12 hrs ago 1733094323 IN 0 ETH$0.00 0.00104292 18.39441 Receive By Sidec... 21310686 2024-12-01 22:35:47 13 hrs ago 1733092547 IN 0 ETH$0.00 0.00209622 15.74227542 Receive By Ether... 21310464 2024-12-01 21:51:11 14 hrs ago 1733089871 IN 0 ETH$0.00 0.00254568 17.61000838 Send ERC20To Sid... 21310358 2024-12-01 21:29:59 14 hrs ago 1733088599 IN 0 ETH$0.00 0.00095617 20.32738719 Latest 25 internal transactions (View All)
Advanced mode:Parent Transaction Hash Block From To 21310073 2024-12-01 20:32:59 15 hrs ago 1733085179 0.84859125 ETH$3,040.33 21309706 2024-12-01 19:19:11 16 hrs ago 1733080751 0.00355961 ETH$12.75 21307380 2024-12-01 11:31:59 24 hrs ago 1733052719 2 ETH$7,165.59 21301293 2024-11-30 15:09:11 44 hrs ago 1732979351 0.00592277 ETH$21.22 21294806 2024-11-29 17:22:35 2 days ago 1732900955 0.40845753 ETH$1,463.42 21293557 2024-11-29 13:09:59 2 days ago 1732885799 0.02591928 ETH$92.86 21292869 2024-11-29 10:50:59 3 days ago 1732877459 0.5 ETH$1,791.40 21285720 2024-11-28 10:51:47 4 days ago 1732791107 4.469 ETH$16,011.52 21282766 2024-11-28 0:48:59 4 days ago 1732754939 0.48810196 ETH$1,748.77 21278896 2024-11-27 11:49:59 5 days ago 1732708199 0.25927199 ETH$928.92 21272920 2024-11-26 15:48:47 5 days ago 1732636127 0.48992966 ETH$1,755.32 21271841 2024-11-26 12:11:59 5 days ago 1732623119 0.009077 ETH$32.52 21271364 2024-11-26 10:35:59 6 days ago 1732617359 0.00429418 ETH$15.39 21270223 2024-11-26 6:46:23 6 days ago 1732603583 0.02774727 ETH$99.41 21269880 2024-11-26 5:37:23 6 days ago 1732599443 0.36233215 ETH$1,298.16 21267822 2024-11-25 22:42:59 6 days ago 1732574579 0.0248557 ETH$89.05 21260537 2024-11-24 22:18:11 7 days ago 1732486691 0.3712197 ETH$1,330.00 21258209 2024-11-24 14:29:59 7 days ago 1732458599 0.01204695 ETH$43.16 21257473 2024-11-24 12:02:11 7 days ago 1732449731 0.06028898 ETH$216.00 21257407 2024-11-24 11:48:47 8 days ago 1732448927 1.452 ETH$5,202.22 21254160 2024-11-24 0:56:35 8 days ago 1732409795 0.2301105 ETH$824.44 21254115 2024-11-24 0:47:35 8 days ago 1732409255 0.05045369 ETH$180.77 21253746 2024-11-23 23:33:11 8 days ago 1732404791 0.12818854 ETH$459.27 21252910 2024-11-23 20:44:59 8 days ago 1732394699 0.11416222 ETH$409.02 21251645 2024-11-23 16:30:23 8 days ago 1732379423 1.45746897 ETH$5,221.81 Loading...LoadingContract Name:Bridge
Compiler Versionv0.8.17+commit.8df45f5f
Optimization Enabled:Yes with 200 runs
Other Settings:default evmVersionContract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache 2.0 pragma solidity =0.8.17; import "./MasterToken.sol"; import "./Ownable.sol"; import "./ERC20Burnable.sol"; import "./SafeERC20.sol"; import "./EthTokenReciever.sol"; /** * Provides functionality of the HASHI bridge */ contract Bridge is EthTokenReciever { using SafeERC20 for IERC20; bool internal initialized_; bool internal preparedForMigration_; mapping(address => bool) public isPeer; uint256 public peersCount; /** Substrate proofs used */ mapping(bytes32 => bool) public used; mapping(address => bool) public _uniqueAddresses; /** White list of ERC-20 ethereum native tokens */ mapping(address => bool) public acceptedEthTokens; /** White lists of ERC-20 SORA native tokens * We use several representations of the white list for optimisation purposes. */ mapping(bytes32 => address) public _sidechainTokens; mapping(address => bytes32) public _sidechainTokensByAddress; address[] public _sidechainTokenAddressArray; /** * For XOR and VAL use old token contracts, created for SORA 1 bridge. * Also for XOR and VAL transfers from SORA 2 to Ethereum old bridges will be used. */ address public immutable _addressVAL; address public immutable _addressXOR; /** EVM netowrk ID */ bytes32 public immutable _networkId; event Withdrawal(bytes32 txHash); event Deposit( bytes32 destination, uint256 amount, address token, bytes32 sidechainAsset ); event ChangePeers(address peerId, bool removal); event PreparedForMigration(); event Migrated(address to); /** * Constructor. * @param initialPeers - list of initial bridge validators on substrate side. * @param addressVAL address of VAL token Contract * @param addressXOR address of XOR token Contract * @param networkId id of current EvM network used for bridge purpose. */ constructor( address[] memory initialPeers, address[] memory sidechainTokenAddresses, bytes32[] memory sidechainAssetIds, address[] memory erc20Addresses, address addressVAL, address addressXOR, bytes32 networkId ) { require( sidechainAssetIds.length == sidechainTokenAddresses.length, "Length mismatch" ); for (uint256 i; i < initialPeers.length; i++) { addPeer(initialPeers[i]); } _addressXOR = addressXOR; _addressVAL = addressVAL; _networkId = networkId; initialized_ = true; acceptedEthTokens[addressXOR] = true; acceptedEthTokens[addressVAL] = true; for (uint256 i; i < sidechainTokenAddresses.length; i++) { address tokenAddress = sidechainTokenAddresses[i]; bytes32 assetId = sidechainAssetIds[i]; _sidechainTokens[assetId] = tokenAddress; _sidechainTokensByAddress[tokenAddress] = assetId; _sidechainTokenAddressArray.push(tokenAddress); } uint256 erc20TokensCount = erc20Addresses.length; for (uint256 i; i < erc20TokensCount; i++) { acceptedEthTokens[erc20Addresses[i]] = true; } } modifier shouldBeInitialized() { require( initialized_ == true, "Contract should be initialized to use this function" ); _; } modifier shouldNotBePreparedForMigration() { require( preparedForMigration_ == false, "Contract should not be prepared for migration to use this function" ); _; } modifier shouldBePreparedForMigration() { require( preparedForMigration_ == true, "Contract should be prepared for migration to use this function" ); _; } fallback() external { revert(); } receive() external payable { revert(); } /* Used only for migration */ function receivePayment() external payable override {} /** * Adds new token to whitelist. * Token should not been already added. * * @param newToken new token contract address * @param ticker token ticker (symbol) * @param name token title * @param decimals count of token decimal places * @param txHash transaction hash from sidechain * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function addEthNativeToken( address newToken, string memory ticker, string memory name, uint8 decimals, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized { require(used[txHash] == false, "txHash already used"); require( acceptedEthTokens[newToken] == false, "ERC20 token is not whitelisted" ); require( checkSignatures( keccak256( abi.encode( "addToken", address(this), newToken, ticker, name, decimals, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; acceptedEthTokens[newToken] = true; } /** * Preparations for migration to new Bridge contract * * @param salt unique data used for signature * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function prepareForMigration( bytes32 salt, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized shouldNotBePreparedForMigration { require(used[salt] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "prepareMigration", address(this), salt, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[salt] = true; preparedForMigration_ = true; emit PreparedForMigration(); } /** * Shutdown this contract and migrate tokens ownership to the new contract. * * @param salt unique data used for signature generation * @param newContractAddress address of the new bridge contract * @param erc20nativeTokens list of ERC20 tokens with non zero balances for this contract. Can be taken from substrate bridge peers. * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function shutDownAndMigrate( bytes32 salt, address payable newContractAddress, address[] calldata erc20nativeTokens, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized shouldBePreparedForMigration { require(used[salt] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "migrate", address(this), newContractAddress, salt, erc20nativeTokens, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[salt] = true; uint256 sidechainTokensCount = _sidechainTokenAddressArray.length; for (uint256 i; i < sidechainTokensCount; i++) { Ownable token = Ownable(_sidechainTokenAddressArray[i]); token.transferOwnership(newContractAddress); } uint256 erc20nativeTokensCount = erc20nativeTokens.length; for (uint256 i; i < erc20nativeTokensCount; i++) { IERC20 token = IERC20(erc20nativeTokens[i]); token.safeTransfer( newContractAddress, token.balanceOf(address(this)) ); } EthTokenReciever(newContractAddress).receivePayment{ value: address(this).balance }(); initialized_ = false; emit Migrated(newContractAddress); } /** * Add new token from sidechain to the bridge white list. * * @param name token title * @param symbol token symbol * @param decimals number of decimals * @param sidechainAssetId token id on the sidechain * @param txHash sidechain transaction hash * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function addNewSidechainToken( string memory name, string memory symbol, uint8 decimals, bytes32 sidechainAssetId, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized { require(used[txHash] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "addAsset", address(this), name, symbol, decimals, sidechainAssetId, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; // Create new instance of the token MasterToken tokenInstance = new MasterToken( name, symbol, decimals, address(this), 0, sidechainAssetId ); address tokenAddress = address(tokenInstance); _sidechainTokens[sidechainAssetId] = tokenAddress; _sidechainTokensByAddress[tokenAddress] = sidechainAssetId; _sidechainTokenAddressArray.push(tokenAddress); } /** * Send Ethereum to sidechain. * * @param to destionation address on sidechain. */ function sendEthToSidechain(bytes32 to) external payable shouldBeInitialized shouldNotBePreparedForMigration { require(msg.value > 0, "ETH VALUE SHOULD BE MORE THAN 0"); bytes32 empty; emit Deposit(to, msg.value, address(0x0), empty); } /** * Send ERC-20 token to sidechain. * * @param to destination address on the sidechain * @param amount amount to sendERC20ToSidechain * @param tokenAddress contract address of token to send */ function sendERC20ToSidechain( bytes32 to, uint256 amount, address tokenAddress ) external shouldBeInitialized shouldNotBePreparedForMigration { IERC20 token = IERC20(tokenAddress); bytes32 sidechainAssetId = _sidechainTokensByAddress[tokenAddress]; if ( sidechainAssetId != "" || _addressVAL == tokenAddress || _addressXOR == tokenAddress ) { ERC20Burnable mtoken = ERC20Burnable(tokenAddress); mtoken.burnFrom(msg.sender, amount); } else { require( acceptedEthTokens[tokenAddress], "The Token is not accepted for transfer to sidechain" ); uint256 balanceBefore = token.balanceOf(address(this)); token.safeTransferFrom(msg.sender, address(this), amount); uint256 balanceAfter = token.balanceOf(address(this)); require( balanceAfter - balanceBefore >= amount, "Not enough tokens transferred" ); } emit Deposit(to, amount, tokenAddress, sidechainAssetId); } /** * Add new peer using peers quorum. * * @param newPeerAddress address of the peer to add * @param txHash tx hash from sidechain * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function addPeerByPeer( address newPeerAddress, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized returns (bool) { require(used[txHash] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "addPeer", address(this), newPeerAddress, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; addPeer(newPeerAddress); emit ChangePeers(newPeerAddress, false); return true; } /** * Remove peer using peers quorum. * * @param peerAddress address of the peer to remove * @param txHash tx hash from sidechain * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function removePeerByPeer( address peerAddress, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized returns (bool) { require(used[txHash] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "removePeer", address(this), peerAddress, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; removePeer(peerAddress); emit ChangePeers(peerAddress, true); return true; } /** * Withdraws specified amount of ether or one of ERC-20 tokens to provided sidechain address * @param tokenAddress address of token to withdraw (0 for ether) * @param amount amount of tokens or ether to withdraw * @param to target account address * @param txHash hash of transaction from sidechain * @param from source of transfer * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function receiveByEthereumAssetAddress( address tokenAddress, uint256 amount, address payable to, address from, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized { require(used[txHash] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "transfer", address(this), tokenAddress, amount, to, from, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; if (tokenAddress == address(0)) { // untrusted transfer, relies on provided cryptographic proof to.transfer(amount); } else { IERC20 coin = IERC20(tokenAddress); // untrusted call, relies on provided cryptographic proof coin.safeTransfer(to, amount); } emit Withdrawal(txHash); } /** * Mint new Token * @param sidechainAssetId id of sidechainToken to mint * @param amount how much to mint * @param to destination address * @param from sender address * @param txHash hash of transaction from Iroha * @param v array of signatures of tx_hash (v-component) * @param r array of signatures of tx_hash (r-component) * @param s array of signatures of tx_hash (s-component) */ function receiveBySidechainAssetId( bytes32 sidechainAssetId, uint256 amount, address to, address from, bytes32 txHash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) external shouldBeInitialized { require( _sidechainTokens[sidechainAssetId] != address(0x0), "Sidechain asset is not registered" ); require(used[txHash] == false, "txHash already used"); require( checkSignatures( keccak256( abi.encode( "transferOwned", address(this), sidechainAssetId, amount, to, from, txHash, _networkId ) ), v, r, s ), "Peer signatures are invalid" ); used[txHash] = true; MasterToken tokenInstance = MasterToken( _sidechainTokens[sidechainAssetId] ); tokenInstance.mintTokens(to, amount); emit Withdrawal(txHash); } /** * Checks given addresses for duplicates and if they are peers signatures * @param hash unsigned data * @param v v-component of signature from hash * @param r r-component of signature from hash * @param s s-component of signature from hash * @return true if all given addresses are correct or false otherwise */ function checkSignatures( bytes32 hash, uint8[] memory v, bytes32[] memory r, bytes32[] memory s ) private returns (bool) { require(peersCount >= 1, "peersCount too low"); uint256 signatureCount = v.length; require( signatureCount == r.length, "signatureCount and r length mismatch" ); require( signatureCount == s.length, "signatureCount and s length mismatch" ); uint256 needSigs = peersCount - (peersCount - 1) / 3; require(signatureCount >= needSigs, "not enough signatures"); uint256 count; address[] memory recoveredAddresses = new address[](signatureCount); for (uint256 i; i < signatureCount; ++i) { address recoveredAddress = recoverAddress(hash, v[i], r[i], s[i]); // not a peer address or not unique if ( isPeer[recoveredAddress] != true || _uniqueAddresses[recoveredAddress] == true ) { continue; } recoveredAddresses[count] = recoveredAddress; unchecked { count = count + 1; } _uniqueAddresses[recoveredAddress] = true; } // restore state for future usages for (uint256 i; i < count; ++i) { _uniqueAddresses[recoveredAddresses[i]] = false; } return count >= needSigs; } /** * Recovers address from a given single signature * @param hash unsigned data * @param v v-component of signature from hash * @param r r-component of signature from hash * @param s s-component of signature from hash * @return address recovered from signature */ function recoverAddress( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) private pure returns (address) { bytes32 simple_hash = keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) ); address res = ecrecover(simple_hash, v, r, s); return res; } /** * Adds new peer to list of signature verifiers. * Internal function * @param newAddress address of new peer */ function addPeer(address newAddress) internal returns (uint256) { require(isPeer[newAddress] == false, "peer already added"); isPeer[newAddress] = true; ++peersCount; return peersCount; } function removePeer(address peerAddress) internal { require(isPeer[peerAddress] == true, "peer does not exists"); isPeer[peerAddress] = false; --peersCount; } }
// SPDX-License-Identifier: Apache License 2.0 pragma solidity =0.8.17; import "./ERC20Detailed.sol"; import "./ERC20Burnable.sol"; import "./Ownable.sol"; contract MasterToken is ERC20Burnable, ERC20Detailed, Ownable { bytes32 public _sidechainAssetId; /** * @dev Constructor that gives the specified address all of existing tokens. */ constructor( string memory name, string memory symbol, uint8 decimals, address beneficiary, uint256 supply, bytes32 sidechainAssetId ) ERC20Detailed(name, symbol, decimals) { _sidechainAssetId = sidechainAssetId; _mint(beneficiary, supply); } fallback() external { revert(); } function mintTokens(address beneficiary, uint256 amount) public onlyOwner { _mint(beneficiary, amount); } }
// SPDX-License-Identifier: Apache License 2.0 pragma solidity =0.8.17; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ abstract contract Ownable { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Not owner"); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: Apache 2.0 pragma solidity =0.8.17; import "./ERC20.sol"; /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract ERC20Burnable is ERC20 { /** * @dev Burns a specific amount of tokens. * @param value The amount of token to be burned. */ function burn(uint256 value) public { _burn(msg.sender, value); } /** * @dev Burns a specific amount of tokens from the target address and decrements allowance * @param from address The address which you want to send tokens from * @param value uint256 The amount of token to be burned */ function burnFrom(address from, uint256 value) public { _burnFrom(from, value); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity =0.8.17; import "./IERC20.sol"; import "./Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require( oldAllowance >= value, "SafeERC20: decreased allowance below zero" ); uint256 newAllowance = oldAllowance - value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } }
// SPDX-License-Identifier: Apache License 2.0 pragma solidity =0.8.17; interface EthTokenReciever { function receivePayment() external payable; }
// SPDX-License-Identifier: Apache 2.0 pragma solidity =0.8.17; import "./IERC20.sol"; /** * @title ERC20Detailed token * @dev The decimals are only for visualization purposes. * All the operations are done using the smallest and indivisible token unit, * just as on Ethereum all the operations are done in wei. */ abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @return the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @return the symbol of the token. */ function symbol() public view returns (string memory) { return _symbol; } /** * @return the number of decimals of the token. */ function decimals() public view returns (uint8) { return _decimals; } }
// SPDX-License-Identifier: MIT pragma solidity =0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); }
// SPDX-License-Identifier: Apache 2.0 pragma solidity =0.8.17; import "./IERC20.sol"; /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md * Originally based on code by FirstBlood: * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for * all accounts just by listening to said events. Note that this isn't required by the specification, and other * compliant implementations may not do it. */ contract ERC20 is IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowed; uint256 private _totalSupply; /** * @dev Total number of tokens in existence */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view override returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view override returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public override returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public override returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom( address from, address to, uint256 value ) public override returns (bool) { _transfer(from, to, value); _approve(from, msg.sender, _allowed[from][msg.sender] - value); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve( msg.sender, spender, _allowed[msg.sender][spender] + addedValue ); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve( msg.sender, spender, _allowed[msg.sender][spender] - subtractedValue ); return true; } /** * @dev Transfer token for a specified addresses * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer( address from, address to, uint256 value ) internal { require(to != address(0)); _balances[from] = _balances[from] - value; _balances[to] = _balances[to] + value; emit Transfer(from, to, value); } /** * @dev Internal function that mints an amount of the token and assigns it to * an account. This encapsulates the modification of balances such that the * proper events are emitted. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply + value; _balances[account] = _balances[account] + value; emit Transfer(address(0), account, value); } /** * @dev Internal function that burns an amount of the token of a given * account. * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burn(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply - value; _balances[account] = _balances[account] - value; emit Transfer(account, address(0), value); } /** * @dev Approve an address to spend another addresses' tokens. * @param owner The address that owns the tokens. * @param spender The address that will spend the tokens. * @param value The number of tokens that can be spent. */ function _approve( address owner, address spender, uint256 value ) internal { require(spender != address(0)); require(owner != address(0)); _allowed[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Internal function that burns an amount of the token of a given * account, deducting from the sender's allowance for said account. Uses the * internal burn function. * Emits an Approval event (reflecting the reduced allowance). * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burnFrom(address account, uint256 value) internal { _burn(account, value); _approve(account, msg.sender, _allowed[account][msg.sender] - value); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity =0.8.17; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address[]","name":"initialPeers","type":"address[]"},{"internalType":"address[]","name":"sidechainTokenAddresses","type":"address[]"},{"internalType":"bytes32[]","name":"sidechainAssetIds","type":"bytes32[]"},{"internalType":"address[]","name":"erc20Addresses","type":"address[]"},{"internalType":"address","name":"addressVAL","type":"address"},{"internalType":"address","name":"addressXOR","type":"address"},{"internalType":"bytes32","name":"networkId","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"peerId","type":"address"},{"indexed":false,"internalType":"bool","name":"removal","type":"bool"}],"name":"ChangePeers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"destination","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"bytes32","name":"sidechainAsset","type":"bytes32"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Migrated","type":"event"},{"anonymous":false,"inputs":[],"name":"PreparedForMigration","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"txHash","type":"bytes32"}],"name":"Withdrawal","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"_addressVAL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_addressXOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_networkId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_sidechainTokenAddressArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"_sidechainTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sidechainTokensByAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_uniqueAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"acceptedEthTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"},{"internalType":"string","name":"ticker","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"addEthNativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"bytes32","name":"sidechainAssetId","type":"bytes32"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"addNewSidechainToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPeerAddress","type":"address"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"addPeerByPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"peersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"prepareForMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"receiveByEthereumAssetAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"sidechainAssetId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"receiveBySidechainAssetId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"receivePayment","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"peerAddress","type":"address"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"removePeerByPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"sendERC20ToSidechain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"to","type":"bytes32"}],"name":"sendEthToSidechain","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address payable","name":"newContractAddress","type":"address"},{"internalType":"address[]","name":"erc20nativeTokens","type":"address[]"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"shutDownAndMigrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"used","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040523480156200001157600080fd5b506040516200430438038062004304833981016040819052620000349162000484565b85518551146200007d5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064015b60405180910390fd5b60005b8751811015620000cd57620000b7888281518110620000a357620000a36200056c565b60200260200101516200027660201b60201c565b5080620000c48162000582565b91505062000080565b506001600160a01b0382811660a0819052908416608081905260c083905260008054600160ff1991821681178355938252600560205260408083208054831686179055928252918120805490921690921790555b8651811015620001f65760008782815181106200014257620001426200056c565b6020026020010151905060008783815181106200016357620001636200056c565b602090810291909101810151600081815260068352604080822080546001600160a01b039097166001600160a01b0319978816811790915580835260079094528120919091556008805460018101825591527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054909316179091555080620001ed8162000582565b91505062000121565b50835160005b8181101562000267576001600560008884815181106200022057620002206200056c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806200025e8162000582565b915050620001fc565b505050505050505050620005aa565b6001600160a01b03811660009081526001602052604081205460ff1615620002d65760405162461bcd60e51b81526020600482015260126024820152711c19595c88185b1c9958591e48185919195960721b604482015260640162000074565b6001600160a01b03821660009081526001602081905260408220805460ff19169091179055600280549091906200030d9062000582565b9091555050600254919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200035b576200035b6200031a565b604052919050565b60006001600160401b038211156200037f576200037f6200031a565b5060051b60200190565b80516001600160a01b0381168114620003a157600080fd5b919050565b600082601f830112620003b857600080fd5b81516020620003d1620003cb8362000363565b62000330565b82815260059290921b84018101918181019086841115620003f157600080fd5b8286015b848110156200041757620004098162000389565b8352918301918301620003f5565b509695505050505050565b600082601f8301126200043457600080fd5b8151602062000447620003cb8362000363565b82815260059290921b840181019181810190868411156200046757600080fd5b8286015b848110156200041757805183529183019183016200046b565b600080600080600080600060e0888a031215620004a057600080fd5b87516001600160401b0380821115620004b857600080fd5b620004c68b838c01620003a6565b985060208a0151915080821115620004dd57600080fd5b620004eb8b838c01620003a6565b975060408a01519150808211156200050257600080fd5b620005108b838c0162000422565b965060608a01519150808211156200052757600080fd5b50620005368a828b01620003a6565b945050620005476080890162000389565b92506200055760a0890162000389565b915060c0880151905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b600060018201620005a357634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c051613ce462000620600039600081816102ea0152818161098601528181610b4301528181610da901528181610f96015281816110df0152818161126101528181611406015261176501526000818161045801526105fd01526000818161028001526105c00152613ce46000f3fe608060405260043610620001575760003560e01c8063835c19f311620000bb578063c29bb3321162000079578063c29bb3321462000444578063ca70cf6e146200047a578063cd550947146200049f578063dab4a4c614620004d0578063dfd9db8914620004f5578063fdfba25d146200051a5762000162565b8063835c19f314620001995780638505e868146200039957806389c39baf14620003d3578063ae6664e014620003f8578063b07c411f14620004105762000162565b80633b69828811620001155780633b698288146200026c5780633e44cf7814620002a25780635fde87c514620002d6578063687a82db146200031b57806375273ece146200034f57806375ff82bd14620003745762000162565b806303ef9d1f146200017457806312c6fa1b146200019b578063135f14e214620001e457806316283134146200020957806323ad7de214620002475762000162565b366200016257600080fd5b3480156200016f57600080fd5b600080fd5b3480156200018157600080fd5b506200019962000193366004620021c5565b62000531565b005b348015620001a857600080fd5b50620001cf620001ba36600462002201565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015620001f157600080fd5b50620001996200020336600462002382565b620008cb565b3480156200021657600080fd5b506200022e6200022836600462002460565b62000ab0565b6040516001600160a01b039091168152602001620001db565b3480156200025457600080fd5b506200019962000266366004620024f1565b62000adb565b3480156200027957600080fd5b506200022e7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002af57600080fd5b50620001cf620002c136600462002201565b60016020526000908152604090205460ff1681565b348015620002e357600080fd5b506200030c7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001db565b3480156200032857600080fd5b50620001cf6200033a36600462002201565b60056020526000908152604090205460ff1681565b3480156200035c57600080fd5b50620001996200036e36600462002590565b62000c7a565b3480156200038157600080fd5b506200019962000393366004620025c7565b62000ed1565b348015620003a657600080fd5b506200022e620003b836600462002460565b6006602052600090815260409020546001600160a01b031681565b348015620003e057600080fd5b50620001cf620003f236600462002663565b6200103b565b3480156200040557600080fd5b506200030c60025481565b3480156200041d57600080fd5b50620001cf6200042f36600462002460565b60036020526000908152604090205460ff1681565b3480156200045157600080fd5b506200022e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156200048757600080fd5b50620001cf6200049936600462002663565b620011c0565b348015620004ac57600080fd5b506200030c620004be36600462002201565b60076020526000908152604090205481565b348015620004dd57600080fd5b5062000199620004ef36600462002763565b6200131a565b3480156200050257600080fd5b5062000199620005143660046200283f565b62001692565b620001996200052b36600462002460565b62001802565b60005460ff161515600114620005645760405162461bcd60e51b81526004016200055b90620028e7565b60405180910390fd5b600054610100900460ff16156200058f5760405162461bcd60e51b81526004016200055b906200293a565b6001600160a01b038116600090815260076020526040902054819080151580620005ea5750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b80620006275750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b15620006985760405163079cc67960e41b81523360048201526024810185905283906001600160a01b038216906379cc679090604401600060405180830381600087803b1580156200067857600080fd5b505af11580156200068d573d6000803e3d6000fd5b505050505062000875565b6001600160a01b03831660009081526005602052604090205460ff166200071e5760405162461bcd60e51b815260206004820152603360248201527f54686520546f6b656e206973206e6f7420616363657074656420666f7220747260448201527230b739b332b9103a379039b4b232b1b430b4b760691b60648201526084016200055b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801562000766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078c9190620029a2565b9050620007a56001600160a01b038416333088620018f6565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008139190620029a2565b905085620008228383620029d2565b1015620008725760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e73207472616e7366657272656400000060448201526064016200055b565b50505b60408051868152602081018690526001600160a01b038516818301526060810183905290517f85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c89181900360800190a15050505050565b60005460ff161515600114620008f55760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff1615620009275760405162461bcd60e51b81526004016200055b90620029ee565b60408051610100602082018190526008610120830152673a3930b739b332b960c11b61014083015230928201929092526001600160a01b03808b166060830152608082018a905280891660a0830152871660c082015260e081018690527f000000000000000000000000000000000000000000000000000000000000000091810191909152620009d590610160015b6040516020818303038152906040528051906020012084848462001969565b620009f45760405162461bcd60e51b81526004016200055b9062002a1b565b6000848152600360205260409020805460ff191660011790556001600160a01b03881662000a5a576040516001600160a01b0387169088156108fc029089906000818181858888f1935050505015801562000a53573d6000803e3d6000fd5b5062000a73565b8762000a716001600160a01b038216888a62001cea565b505b6040518481527f0ce781a18c10c8289803c7c4cfd532d797113c4b41c9701ffad7d0a632ac555b9060200160405180910390a15050505050505050565b6008818154811062000ac157600080fd5b6000918252602090912001546001600160a01b0316905081565b60005460ff16151560011462000b055760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff161562000b375760405162461bcd60e51b81526004016200055b90620029ee565b62000b7a3089898989897f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b6979695949392919062002aa6565b62000b995760405162461bcd60e51b81526004016200055b9062002a1b565b600084815260036020526040808220805460ff1916600117905551899089908990309085908b9062000bcb906200218c565b62000bdc9695949392919062002b2e565b604051809103906000f08015801562000bf9573d6000803e3d6000fd5b50600087815260066020908152604080832080546001600160a01b039095166001600160a01b0319958616811790915580845260079092528220989098556008805460018101825591527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180549091169096179095555050505050505050565b60005460ff16151560011462000ca45760405162461bcd60e51b81526004016200055b90620028e7565b6000888152600660205260409020546001600160a01b031662000d145760405162461bcd60e51b815260206004820152602160248201527f53696465636861696e206173736574206973206e6f74207265676973746572656044820152601960fa1b60648201526084016200055b565b60008481526003602052604090205460ff161562000d465760405162461bcd60e51b81526004016200055b90620029ee565b6040805161010060208201819052600d6101208301526c1d1c985b9cd9995c93dddb9959609a1b6101408301523092820192909252606081018a9052608081018990526001600160a01b0380891660a0830152871660c082015260e081018690527f00000000000000000000000000000000000000000000000000000000000000009181019190915262000dde9061016001620009b6565b62000dfd5760405162461bcd60e51b81526004016200055b9062002a1b565b6000848152600360209081526040808320805460ff191660011790558a8352600690915290819020549051633c37699760e21b81526001600160a01b038881166004830152602482018a905290911690819063f0dda65c90604401600060405180830381600087803b15801562000e7357600080fd5b505af115801562000e88573d6000803e3d6000fd5b505050507f0ce781a18c10c8289803c7c4cfd532d797113c4b41c9701ffad7d0a632ac555b8560405162000ebe91815260200190565b60405180910390a1505050505050505050565b60005460ff16151560011462000efb5760405162461bcd60e51b81526004016200055b90620028e7565b600054610100900460ff161562000f265760405162461bcd60e51b81526004016200055b906200293a565b60008481526003602052604090205460ff161562000f585760405162461bcd60e51b81526004016200055b90620029ee565b60408051608060208201819052601060a08301526f383932b830b932a6b4b3b930ba34b7b760811b60c08301523092820192909252606081018690527f00000000000000000000000000000000000000000000000000000000000000009181019190915262000fca9060e001620009b6565b62000fe95760405162461bcd60e51b81526004016200055b9062002a1b565b600084815260036020526040808220805460ff19166001179055815461ff001916610100178255517f5389de9593f75e6515eefa796bd2d3324759f441f2c9b2dcda0efb25190378ff9190a150505050565b6000805460ff161515600114620010665760405162461bcd60e51b81526004016200055b90620028e7565b60008581526003602052604090205460ff1615620010985760405162461bcd60e51b81526004016200055b90620029ee565b6040805160a060208201819052600a60c0830152693932b6b7bb32a832b2b960b11b60e083015230928201929092526001600160a01b0388166060820152608081018790527f0000000000000000000000000000000000000000000000000000000000000000918101919091526200112e90610100015b6040516020818303038152906040528051906020012085858562001969565b6200114d5760405162461bcd60e51b81526004016200055b9062002a1b565b6000858152600360205260409020805460ff19166001179055620011718662001d21565b604080516001600160a01b0388168152600160208201527fa9fac23eb012e72fbd1f453498e7069c380385436763ee2c1c057b170d88d9f991015b60405180910390a150600195945050505050565b6000805460ff161515600114620011eb5760405162461bcd60e51b81526004016200055b90620028e7565b60008581526003602052604090205460ff16156200121d5760405162461bcd60e51b81526004016200055b90620029ee565b6040805160a060208201819052600760c08301526630b2322832b2b960c91b60e083015230928201929092526001600160a01b0388166060820152608081018790527f0000000000000000000000000000000000000000000000000000000000000000918101919091526200129690610100016200110f565b620012b55760405162461bcd60e51b81526004016200055b9062002a1b565b6000858152600360205260409020805460ff19166001179055620012d98662001dc1565b50604080516001600160a01b0388168152600060208201527fa9fac23eb012e72fbd1f453498e7069c380385436763ee2c1c057b170d88d9f99101620011ac565b60005460ff161515600114620013445760405162461bcd60e51b81526004016200055b90620028e7565b60005460ff610100909104161515600114620013c95760405162461bcd60e51b815260206004820152603e60248201527f436f6e74726163742073686f756c6420626520707265706172656420666f722060448201527f6d6967726174696f6e20746f2075736520746869732066756e6374696f6e000060648201526084016200055b565b60008781526003602052604090205460ff1615620013fb5760405162461bcd60e51b81526004016200055b90620029ee565b6200143c30878988887f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b69695949392919062002b89565b6200145b5760405162461bcd60e51b81526004016200055b9062002a1b565b6000878152600360205260408120805460ff19166001179055600854905b818110156200151e576000600882815481106200149a576200149a62002c26565b60009182526020909120015460405163f2fde38b60e01b81526001600160a01b038b811660048301529091169150819063f2fde38b90602401600060405180830381600087803b158015620014ee57600080fd5b505af115801562001503573d6000803e3d6000fd5b50505050508080620015159062002c3c565b91505062001479565b508460005b81811015620015f757600088888381811062001543576200154362002c26565b90506020020160208101906200155a919062002201565b6040516370a0823160e01b8152306004820152909150620015e1908b906001600160a01b038416906370a0823190602401602060405180830381865afa158015620015a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015cf9190620029a2565b6001600160a01b038416919062001cea565b5080620015ee8162002c3c565b91505062001523565b50876001600160a01b031663835c19f3476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200163457600080fd5b505af115801562001649573d6000803e3d6000fd5b50506000805460ff1916905550506040516001600160a01b038a1681527fa2e7361c23d7820040603b83c0cd3f494d377bac69736377d75bb56c651a5098915060200162000ebe565b60005460ff161515600114620016bc5760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff1615620016ee5760405162461bcd60e51b81526004016200055b90620029ee565b6001600160a01b03881660009081526005602052604090205460ff1615620017595760405162461bcd60e51b815260206004820152601e60248201527f455243323020746f6b656e206973206e6f742077686974656c6973746564000060448201526064016200055b565b6200179c3089898989897f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b6979695949392919062002c58565b620017bb5760405162461bcd60e51b81526004016200055b9062002a1b565b5050506000908152600360209081526040808320805460ff1990811660019081179092556001600160a01b0390981684526005909252909120805490951617909355505050565b60005460ff1615156001146200182c5760405162461bcd60e51b81526004016200055b90620028e7565b600054610100900460ff1615620018575760405162461bcd60e51b81526004016200055b906200293a565b60003411620018a95760405162461bcd60e51b815260206004820152601f60248201527f4554482056414c55452053484f554c44204245204d4f5245205448414e20300060448201526064016200055b565b604080518281523460208201526000918101829052606081018290527f85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c89060800160405180910390a15050565b6040516001600160a01b0380851660248301528316604482015260648101829052620019639085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e65565b50505050565b600060016002541015620019b55760405162461bcd60e51b81526020600482015260126024820152717065657273436f756e7420746f6f206c6f7760701b60448201526064016200055b565b83518351811462001a155760405162461bcd60e51b8152602060048201526024808201527f7369676e6174757265436f756e7420616e642072206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016200055b565b8251811462001a735760405162461bcd60e51b8152602060048201526024808201527f7369676e6174757265436f756e7420616e642073206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016200055b565b60006003600160025462001a889190620029d2565b62001a94919062002ce1565b60025462001aa39190620029d2565b90508082101562001aef5760405162461bcd60e51b81526020600482015260156024820152746e6f7420656e6f756768207369676e61747572657360581b60448201526064016200055b565b6000808367ffffffffffffffff81111562001b0e5762001b0e62002221565b60405190808252806020026020018201604052801562001b38578160200160208202803683370190505b50905060005b8481101562001c6f57600062001bab8b8b848151811062001b635762001b6362002c26565b60200260200101518b858151811062001b805762001b8062002c26565b60200260200101518b868151811062001b9d5762001b9d62002c26565b602002602001015162001f3e565b6001600160a01b03811660009081526001602081905260409091205491925060ff909116151514158062001bfc57506001600160a01b03811660009081526004602052604090205460ff1615156001145b1562001c09575062001c5c565b8083858151811062001c1f5762001c1f62002c26565b6001600160a01b0392831660209182029290920181019190915291166000908152600490915260409020805460ff19166001908117909155909201915b62001c678162002c3c565b905062001b3e565b5060005b8281101562001cdc5760006004600084848151811062001c975762001c9762002c26565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562001cd48162002c3c565b905062001c73565b505010159695505050505050565b6040516001600160a01b03831660248201526044810182905262001d1c90849063a9059cbb60e01b906064016200192b565b505050565b6001600160a01b03811660009081526001602081905260409091205460ff1615151462001d885760405162461bcd60e51b81526020600482015260146024820152737065657220646f6573206e6f742065786973747360601b60448201526064016200055b565b6001600160a01b0381166000908152600160205260408120805460ff191690556002805490919062001dba9062002d04565b9091555050565b6001600160a01b03811660009081526001602052604081205460ff161562001e215760405162461bcd60e51b81526020600482015260126024820152711c19595c88185b1c9958591e48185919195960721b60448201526064016200055b565b6001600160a01b03821660009081526001602081905260408220805460ff191690911790556002805490919062001e589062002c3c565b9091555050600254919050565b600062001ebc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662001ff89092919063ffffffff16565b80519091501562001d1c578080602001905181019062001edd919062002d1e565b62001d1c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200055b565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018590526000908190605c0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801562001fe2573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b606062002009848460008562002013565b90505b9392505050565b606082471015620020765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200055b565b6001600160a01b0385163b620020cf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200055b565b600080866001600160a01b03168587604051620020ed919062002d42565b60006040518083038185875af1925050503d80600081146200212c576040519150601f19603f3d011682016040523d82523d6000602084013e62002131565b606091505b5091509150620021438282866200214e565b979650505050505050565b606083156200215f5750816200200c565b825115620021705782518084602001fd5b8160405162461bcd60e51b81526004016200055b919062002d60565b610f398062002d7683390190565b6001600160a01b0381168114620021b057600080fd5b50565b8035620021c0816200219a565b919050565b600080600060608486031215620021db57600080fd5b83359250602084013591506040840135620021f6816200219a565b809150509250925092565b6000602082840312156200221457600080fd5b81356200200c816200219a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002263576200226362002221565b604052919050565b600067ffffffffffffffff82111562002288576200228862002221565b5060051b60200190565b803560ff81168114620021c057600080fd5b600082601f830112620022b657600080fd5b81356020620022cf620022c9836200226b565b62002237565b82815260059290921b84018101918181019086841115620022ef57600080fd5b8286015b848110156200231557620023078162002292565b8352918301918301620022f3565b509695505050505050565b600082601f8301126200233257600080fd5b8135602062002345620022c9836200226b565b82815260059290921b840181019181810190868411156200236557600080fd5b8286015b8481101562002315578035835291830191830162002369565b600080600080600080600080610100898b031215620023a057600080fd5b620023ab89620021b3565b975060208901359650620023c260408a01620021b3565b9550620023d260608a01620021b3565b94506080890135935060a089013567ffffffffffffffff80821115620023f757600080fd5b620024058c838d01620022a4565b945060c08b01359150808211156200241c57600080fd5b6200242a8c838d0162002320565b935060e08b01359150808211156200244157600080fd5b50620024508b828c0162002320565b9150509295985092959890939650565b6000602082840312156200247357600080fd5b5035919050565b600082601f8301126200248c57600080fd5b813567ffffffffffffffff811115620024a957620024a962002221565b620024be601f8201601f191660200162002237565b818152846020838601011115620024d457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156200250f57600080fd5b883567ffffffffffffffff808211156200252857600080fd5b620025368c838d016200247a565b995060208b01359150808211156200254d57600080fd5b6200255b8c838d016200247a565b98506200256b60408c0162002292565b975060608b0135965060808b0135955060a08b0135915080821115620023f757600080fd5b600080600080600080600080610100898b031215620025ae57600080fd5b8835975060208901359650620023c260408a01620021b3565b60008060008060808587031215620025de57600080fd5b84359350602085013567ffffffffffffffff80821115620025fe57600080fd5b6200260c88838901620022a4565b945060408701359150808211156200262357600080fd5b620026318883890162002320565b935060608701359150808211156200264857600080fd5b50620026578782880162002320565b91505092959194509250565b600080600080600060a086880312156200267c57600080fd5b853562002689816200219a565b945060208601359350604086013567ffffffffffffffff80821115620026ae57600080fd5b620026bc89838a01620022a4565b94506060880135915080821115620026d357600080fd5b620026e189838a0162002320565b93506080880135915080821115620026f857600080fd5b50620027078882890162002320565b9150509295509295909350565b60008083601f8401126200272757600080fd5b50813567ffffffffffffffff8111156200274057600080fd5b6020830191508360208260051b85010111156200275c57600080fd5b9250929050565b600080600080600080600060c0888a0312156200277f57600080fd5b873596506200279160208901620021b3565b9550604088013567ffffffffffffffff80821115620027af57600080fd5b620027bd8b838c0162002714565b909750955060608a0135915080821115620027d757600080fd5b620027e58b838c01620022a4565b945060808a0135915080821115620027fc57600080fd5b6200280a8b838c0162002320565b935060a08a01359150808211156200282157600080fd5b50620028308a828b0162002320565b91505092959891949750929550565b600080600080600080600080610100898b0312156200285d57600080fd5b6200286889620021b3565b9750602089013567ffffffffffffffff808211156200288657600080fd5b620028948c838d016200247a565b985060408b0135915080821115620028ab57600080fd5b620028b98c838d016200247a565b9750620028c960608c0162002292565b965060808b0135955060a08b0135915080821115620023f757600080fd5b60208082526033908201527f436f6e74726163742073686f756c6420626520696e697469616c697a6564207460408201527237903ab9b2903a3434b990333ab731ba34b7b760691b606082015260800190565b60208082526042908201527f436f6e74726163742073686f756c64206e6f742062652070726570617265642060408201527f666f72206d6967726174696f6e20746f2075736520746869732066756e63746960608201526137b760f11b608082015260a00190565b600060208284031215620029b557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620029e857620029e8620029bc565b92915050565b6020808252601390820152721d1e12185cda08185b1c9958591e481d5cd959606a1b604082015260600190565b6020808252601b908201527f50656572207369676e6174757265732061726520696e76616c69640000000000604082015260600190565b60005b8381101562002a6f57818101518382015260200162002a55565b50506000910152565b6000815180845262002a9281602086016020860162002a52565b601f01601f19169290920160200192915050565b61010080825260089082015267185919105cdcd95d60c21b6101208201526001600160a01b03881660208201526101406040820181905260009062002aee8184018a62002a78565b9050828103606084015262002b04818962002a78565b91505060ff861660808301528460a08301528360c08301528260e083015298975050505050505050565b60c08152600062002b4360c083018962002a78565b828103602084015262002b57818962002a78565b60ff97909716604084015250506001600160a01b03939093166060840152608083019190915260a09091015292915050565b60c0808252600790820152666d69677261746560c81b60e08201526001600160a01b038781166020808401919091528782166040840152606083018790526101006080840181905283018590526000916101208401918791845b8881101562002c0e57833562002bf9816200219a565b82168552938201939282019260010162002be3565b5050505060a092909201929092529695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162002c515762002c51620029bc565b5060010190565b6101008082526008908201526730b2322a37b5b2b760c11b6101208201526001600160a01b038881166020830152871660408201526101406060820181905260009062002ca88184018962002a78565b9050828103608084015262002cbe818862002a78565b60ff9690961660a0840152505060c081019290925260e090910152949350505050565b60008262002cff57634e487b7160e01b600052601260045260246000fd5b500490565b60008162002d165762002d16620029bc565b506000190190565b60006020828403121562002d3157600080fd5b815180151581146200200c57600080fd5b6000825162002d5681846020870162002a52565b9190910192915050565b6020815260006200200c602083018462002a7856fe60806040523480156200001157600080fd5b5060405162000f3938038062000f39833981016040819052620000349162000238565b85858560036200004584826200037f565b5060046200005483826200037f565b5060058054336101009081026001600160a81b031990921660ff9094169390931717908190556040519190046001600160a01b03169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36006819055620000c58383620000d1565b50505050505062000473565b6001600160a01b038216620000e557600080fd5b80600254620000f591906200044b565b6002556001600160a01b0382166000908152602081905260409020546200011e9082906200044b565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019b57600080fd5b81516001600160401b0380821115620001b857620001b862000173565b604051601f8301601f19908116603f01168101908282118183101715620001e357620001e362000173565b816040528381526020925086838588010111156200020057600080fd5b600091505b8382101562000224578582018301518183018401529082019062000205565b600093810190920192909252949350505050565b60008060008060008060c087890312156200025257600080fd5b86516001600160401b03808211156200026a57600080fd5b620002788a838b0162000189565b975060208901519150808211156200028f57600080fd5b506200029e89828a0162000189565b955050604087015160ff81168114620002b657600080fd5b60608801519094506001600160a01b0381168114620002d457600080fd5b809350506080870151915060a087015190509295509295509295565b600181811c908216806200030557607f821691505b6020821081036200032657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620003555750805b601f850160051c820191505b81811015620003765782815560010162000361565b5050505b505050565b81516001600160401b038111156200039b576200039b62000173565b620003b381620003ac8454620002f0565b846200032c565b602080601f831160018114620003eb5760008415620003d25750858301515b600019600386901b1c1916600185901b17855562000376565b600085815260208120601f198616915b828110156200041c57888601518255948401946001909101908401620003fb565b50858210156200043b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200046d57634e487b7160e01b600052601160045260246000fd5b92915050565b610ab680620004836000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379cc6790116100ad578063a9059cbb11610071578063a9059cbb14610269578063dd62ed3e1461027c578063f0dda65c146102b5578063f2fde38b146102c8578063fcec35a9146102db57600080fd5b806379cc6790146101fa5780638da5cb5b1461020d5780638f32d59b1461023657806395d89b411461024e578063a457c2d71461025657600080fd5b8063313ce567116100f4578063313ce5671461018c57806339509351146101a157806342966c68146101b457806370a08231146101c9578063715018a6146101f257600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102e4565b60405161013b91906108a9565b60405180910390f35b610157610152366004610913565b610376565b604051901515815260200161013b565b6002545b60405190815260200161013b565b61015761018736600461093d565b61038d565b60055460405160ff909116815260200161013b565b6101576101af366004610913565b6103df565b6101c76101c2366004610979565b610416565b005b61016b6101d7366004610992565b6001600160a01b031660009081526020819052604090205490565b6101c7610423565b6101c7610208366004610913565b6104ab565b60055461010090046001600160a01b03166040516001600160a01b03909116815260200161013b565b60055461010090046001600160a01b03163314610157565b61012e6104b9565b610157610264366004610913565b6104c8565b610157610277366004610913565b6104ff565b61016b61028a3660046109b4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c76102c3366004610913565b61050c565b6101c76102d6366004610992565b610545565b61016b60065481565b6060600380546102f3906109e7565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906109e7565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b5050505050905090565b600061038333848461057d565b5060015b92915050565b600061039a848484610605565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546103d59186916103d0908690610a37565b61057d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103839185906103d0908690610a4a565b61042033826106bd565b50565b60055461010090046001600160a01b0316331461045b5760405162461bcd60e51b815260040161045290610a5d565b60405180910390fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6104b58282610759565b5050565b6060600480546102f3906109e7565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103839185906103d0908690610a37565b6000610383338484610605565b60055461010090046001600160a01b0316331461053b5760405162461bcd60e51b815260040161045290610a5d565b6104b58282610799565b60055461010090046001600160a01b031633146105745760405162461bcd60e51b815260040161045290610a5d565b6104208161082f565b6001600160a01b03821661059057600080fd5b6001600160a01b0383166105a357600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03821661061857600080fd5b6001600160a01b03831660009081526020819052604090205461063c908290610a37565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461066c908290610a4a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016105f8565b6001600160a01b0382166106d057600080fd5b806002546106de9190610a37565b6002556001600160a01b038216600090815260208190526040902054610705908290610a37565b6001600160a01b03831660008181526020818152604080832094909455925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b61076382826106bd565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546104b59184916103d0908590610a37565b6001600160a01b0382166107ac57600080fd5b806002546107ba9190610a4a565b6002556001600160a01b0382166000908152602081905260409020546107e1908290610a4a565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161074d565b6001600160a01b03811661084257600080fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600060208083528351808285015260005b818110156108d6578581018301518582016040015282016108ba565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461090e57600080fd5b919050565b6000806040838503121561092657600080fd5b61092f836108f7565b946020939093013593505050565b60008060006060848603121561095257600080fd5b61095b846108f7565b9250610969602085016108f7565b9150604084013590509250925092565b60006020828403121561098b57600080fd5b5035919050565b6000602082840312156109a457600080fd5b6109ad826108f7565b9392505050565b600080604083850312156109c757600080fd5b6109d0836108f7565b91506109de602084016108f7565b90509250929050565b600181811c908216806109fb57607f821691505b602082108103610a1b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561038757610387610a21565b8082018082111561038757610387610a21565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220d96a4ac2182a8d03954d54f90ad66e15291264e94cc7145800b0056a32cd4d4564736f6c63430008110033a2646970667358221220300a2e4d79dd7e18e73f932150c220aa1b11004ad1c46b0d2479eeccd12a358564736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000e88f8313e61a97cec1871ee37fbbe2a8bf3ed1e400000000000000000000000040fd72257597aa14c7231a7b1aaa29fce868f677000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006c9e8391a0444c739e7e2edd37a2c6e3381b1cbf000000000000000000000000ef22d478a53bc8bbe854cef8ba2eb79c49a1a1710000000000000000000000006219d0ba6a0bafa69cd2b1b15633a3fd864dd3710000000000000000000000000000000000000000000000000000000000000005000000000000000000000000519c1001d550c0a1dae7d1fc220f7d14c2a521bb0000000000000000000000002e7b0d4f9b2eaf782ed3d160e3a0a4b1a7930ada000000000000000000000000c7d9c108d4e1dd1484d3e2568d7f74bfd763d3560000000000000000000000005e7f20e72c21f6d0bf0a2814fd4164176401cf8e000000000000000000000000c60d6662027f5797cf873bfe80bcf048e30fc35e00000000000000000000000000000000000000000000000000000000000000050200050000000000000000000000000000000000000000000000000000000000008bcfd2387d3fc453333557eecb0efe59fcba128769b2feefdd306e98e66440020008000000000000000000000000000000000000000000000000000000000000f2f4fda40a4bf1fc3769d156fa695532eec31e265d75068524462c0b80f674020009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a70000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000008ab7404063ec4dbcfd4598215992dc3f8ec853d7000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df00000000000000000000000027702a26126e0b3702af63ee09ac4d1a084ef628000000000000000000000000a1faa113cbe53436df28ff0aee54275c13b40975000000000000000000000000ff20817765cb7f73d4bde2e66e067e58d11095c20000000000000000000000008290333cef9e6d528dd5618fb97a76f268f3edd4000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e000000000000000000000000a9b1eb5908cfc3cdf91f9b8b3a7410859800909600000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b998000000000000000000000000f5d669627376ebd411e34b98f19c868c8aba5ada0000000000000000000000003472a5a71965499acd81997a54bba8d852c6e53d000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000ba11d00c5f74255f56a5e366f4f77f5a186d7f550000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c000000000000000000000000d2dda223b2617cb616c1580db421e4cfae6a8a85000000000000000000000000cb97e65f07da24d46bcdd078ebebd7c6e6e3d750000000000000000000000000cca0c9c383076649604ee31b20248bc04fdf61ca0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000056d811088235f11c8920698a204a5010a788f4b30000000000000000000000005d3a536e4d6dbd6114cc1ead35777bab948e3643000000000000000000000000aaaebe6fe48e54f431b0c390cfaf0b017d09d42d0000000000000000000000004f9254c83eb525f9fcf346490bbb3ed28a81c6670000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed50000000000000000000000003506424f91fd33084466f402d5d97f05f8e3b4af000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888000000000000000000000000115ec79f1de567ec68b7ae7eda501b406626478e0000000000000000000000002ba592f78db6436527729929aaf6c908497cb200000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b00000000000000000000000032a7c02e79c4ea1008dd6564b35f131428673c41000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd5200000000000000000000000035a18000230da775cac24873d00ff85bccded550000000000000000000000000f650c3d88d12db855b8bf7d11be6c55a4e07dcc900000000000000000000000041e5560054824ea6b0732e656e3ad64e20e94e450000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000003597bfd533a99c9aa083587b074434e61eb0a25800000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c941900000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd000000000000000000000000bf2179859fc6d5bee9bf9158632dc51678a4100e000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c000000000000000000000000bbc2ae13b23d715c30720f079fcd9b4a74093505000000000000000000000000d33d0eb1c0c0295c3a2409a9101dd511823bf217000000000000000000000000a0246c9032bc3a600820415ae600c6388619a14d000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca000000000000000000000000aea46a60368a7bd060eec7df8cba43b7ef41ad85000000000000000000000000ef3a930e1ffffacd2fc13434ac81bd278b0ecc8d000000000000000000000000f6ea0e60cee427b90aa36f327ee61d1d4cabc49f000000000000000000000000f8c3527cc04340b208c854e985240c02f7b7793f00000000000000000000000050d1c9771902476076ecfc8b2a83ad6b9355a4c9000000000000000000000000419d0d8bdd9af5e606ae2232ed285aff190e711b0000000000000000000000008c15ef5b4b21951d50e53e4fbda8298ffad250570000000000000000000000007dd9c5cba05e151c895fde1cf355c9a1d5da64290000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96000000000000000000000000b1f871ae9462f1b2c6826e88a7827e76f86751d4000000000000000000000000c944e90c64b2c07662a292be6244bdf05cda44a7000000000000000000000000e66747a101bff2dba3697199dcce5b743b4547590000000000000000000000000316eb71485b0ab14103307bf65a021042c6d3800000000000000000000000006c6ee5e31d828de241282b9606c8e98ea48526e2000000000000000000000000df574c24545e5ffecb9a659c229253d4111d87e1000000000000000000000000b705268213d593b8fd88d3fdeff93aff5cbdcfae000000000000000000000000d9ec3ff1f8be459bb9369b4e79e9ebcf7141c093000000000000000000000000f34960d9d60be18cc1d5afc1a6f012a723a2881100000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200000000000000000000000000cb4e8cafeda995da5cedfda5205bd5664a12b848000000000000000000000000ac1b818e9f1fb4e34413d631cb298fbc8a986f5200000000000000000000000067b6d479c7bb412c54e03dca8e1bc6740ce6b99c0000000000000000000000002af5d2ad76741191d15dfe7bf6ac92d4bd912ca30000000000000000000000003e9bc21c9b189c09df3ef1b824798658d5011937000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000b59490ab09a0f526cc7305822ac65f2ab12f972300000000000000000000000058b6a8a3302369daec383334672404ee733ab239000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba00000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc94200000000000000000000000008d967bb0134f2d07f7cfb6e246680c53927dd300000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb00000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba05900000000000000000000000009a3ecafa817268f77be1283176b946c4ff2e6080000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2000000000000000000000000f433089366899d83a9f26a773d59ec7ecf30355e0000000000000000000000005ca381bbfb58f0092df149bd3d243b08b9a8386e000000000000000000000000b62132e35a6c13ee1ee0f84dc5d40bad8d8152060000000000000000000000005cf04716ba20127f1e2297addcf4b5035000c9eb0000000000000000000000001776e1f26f98b1a5df9cd347953a26dd3cb46671000000000000000000000000a8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca000000000000000000000000d7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b000000000000000000000000967da4048cd07ab37855c090aaf366e4ce1b9f480000000000000000000000008207c1ffc5b6804f6024322ccf34f29c3541ae2600000000000000000000000075231f58b43240c9718dd58b4967c5114342a86c000000000000000000000000d26114cd6ee289accf82350c8d8487fedb8a0c07000000000000000000000000ff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa0000000000000000000000000258f474786ddfd37abce6df6bbb1dd5dfc4434a0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1000000000000000000000000f59ae934f6fe444afc309586cc60a84a0f89aaea0000000000000000000000006c5ba91642f10282b576d91922ae6448c9d52f4e00000000000000000000000089ab32156e46f46d02ade3fecbe5fc4243b9aaed0000000000000000000000009992ec3cf6a55b00978cddf2b27bc6882d88d1ec000000000000000000000000d4fa1460f537bb9085d22c7bccb5dd450ef28e3a000000000000000000000000ea26c4ac16d4a5a106820bc8aee85fd0b7b2b6640000000000000000000000004a220e6096b25eadb88358cb44068a324825467500000000000000000000000093dfaf57d986b9ca77df9376c50878e013d9c7c8000000000000000000000000d01cb3d113a864763dd3977fe1e725860013b0ed000000000000000000000000505f5a4ff10985fe9f93f2ae3501da5fe665f08a000000000000000000000000fe3e6a25e6b192a42a44ecddcd13796471735acf000000000000000000000000408e41876cccdc0f92210600ef50372656052a38000000000000000000000000eb4c2781e4eba804ce9a9803c67d0893436bb27d000000000000000000000000221657776846890989a759ba2973e427dff5c9bb0000000000000000000000009559aaa82d9649c7a7b220e7c461d2e74c9a3593000000000000000000000000c82eb6dea0c93edb8b697b89ad1b13d19469d635000000000000000000000000a1d6df714f91debf4e0802a542e13067f31b82620000000000000000000000003c3842c4d3037ae121d69ea1e7a0b61413be806c000000000000000000000000607f4c5bb672230e8672085532f7e901544a7375000000000000000000000000fa5047c9c78b8877af97bdcb85db743fd7313d4a000000000000000000000000ad4f86a25bbc20ffb751f2fac312a0b4d8f88c64000000000000000000000000b4efd85c19999d84251304bda99e90b92300bd930000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e80000000000000000000000003155ba85d5f96b2d030a4966af206230e46849cb00000000000000000000000008ad83d779bdf2bbe1ad9cc0f78aa0d24ab978020000000000000000000000003845badade8e6dff049820680d1f14bd3903a5d00000000000000000000000005e74c9036fb86bd7ecdcb084a0673efc32ea31cb00000000000000000000000000c83aecc790e8a4453e5dd3b0b4b3680501a7a7000000000000000000000000744d70fdbe2ba4cf95131626614a1763df805b9e000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f0000000000000000000000000ae055097c6d159879521c384f1d2123d1f195e6000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84000000000000000000000000be9375c6a420d2eeb258962efb95551a5b722803000000000000000000000000b64ef51c888972c908cfacf59b47c1afbc0ab8ac000000000000000000000000de7d85157d9714eadf595045cc12ca4a5f3e2adb000000000000000000000000e53ec727dbdeb9e2d5456c3be40cff031ab40a5500000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f510000000000000000000000006b3595068778dd592e39a122f4f5a5cf09c90fe2000000000000000000000000cc4304a31d09258b0029ea7fe63d032f52e44efe0000000000000000000000008ce9137d39326ad0cd6491fb5cc0cba0e089b6a9000000000000000000000000467bccd9d29f223bce8043b84e8c8b282827790f0000000000000000000000003a8cccb969a61532d1e6005e2ce12c200caece87000000000000000000000000888888848b652b3e3a0f34c96e00eec0f3a23f72000000000000000000000000aa7a9ca87d3694b5755f213b5d04094b8d0f0a6f00000000000000000000000088df592f8eb5d7bd38bfef7deb0fbc02cf3778a0000000000000000000000000c7283b66eb1eb5fb86327f08e1b5816b0720212b0000000000000000000000000000000000085d4780b73119b644ae5ecd22b376000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df0000000000000000000000008400d94a5cb0fa0d041a3788e395285d61c9ee5e00000000000000000000000004fa0d235c4abf4bcf4787af4cf447de572ef82800000000000000000000000061107a409fffe1965126aa456af679719695c69c0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000d13c7342e1ef687c5ad21b27c2b65d772cab5c8c0000000000000000000000008806926ab68eb5a7b909dcaf6fdbe5d93271d6e2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000674c6ad92fd080e4004b2312b45f796a192d27a0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a47c8bf37f92abed4a126bda807a7b7498661acd000000000000000000000000dc9ac3c20d1ed0b540df9b1fedc10039df13f99c0000000000000000000000005af2be193a6abca9c8817001f45744777db30756000000000000000000000000f411903cbc70a74d22900a5de66a2dda665072550000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c221b7e65ffc80de234bbb6667abdd46593d34f00000000000000000000000004691937a7508860f876c9c0a2a617e7d9e945d4b000000000000000000000000892a6f9df0147e5f079b0993f486f9aca3c878810000000000000000000000006fcb6408499a7c0f242e32d77eb51ffa1dd28a7e0000000000000000000000007de91b204c1c737bcee6f000aaa6569cf7061cb70000000000000000000000008798249c2e607446efb7ad49ec89dd1865ff42720000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000e4815ae53b124e7263f08dcdbbb757d41ed658c6000000000000000000000000aa602de53347579f86b996d2add74bb6f79462b2000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498Deployed Bytecode
0x608060405260043610620001575760003560e01c8063835c19f311620000bb578063c29bb3321162000079578063c29bb3321462000444578063ca70cf6e146200047a578063cd550947146200049f578063dab4a4c614620004d0578063dfd9db8914620004f5578063fdfba25d146200051a5762000162565b8063835c19f314620001995780638505e868146200039957806389c39baf14620003d3578063ae6664e014620003f8578063b07c411f14620004105762000162565b80633b69828811620001155780633b698288146200026c5780633e44cf7814620002a25780635fde87c514620002d6578063687a82db146200031b57806375273ece146200034f57806375ff82bd14620003745762000162565b806303ef9d1f146200017457806312c6fa1b146200019b578063135f14e214620001e457806316283134146200020957806323ad7de214620002475762000162565b366200016257600080fd5b3480156200016f57600080fd5b600080fd5b3480156200018157600080fd5b506200019962000193366004620021c5565b62000531565b005b348015620001a857600080fd5b50620001cf620001ba36600462002201565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015620001f157600080fd5b50620001996200020336600462002382565b620008cb565b3480156200021657600080fd5b506200022e6200022836600462002460565b62000ab0565b6040516001600160a01b039091168152602001620001db565b3480156200025457600080fd5b506200019962000266366004620024f1565b62000adb565b3480156200027957600080fd5b506200022e7f000000000000000000000000e88f8313e61a97cec1871ee37fbbe2a8bf3ed1e481565b348015620002af57600080fd5b50620001cf620002c136600462002201565b60016020526000908152604090205460ff1681565b348015620002e357600080fd5b506200030c7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001db565b3480156200032857600080fd5b50620001cf6200033a36600462002201565b60056020526000908152604090205460ff1681565b3480156200035c57600080fd5b50620001996200036e36600462002590565b62000c7a565b3480156200038157600080fd5b506200019962000393366004620025c7565b62000ed1565b348015620003a657600080fd5b506200022e620003b836600462002460565b6006602052600090815260409020546001600160a01b031681565b348015620003e057600080fd5b50620001cf620003f236600462002663565b6200103b565b3480156200040557600080fd5b506200030c60025481565b3480156200041d57600080fd5b50620001cf6200042f36600462002460565b60036020526000908152604090205460ff1681565b3480156200045157600080fd5b506200022e7f00000000000000000000000040fd72257597aa14c7231a7b1aaa29fce868f67781565b3480156200048757600080fd5b50620001cf6200049936600462002663565b620011c0565b348015620004ac57600080fd5b506200030c620004be36600462002201565b60076020526000908152604090205481565b348015620004dd57600080fd5b5062000199620004ef36600462002763565b6200131a565b3480156200050257600080fd5b5062000199620005143660046200283f565b62001692565b620001996200052b36600462002460565b62001802565b60005460ff161515600114620005645760405162461bcd60e51b81526004016200055b90620028e7565b60405180910390fd5b600054610100900460ff16156200058f5760405162461bcd60e51b81526004016200055b906200293a565b6001600160a01b038116600090815260076020526040902054819080151580620005ea5750826001600160a01b03167f000000000000000000000000e88f8313e61a97cec1871ee37fbbe2a8bf3ed1e46001600160a01b0316145b80620006275750826001600160a01b03167f00000000000000000000000040fd72257597aa14c7231a7b1aaa29fce868f6776001600160a01b0316145b15620006985760405163079cc67960e41b81523360048201526024810185905283906001600160a01b038216906379cc679090604401600060405180830381600087803b1580156200067857600080fd5b505af11580156200068d573d6000803e3d6000fd5b505050505062000875565b6001600160a01b03831660009081526005602052604090205460ff166200071e5760405162461bcd60e51b815260206004820152603360248201527f54686520546f6b656e206973206e6f7420616363657074656420666f7220747260448201527230b739b332b9103a379039b4b232b1b430b4b760691b60648201526084016200055b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801562000766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078c9190620029a2565b9050620007a56001600160a01b038416333088620018f6565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008139190620029a2565b905085620008228383620029d2565b1015620008725760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e73207472616e7366657272656400000060448201526064016200055b565b50505b60408051868152602081018690526001600160a01b038516818301526060810183905290517f85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c89181900360800190a15050505050565b60005460ff161515600114620008f55760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff1615620009275760405162461bcd60e51b81526004016200055b90620029ee565b60408051610100602082018190526008610120830152673a3930b739b332b960c11b61014083015230928201929092526001600160a01b03808b166060830152608082018a905280891660a0830152871660c082015260e081018690527f000000000000000000000000000000000000000000000000000000000000000091810191909152620009d590610160015b6040516020818303038152906040528051906020012084848462001969565b620009f45760405162461bcd60e51b81526004016200055b9062002a1b565b6000848152600360205260409020805460ff191660011790556001600160a01b03881662000a5a576040516001600160a01b0387169088156108fc029089906000818181858888f1935050505015801562000a53573d6000803e3d6000fd5b5062000a73565b8762000a716001600160a01b038216888a62001cea565b505b6040518481527f0ce781a18c10c8289803c7c4cfd532d797113c4b41c9701ffad7d0a632ac555b9060200160405180910390a15050505050505050565b6008818154811062000ac157600080fd5b6000918252602090912001546001600160a01b0316905081565b60005460ff16151560011462000b055760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff161562000b375760405162461bcd60e51b81526004016200055b90620029ee565b62000b7a3089898989897f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b6979695949392919062002aa6565b62000b995760405162461bcd60e51b81526004016200055b9062002a1b565b600084815260036020526040808220805460ff1916600117905551899089908990309085908b9062000bcb906200218c565b62000bdc9695949392919062002b2e565b604051809103906000f08015801562000bf9573d6000803e3d6000fd5b50600087815260066020908152604080832080546001600160a01b039095166001600160a01b0319958616811790915580845260079092528220989098556008805460018101825591527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180549091169096179095555050505050505050565b60005460ff16151560011462000ca45760405162461bcd60e51b81526004016200055b90620028e7565b6000888152600660205260409020546001600160a01b031662000d145760405162461bcd60e51b815260206004820152602160248201527f53696465636861696e206173736574206973206e6f74207265676973746572656044820152601960fa1b60648201526084016200055b565b60008481526003602052604090205460ff161562000d465760405162461bcd60e51b81526004016200055b90620029ee565b6040805161010060208201819052600d6101208301526c1d1c985b9cd9995c93dddb9959609a1b6101408301523092820192909252606081018a9052608081018990526001600160a01b0380891660a0830152871660c082015260e081018690527f00000000000000000000000000000000000000000000000000000000000000009181019190915262000dde9061016001620009b6565b62000dfd5760405162461bcd60e51b81526004016200055b9062002a1b565b6000848152600360209081526040808320805460ff191660011790558a8352600690915290819020549051633c37699760e21b81526001600160a01b038881166004830152602482018a905290911690819063f0dda65c90604401600060405180830381600087803b15801562000e7357600080fd5b505af115801562000e88573d6000803e3d6000fd5b505050507f0ce781a18c10c8289803c7c4cfd532d797113c4b41c9701ffad7d0a632ac555b8560405162000ebe91815260200190565b60405180910390a1505050505050505050565b60005460ff16151560011462000efb5760405162461bcd60e51b81526004016200055b90620028e7565b600054610100900460ff161562000f265760405162461bcd60e51b81526004016200055b906200293a565b60008481526003602052604090205460ff161562000f585760405162461bcd60e51b81526004016200055b90620029ee565b60408051608060208201819052601060a08301526f383932b830b932a6b4b3b930ba34b7b760811b60c08301523092820192909252606081018690527f00000000000000000000000000000000000000000000000000000000000000009181019190915262000fca9060e001620009b6565b62000fe95760405162461bcd60e51b81526004016200055b9062002a1b565b600084815260036020526040808220805460ff19166001179055815461ff001916610100178255517f5389de9593f75e6515eefa796bd2d3324759f441f2c9b2dcda0efb25190378ff9190a150505050565b6000805460ff161515600114620010665760405162461bcd60e51b81526004016200055b90620028e7565b60008581526003602052604090205460ff1615620010985760405162461bcd60e51b81526004016200055b90620029ee565b6040805160a060208201819052600a60c0830152693932b6b7bb32a832b2b960b11b60e083015230928201929092526001600160a01b0388166060820152608081018790527f0000000000000000000000000000000000000000000000000000000000000000918101919091526200112e90610100015b6040516020818303038152906040528051906020012085858562001969565b6200114d5760405162461bcd60e51b81526004016200055b9062002a1b565b6000858152600360205260409020805460ff19166001179055620011718662001d21565b604080516001600160a01b0388168152600160208201527fa9fac23eb012e72fbd1f453498e7069c380385436763ee2c1c057b170d88d9f991015b60405180910390a150600195945050505050565b6000805460ff161515600114620011eb5760405162461bcd60e51b81526004016200055b90620028e7565b60008581526003602052604090205460ff16156200121d5760405162461bcd60e51b81526004016200055b90620029ee565b6040805160a060208201819052600760c08301526630b2322832b2b960c91b60e083015230928201929092526001600160a01b0388166060820152608081018790527f0000000000000000000000000000000000000000000000000000000000000000918101919091526200129690610100016200110f565b620012b55760405162461bcd60e51b81526004016200055b9062002a1b565b6000858152600360205260409020805460ff19166001179055620012d98662001dc1565b50604080516001600160a01b0388168152600060208201527fa9fac23eb012e72fbd1f453498e7069c380385436763ee2c1c057b170d88d9f99101620011ac565b60005460ff161515600114620013445760405162461bcd60e51b81526004016200055b90620028e7565b60005460ff610100909104161515600114620013c95760405162461bcd60e51b815260206004820152603e60248201527f436f6e74726163742073686f756c6420626520707265706172656420666f722060448201527f6d6967726174696f6e20746f2075736520746869732066756e6374696f6e000060648201526084016200055b565b60008781526003602052604090205460ff1615620013fb5760405162461bcd60e51b81526004016200055b90620029ee565b6200143c30878988887f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b69695949392919062002b89565b6200145b5760405162461bcd60e51b81526004016200055b9062002a1b565b6000878152600360205260408120805460ff19166001179055600854905b818110156200151e576000600882815481106200149a576200149a62002c26565b60009182526020909120015460405163f2fde38b60e01b81526001600160a01b038b811660048301529091169150819063f2fde38b90602401600060405180830381600087803b158015620014ee57600080fd5b505af115801562001503573d6000803e3d6000fd5b50505050508080620015159062002c3c565b91505062001479565b508460005b81811015620015f757600088888381811062001543576200154362002c26565b90506020020160208101906200155a919062002201565b6040516370a0823160e01b8152306004820152909150620015e1908b906001600160a01b038416906370a0823190602401602060405180830381865afa158015620015a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015cf9190620029a2565b6001600160a01b038416919062001cea565b5080620015ee8162002c3c565b91505062001523565b50876001600160a01b031663835c19f3476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200163457600080fd5b505af115801562001649573d6000803e3d6000fd5b50506000805460ff1916905550506040516001600160a01b038a1681527fa2e7361c23d7820040603b83c0cd3f494d377bac69736377d75bb56c651a5098915060200162000ebe565b60005460ff161515600114620016bc5760405162461bcd60e51b81526004016200055b90620028e7565b60008481526003602052604090205460ff1615620016ee5760405162461bcd60e51b81526004016200055b90620029ee565b6001600160a01b03881660009081526005602052604090205460ff1615620017595760405162461bcd60e51b815260206004820152601e60248201527f455243323020746f6b656e206973206e6f742077686974656c6973746564000060448201526064016200055b565b6200179c3089898989897f0000000000000000000000000000000000000000000000000000000000000000604051602001620009b6979695949392919062002c58565b620017bb5760405162461bcd60e51b81526004016200055b9062002a1b565b5050506000908152600360209081526040808320805460ff1990811660019081179092556001600160a01b0390981684526005909252909120805490951617909355505050565b60005460ff1615156001146200182c5760405162461bcd60e51b81526004016200055b90620028e7565b600054610100900460ff1615620018575760405162461bcd60e51b81526004016200055b906200293a565b60003411620018a95760405162461bcd60e51b815260206004820152601f60248201527f4554482056414c55452053484f554c44204245204d4f5245205448414e20300060448201526064016200055b565b604080518281523460208201526000918101829052606081018290527f85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c89060800160405180910390a15050565b6040516001600160a01b0380851660248301528316604482015260648101829052620019639085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e65565b50505050565b600060016002541015620019b55760405162461bcd60e51b81526020600482015260126024820152717065657273436f756e7420746f6f206c6f7760701b60448201526064016200055b565b83518351811462001a155760405162461bcd60e51b8152602060048201526024808201527f7369676e6174757265436f756e7420616e642072206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016200055b565b8251811462001a735760405162461bcd60e51b8152602060048201526024808201527f7369676e6174757265436f756e7420616e642073206c656e677468206d69736d6044820152630c2e8c6d60e31b60648201526084016200055b565b60006003600160025462001a889190620029d2565b62001a94919062002ce1565b60025462001aa39190620029d2565b90508082101562001aef5760405162461bcd60e51b81526020600482015260156024820152746e6f7420656e6f756768207369676e61747572657360581b60448201526064016200055b565b6000808367ffffffffffffffff81111562001b0e5762001b0e62002221565b60405190808252806020026020018201604052801562001b38578160200160208202803683370190505b50905060005b8481101562001c6f57600062001bab8b8b848151811062001b635762001b6362002c26565b60200260200101518b858151811062001b805762001b8062002c26565b60200260200101518b868151811062001b9d5762001b9d62002c26565b602002602001015162001f3e565b6001600160a01b03811660009081526001602081905260409091205491925060ff909116151514158062001bfc57506001600160a01b03811660009081526004602052604090205460ff1615156001145b1562001c09575062001c5c565b8083858151811062001c1f5762001c1f62002c26565b6001600160a01b0392831660209182029290920181019190915291166000908152600490915260409020805460ff19166001908117909155909201915b62001c678162002c3c565b905062001b3e565b5060005b8281101562001cdc5760006004600084848151811062001c975762001c9762002c26565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562001cd48162002c3c565b905062001c73565b505010159695505050505050565b6040516001600160a01b03831660248201526044810182905262001d1c90849063a9059cbb60e01b906064016200192b565b505050565b6001600160a01b03811660009081526001602081905260409091205460ff1615151462001d885760405162461bcd60e51b81526020600482015260146024820152737065657220646f6573206e6f742065786973747360601b60448201526064016200055b565b6001600160a01b0381166000908152600160205260408120805460ff191690556002805490919062001dba9062002d04565b9091555050565b6001600160a01b03811660009081526001602052604081205460ff161562001e215760405162461bcd60e51b81526020600482015260126024820152711c19595c88185b1c9958591e48185919195960721b60448201526064016200055b565b6001600160a01b03821660009081526001602081905260408220805460ff191690911790556002805490919062001e589062002c3c565b9091555050600254919050565b600062001ebc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662001ff89092919063ffffffff16565b80519091501562001d1c578080602001905181019062001edd919062002d1e565b62001d1c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200055b565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018590526000908190605c0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801562001fe2573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b606062002009848460008562002013565b90505b9392505050565b606082471015620020765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200055b565b6001600160a01b0385163b620020cf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200055b565b600080866001600160a01b03168587604051620020ed919062002d42565b60006040518083038185875af1925050503d80600081146200212c576040519150601f19603f3d011682016040523d82523d6000602084013e62002131565b606091505b5091509150620021438282866200214e565b979650505050505050565b606083156200215f5750816200200c565b825115620021705782518084602001fd5b8160405162461bcd60e51b81526004016200055b919062002d60565b610f398062002d7683390190565b6001600160a01b0381168114620021b057600080fd5b50565b8035620021c0816200219a565b919050565b600080600060608486031215620021db57600080fd5b83359250602084013591506040840135620021f6816200219a565b809150509250925092565b6000602082840312156200221457600080fd5b81356200200c816200219a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002263576200226362002221565b604052919050565b600067ffffffffffffffff82111562002288576200228862002221565b5060051b60200190565b803560ff81168114620021c057600080fd5b600082601f830112620022b657600080fd5b81356020620022cf620022c9836200226b565b62002237565b82815260059290921b84018101918181019086841115620022ef57600080fd5b8286015b848110156200231557620023078162002292565b8352918301918301620022f3565b509695505050505050565b600082601f8301126200233257600080fd5b8135602062002345620022c9836200226b565b82815260059290921b840181019181810190868411156200236557600080fd5b8286015b8481101562002315578035835291830191830162002369565b600080600080600080600080610100898b031215620023a057600080fd5b620023ab89620021b3565b975060208901359650620023c260408a01620021b3565b9550620023d260608a01620021b3565b94506080890135935060a089013567ffffffffffffffff80821115620023f757600080fd5b620024058c838d01620022a4565b945060c08b01359150808211156200241c57600080fd5b6200242a8c838d0162002320565b935060e08b01359150808211156200244157600080fd5b50620024508b828c0162002320565b9150509295985092959890939650565b6000602082840312156200247357600080fd5b5035919050565b600082601f8301126200248c57600080fd5b813567ffffffffffffffff811115620024a957620024a962002221565b620024be601f8201601f191660200162002237565b818152846020838601011115620024d457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b0312156200250f57600080fd5b883567ffffffffffffffff808211156200252857600080fd5b620025368c838d016200247a565b995060208b01359150808211156200254d57600080fd5b6200255b8c838d016200247a565b98506200256b60408c0162002292565b975060608b0135965060808b0135955060a08b0135915080821115620023f757600080fd5b600080600080600080600080610100898b031215620025ae57600080fd5b8835975060208901359650620023c260408a01620021b3565b60008060008060808587031215620025de57600080fd5b84359350602085013567ffffffffffffffff80821115620025fe57600080fd5b6200260c88838901620022a4565b945060408701359150808211156200262357600080fd5b620026318883890162002320565b935060608701359150808211156200264857600080fd5b50620026578782880162002320565b91505092959194509250565b600080600080600060a086880312156200267c57600080fd5b853562002689816200219a565b945060208601359350604086013567ffffffffffffffff80821115620026ae57600080fd5b620026bc89838a01620022a4565b94506060880135915080821115620026d357600080fd5b620026e189838a0162002320565b93506080880135915080821115620026f857600080fd5b50620027078882890162002320565b9150509295509295909350565b60008083601f8401126200272757600080fd5b50813567ffffffffffffffff8111156200274057600080fd5b6020830191508360208260051b85010111156200275c57600080fd5b9250929050565b600080600080600080600060c0888a0312156200277f57600080fd5b873596506200279160208901620021b3565b9550604088013567ffffffffffffffff80821115620027af57600080fd5b620027bd8b838c0162002714565b909750955060608a0135915080821115620027d757600080fd5b620027e58b838c01620022a4565b945060808a0135915080821115620027fc57600080fd5b6200280a8b838c0162002320565b935060a08a01359150808211156200282157600080fd5b50620028308a828b0162002320565b91505092959891949750929550565b600080600080600080600080610100898b0312156200285d57600080fd5b6200286889620021b3565b9750602089013567ffffffffffffffff808211156200288657600080fd5b620028948c838d016200247a565b985060408b0135915080821115620028ab57600080fd5b620028b98c838d016200247a565b9750620028c960608c0162002292565b965060808b0135955060a08b0135915080821115620023f757600080fd5b60208082526033908201527f436f6e74726163742073686f756c6420626520696e697469616c697a6564207460408201527237903ab9b2903a3434b990333ab731ba34b7b760691b606082015260800190565b60208082526042908201527f436f6e74726163742073686f756c64206e6f742062652070726570617265642060408201527f666f72206d6967726174696f6e20746f2075736520746869732066756e63746960608201526137b760f11b608082015260a00190565b600060208284031215620029b557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620029e857620029e8620029bc565b92915050565b6020808252601390820152721d1e12185cda08185b1c9958591e481d5cd959606a1b604082015260600190565b6020808252601b908201527f50656572207369676e6174757265732061726520696e76616c69640000000000604082015260600190565b60005b8381101562002a6f57818101518382015260200162002a55565b50506000910152565b6000815180845262002a9281602086016020860162002a52565b601f01601f19169290920160200192915050565b61010080825260089082015267185919105cdcd95d60c21b6101208201526001600160a01b03881660208201526101406040820181905260009062002aee8184018a62002a78565b9050828103606084015262002b04818962002a78565b91505060ff861660808301528460a08301528360c08301528260e083015298975050505050505050565b60c08152600062002b4360c083018962002a78565b828103602084015262002b57818962002a78565b60ff97909716604084015250506001600160a01b03939093166060840152608083019190915260a09091015292915050565b60c0808252600790820152666d69677261746560c81b60e08201526001600160a01b038781166020808401919091528782166040840152606083018790526101006080840181905283018590526000916101208401918791845b8881101562002c0e57833562002bf9816200219a565b82168552938201939282019260010162002be3565b5050505060a092909201929092529695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162002c515762002c51620029bc565b5060010190565b6101008082526008908201526730b2322a37b5b2b760c11b6101208201526001600160a01b038881166020830152871660408201526101406060820181905260009062002ca88184018962002a78565b9050828103608084015262002cbe818862002a78565b60ff9690961660a0840152505060c081019290925260e090910152949350505050565b60008262002cff57634e487b7160e01b600052601260045260246000fd5b500490565b60008162002d165762002d16620029bc565b506000190190565b60006020828403121562002d3157600080fd5b815180151581146200200c57600080fd5b6000825162002d5681846020870162002a52565b9190910192915050565b6020815260006200200c602083018462002a7856fe60806040523480156200001157600080fd5b5060405162000f3938038062000f39833981016040819052620000349162000238565b85858560036200004584826200037f565b5060046200005483826200037f565b5060058054336101009081026001600160a81b031990921660ff9094169390931717908190556040519190046001600160a01b03169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36006819055620000c58383620000d1565b50505050505062000473565b6001600160a01b038216620000e557600080fd5b80600254620000f591906200044b565b6002556001600160a01b0382166000908152602081905260409020546200011e9082906200044b565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019b57600080fd5b81516001600160401b0380821115620001b857620001b862000173565b604051601f8301601f19908116603f01168101908282118183101715620001e357620001e362000173565b816040528381526020925086838588010111156200020057600080fd5b600091505b8382101562000224578582018301518183018401529082019062000205565b600093810190920192909252949350505050565b60008060008060008060c087890312156200025257600080fd5b86516001600160401b03808211156200026a57600080fd5b620002788a838b0162000189565b975060208901519150808211156200028f57600080fd5b506200029e89828a0162000189565b955050604087015160ff81168114620002b657600080fd5b60608801519094506001600160a01b0381168114620002d457600080fd5b809350506080870151915060a087015190509295509295509295565b600181811c908216806200030557607f821691505b6020821081036200032657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620003555750805b601f850160051c820191505b81811015620003765782815560010162000361565b5050505b505050565b81516001600160401b038111156200039b576200039b62000173565b620003b381620003ac8454620002f0565b846200032c565b602080601f831160018114620003eb5760008415620003d25750858301515b600019600386901b1c1916600185901b17855562000376565b600085815260208120601f198616915b828110156200041c57888601518255948401946001909101908401620003fb565b50858210156200043b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200046d57634e487b7160e01b600052601160045260246000fd5b92915050565b610ab680620004836000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379cc6790116100ad578063a9059cbb11610071578063a9059cbb14610269578063dd62ed3e1461027c578063f0dda65c146102b5578063f2fde38b146102c8578063fcec35a9146102db57600080fd5b806379cc6790146101fa5780638da5cb5b1461020d5780638f32d59b1461023657806395d89b411461024e578063a457c2d71461025657600080fd5b8063313ce567116100f4578063313ce5671461018c57806339509351146101a157806342966c68146101b457806370a08231146101c9578063715018a6146101f257600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102e4565b60405161013b91906108a9565b60405180910390f35b610157610152366004610913565b610376565b604051901515815260200161013b565b6002545b60405190815260200161013b565b61015761018736600461093d565b61038d565b60055460405160ff909116815260200161013b565b6101576101af366004610913565b6103df565b6101c76101c2366004610979565b610416565b005b61016b6101d7366004610992565b6001600160a01b031660009081526020819052604090205490565b6101c7610423565b6101c7610208366004610913565b6104ab565b60055461010090046001600160a01b03166040516001600160a01b03909116815260200161013b565b60055461010090046001600160a01b03163314610157565b61012e6104b9565b610157610264366004610913565b6104c8565b610157610277366004610913565b6104ff565b61016b61028a3660046109b4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c76102c3366004610913565b61050c565b6101c76102d6366004610992565b610545565b61016b60065481565b6060600380546102f3906109e7565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906109e7565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b5050505050905090565b600061038333848461057d565b5060015b92915050565b600061039a848484610605565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546103d59186916103d0908690610a37565b61057d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103839185906103d0908690610a4a565b61042033826106bd565b50565b60055461010090046001600160a01b0316331461045b5760405162461bcd60e51b815260040161045290610a5d565b60405180910390fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6104b58282610759565b5050565b6060600480546102f3906109e7565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103839185906103d0908690610a37565b6000610383338484610605565b60055461010090046001600160a01b0316331461053b5760405162461bcd60e51b815260040161045290610a5d565b6104b58282610799565b60055461010090046001600160a01b031633146105745760405162461bcd60e51b815260040161045290610a5d565b6104208161082f565b6001600160a01b03821661059057600080fd5b6001600160a01b0383166105a357600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03821661061857600080fd5b6001600160a01b03831660009081526020819052604090205461063c908290610a37565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461066c908290610a4a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016105f8565b6001600160a01b0382166106d057600080fd5b806002546106de9190610a37565b6002556001600160a01b038216600090815260208190526040902054610705908290610a37565b6001600160a01b03831660008181526020818152604080832094909455925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b61076382826106bd565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546104b59184916103d0908590610a37565b6001600160a01b0382166107ac57600080fd5b806002546107ba9190610a4a565b6002556001600160a01b0382166000908152602081905260409020546107e1908290610a4a565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161074d565b6001600160a01b03811661084257600080fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600060208083528351808285015260005b818110156108d6578581018301518582016040015282016108ba565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461090e57600080fd5b919050565b6000806040838503121561092657600080fd5b61092f836108f7565b946020939093013593505050565b60008060006060848603121561095257600080fd5b61095b846108f7565b9250610969602085016108f7565b9150604084013590509250925092565b60006020828403121561098b57600080fd5b5035919050565b6000602082840312156109a457600080fd5b6109ad826108f7565b9392505050565b600080604083850312156109c757600080fd5b6109d0836108f7565b91506109de602084016108f7565b90509250929050565b600181811c908216806109fb57607f821691505b602082108103610a1b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561038757610387610a21565b8082018082111561038757610387610a21565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220d96a4ac2182a8d03954d54f90ad66e15291264e94cc7145800b0056a32cd4d4564736f6c63430008110033a2646970667358221220300a2e4d79dd7e18e73f932150c220aa1b11004ad1c46b0d2479eeccd12a358564736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000e88f8313e61a97cec1871ee37fbbe2a8bf3ed1e400000000000000000000000040fd72257597aa14c7231a7b1aaa29fce868f677000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006c9e8391a0444c739e7e2edd37a2c6e3381b1cbf000000000000000000000000ef22d478a53bc8bbe854cef8ba2eb79c49a1a1710000000000000000000000006219d0ba6a0bafa69cd2b1b15633a3fd864dd3710000000000000000000000000000000000000000000000000000000000000005000000000000000000000000519c1001d550c0a1dae7d1fc220f7d14c2a521bb0000000000000000000000002e7b0d4f9b2eaf782ed3d160e3a0a4b1a7930ada000000000000000000000000c7d9c108d4e1dd1484d3e2568d7f74bfd763d3560000000000000000000000005e7f20e72c21f6d0bf0a2814fd4164176401cf8e000000000000000000000000c60d6662027f5797cf873bfe80bcf048e30fc35e00000000000000000000000000000000000000000000000000000000000000050200050000000000000000000000000000000000000000000000000000000000008bcfd2387d3fc453333557eecb0efe59fcba128769b2feefdd306e98e66440020008000000000000000000000000000000000000000000000000000000000000f2f4fda40a4bf1fc3769d156fa695532eec31e265d75068524462c0b80f674020009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a70000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000008ab7404063ec4dbcfd4598215992dc3f8ec853d7000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df00000000000000000000000027702a26126e0b3702af63ee09ac4d1a084ef628000000000000000000000000a1faa113cbe53436df28ff0aee54275c13b40975000000000000000000000000ff20817765cb7f73d4bde2e66e067e58d11095c20000000000000000000000008290333cef9e6d528dd5618fb97a76f268f3edd4000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e000000000000000000000000a9b1eb5908cfc3cdf91f9b8b3a7410859800909600000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b998000000000000000000000000f5d669627376ebd411e34b98f19c868c8aba5ada0000000000000000000000003472a5a71965499acd81997a54bba8d852c6e53d000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000ba11d00c5f74255f56a5e366f4f77f5a186d7f550000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c000000000000000000000000d2dda223b2617cb616c1580db421e4cfae6a8a85000000000000000000000000cb97e65f07da24d46bcdd078ebebd7c6e6e3d750000000000000000000000000cca0c9c383076649604ee31b20248bc04fdf61ca0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000056d811088235f11c8920698a204a5010a788f4b30000000000000000000000005d3a536e4d6dbd6114cc1ead35777bab948e3643000000000000000000000000aaaebe6fe48e54f431b0c390cfaf0b017d09d42d0000000000000000000000004f9254c83eb525f9fcf346490bbb3ed28a81c6670000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed50000000000000000000000003506424f91fd33084466f402d5d97f05f8e3b4af000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888000000000000000000000000115ec79f1de567ec68b7ae7eda501b406626478e0000000000000000000000002ba592f78db6436527729929aaf6c908497cb200000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b00000000000000000000000032a7c02e79c4ea1008dd6564b35f131428673c41000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd5200000000000000000000000035a18000230da775cac24873d00ff85bccded550000000000000000000000000f650c3d88d12db855b8bf7d11be6c55a4e07dcc900000000000000000000000041e5560054824ea6b0732e656e3ad64e20e94e450000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000003597bfd533a99c9aa083587b074434e61eb0a25800000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c941900000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd000000000000000000000000bf2179859fc6d5bee9bf9158632dc51678a4100e000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c000000000000000000000000bbc2ae13b23d715c30720f079fcd9b4a74093505000000000000000000000000d33d0eb1c0c0295c3a2409a9101dd511823bf217000000000000000000000000a0246c9032bc3a600820415ae600c6388619a14d000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca000000000000000000000000aea46a60368a7bd060eec7df8cba43b7ef41ad85000000000000000000000000ef3a930e1ffffacd2fc13434ac81bd278b0ecc8d000000000000000000000000f6ea0e60cee427b90aa36f327ee61d1d4cabc49f000000000000000000000000f8c3527cc04340b208c854e985240c02f7b7793f00000000000000000000000050d1c9771902476076ecfc8b2a83ad6b9355a4c9000000000000000000000000419d0d8bdd9af5e606ae2232ed285aff190e711b0000000000000000000000008c15ef5b4b21951d50e53e4fbda8298ffad250570000000000000000000000007dd9c5cba05e151c895fde1cf355c9a1d5da64290000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96000000000000000000000000b1f871ae9462f1b2c6826e88a7827e76f86751d4000000000000000000000000c944e90c64b2c07662a292be6244bdf05cda44a7000000000000000000000000e66747a101bff2dba3697199dcce5b743b4547590000000000000000000000000316eb71485b0ab14103307bf65a021042c6d3800000000000000000000000006c6ee5e31d828de241282b9606c8e98ea48526e2000000000000000000000000df574c24545e5ffecb9a659c229253d4111d87e1000000000000000000000000b705268213d593b8fd88d3fdeff93aff5cbdcfae000000000000000000000000d9ec3ff1f8be459bb9369b4e79e9ebcf7141c093000000000000000000000000f34960d9d60be18cc1d5afc1a6f012a723a2881100000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200000000000000000000000000cb4e8cafeda995da5cedfda5205bd5664a12b848000000000000000000000000ac1b818e9f1fb4e34413d631cb298fbc8a986f5200000000000000000000000067b6d479c7bb412c54e03dca8e1bc6740ce6b99c0000000000000000000000002af5d2ad76741191d15dfe7bf6ac92d4bd912ca30000000000000000000000003e9bc21c9b189c09df3ef1b824798658d5011937000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000b59490ab09a0f526cc7305822ac65f2ab12f972300000000000000000000000058b6a8a3302369daec383334672404ee733ab239000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba00000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc94200000000000000000000000008d967bb0134f2d07f7cfb6e246680c53927dd300000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb00000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba05900000000000000000000000009a3ecafa817268f77be1283176b946c4ff2e6080000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2000000000000000000000000f433089366899d83a9f26a773d59ec7ecf30355e0000000000000000000000005ca381bbfb58f0092df149bd3d243b08b9a8386e000000000000000000000000b62132e35a6c13ee1ee0f84dc5d40bad8d8152060000000000000000000000005cf04716ba20127f1e2297addcf4b5035000c9eb0000000000000000000000001776e1f26f98b1a5df9cd347953a26dd3cb46671000000000000000000000000a8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca000000000000000000000000d7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b000000000000000000000000967da4048cd07ab37855c090aaf366e4ce1b9f480000000000000000000000008207c1ffc5b6804f6024322ccf34f29c3541ae2600000000000000000000000075231f58b43240c9718dd58b4967c5114342a86c000000000000000000000000d26114cd6ee289accf82350c8d8487fedb8a0c07000000000000000000000000ff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa0000000000000000000000000258f474786ddfd37abce6df6bbb1dd5dfc4434a0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1000000000000000000000000f59ae934f6fe444afc309586cc60a84a0f89aaea0000000000000000000000006c5ba91642f10282b576d91922ae6448c9d52f4e00000000000000000000000089ab32156e46f46d02ade3fecbe5fc4243b9aaed0000000000000000000000009992ec3cf6a55b00978cddf2b27bc6882d88d1ec000000000000000000000000d4fa1460f537bb9085d22c7bccb5dd450ef28e3a000000000000000000000000ea26c4ac16d4a5a106820bc8aee85fd0b7b2b6640000000000000000000000004a220e6096b25eadb88358cb44068a324825467500000000000000000000000093dfaf57d986b9ca77df9376c50878e013d9c7c8000000000000000000000000d01cb3d113a864763dd3977fe1e725860013b0ed000000000000000000000000505f5a4ff10985fe9f93f2ae3501da5fe665f08a000000000000000000000000fe3e6a25e6b192a42a44ecddcd13796471735acf000000000000000000000000408e41876cccdc0f92210600ef50372656052a38000000000000000000000000eb4c2781e4eba804ce9a9803c67d0893436bb27d000000000000000000000000221657776846890989a759ba2973e427dff5c9bb0000000000000000000000009559aaa82d9649c7a7b220e7c461d2e74c9a3593000000000000000000000000c82eb6dea0c93edb8b697b89ad1b13d19469d635000000000000000000000000a1d6df714f91debf4e0802a542e13067f31b82620000000000000000000000003c3842c4d3037ae121d69ea1e7a0b61413be806c000000000000000000000000607f4c5bb672230e8672085532f7e901544a7375000000000000000000000000fa5047c9c78b8877af97bdcb85db743fd7313d4a000000000000000000000000ad4f86a25bbc20ffb751f2fac312a0b4d8f88c64000000000000000000000000b4efd85c19999d84251304bda99e90b92300bd930000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e80000000000000000000000003155ba85d5f96b2d030a4966af206230e46849cb00000000000000000000000008ad83d779bdf2bbe1ad9cc0f78aa0d24ab978020000000000000000000000003845badade8e6dff049820680d1f14bd3903a5d00000000000000000000000005e74c9036fb86bd7ecdcb084a0673efc32ea31cb00000000000000000000000000c83aecc790e8a4453e5dd3b0b4b3680501a7a7000000000000000000000000744d70fdbe2ba4cf95131626614a1763df805b9e000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f0000000000000000000000000ae055097c6d159879521c384f1d2123d1f195e6000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84000000000000000000000000be9375c6a420d2eeb258962efb95551a5b722803000000000000000000000000b64ef51c888972c908cfacf59b47c1afbc0ab8ac000000000000000000000000de7d85157d9714eadf595045cc12ca4a5f3e2adb000000000000000000000000e53ec727dbdeb9e2d5456c3be40cff031ab40a5500000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f510000000000000000000000006b3595068778dd592e39a122f4f5a5cf09c90fe2000000000000000000000000cc4304a31d09258b0029ea7fe63d032f52e44efe0000000000000000000000008ce9137d39326ad0cd6491fb5cc0cba0e089b6a9000000000000000000000000467bccd9d29f223bce8043b84e8c8b282827790f0000000000000000000000003a8cccb969a61532d1e6005e2ce12c200caece87000000000000000000000000888888848b652b3e3a0f34c96e00eec0f3a23f72000000000000000000000000aa7a9ca87d3694b5755f213b5d04094b8d0f0a6f00000000000000000000000088df592f8eb5d7bd38bfef7deb0fbc02cf3778a0000000000000000000000000c7283b66eb1eb5fb86327f08e1b5816b0720212b0000000000000000000000000000000000085d4780b73119b644ae5ecd22b376000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df0000000000000000000000008400d94a5cb0fa0d041a3788e395285d61c9ee5e00000000000000000000000004fa0d235c4abf4bcf4787af4cf447de572ef82800000000000000000000000061107a409fffe1965126aa456af679719695c69c0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000d13c7342e1ef687c5ad21b27c2b65d772cab5c8c0000000000000000000000008806926ab68eb5a7b909dcaf6fdbe5d93271d6e2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000674c6ad92fd080e4004b2312b45f796a192d27a0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a47c8bf37f92abed4a126bda807a7b7498661acd000000000000000000000000dc9ac3c20d1ed0b540df9b1fedc10039df13f99c0000000000000000000000005af2be193a6abca9c8817001f45744777db30756000000000000000000000000f411903cbc70a74d22900a5de66a2dda665072550000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c221b7e65ffc80de234bbb6667abdd46593d34f00000000000000000000000004691937a7508860f876c9c0a2a617e7d9e945d4b000000000000000000000000892a6f9df0147e5f079b0993f486f9aca3c878810000000000000000000000006fcb6408499a7c0f242e32d77eb51ffa1dd28a7e0000000000000000000000007de91b204c1c737bcee6f000aaa6569cf7061cb70000000000000000000000008798249c2e607446efb7ad49ec89dd1865ff42720000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000e4815ae53b124e7263f08dcdbbb757d41ed658c6000000000000000000000000aa602de53347579f86b996d2add74bb6f79462b2000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498
-----Decoded View---------------
Arg [0] : initialPeers (address[]): 0x6C9E8391a0444c739e7e2edd37A2C6e3381b1cbF,0xEf22D478a53bc8BBe854ceF8bA2eb79C49A1a171,0x6219D0BA6A0BAfA69CD2B1B15633a3FD864Dd371
Arg [1] : sidechainTokenAddresses (address[]): 0x519C1001D550C0a1DaE7d1fC220f7d14c2A521BB,0x2e7B0d4F9B2EaF782eD3D160e3a0a4b1a7930aDA,0xc7D9c108D4E1dD1484D3e2568d7f74bfD763d356,0x5E7F20e72C21f6D0Bf0A2814FD4164176401cf8e,0xC60D6662027F5797Cf873bFe80BcF048e30Fc35e
Arg [2] : sidechainAssetIds (bytes32[]): System.Byte[],System.Byte[],System.Byte[],System.Byte[],System.Byte[]
Arg [3] : erc20Addresses (address[]): 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9,0xADE00C28244d5CE17D72E40330B1c318cD12B7c3,0x8Ab7404063Ec4DBcfd4598215992DC3F8EC853d7,0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF,0x27702a26126e0B3702af63Ee09aC4d1A084EF628,0xa1faa113cbE53436Df28FF0aEe54275c13B40975,0xfF20817765cB7f73d4bde2e66e067E58D11095C2,0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4,0xa117000000f279D81A1D3cc75430fAA017FA5A2e,0xA9B1Eb5908CfC3cdf91F9B8B3a74108598009096,0x18aAA7115705e8be94bfFEBDE57Af9BFc265B998,0xF5D669627376EBd411E34b98F19C868c8ABA5ADA,0x3472A5A71965499acd81997a54BBA8D852C6E53d,0xba100000625a3754423978a60c9317c58a424e3D,0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55,0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C,0xD2dDa223b2617cB616c1580db421e4cFAe6a8a85,0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750,0xcca0c9c383076649604eE31b20248BC04FdF61cA,0x4Fabb145d64652a948d72533023f6E7A623C7C53,0x56d811088235F11C8920698a204A5010a788f4b3,0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643,0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d,0x4F9254C83EB525f9FCf346490bbb3ed28a81C667,0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5,0x3506424F91fD33084466F402d5D97f05F8e3b4AF,0xc00e94Cb662C3520282E6f5717214004A7f26888,0x115eC79F1de567eC68B7AE7eDA501b406626478e,0x2ba592F78dB6436527729929AAf6c908497cB200,0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b,0x32a7C02e79c4ea1008dD6564b35F131428673c41,0xD533a949740bb3306d119CC777fa900bA034cd52,0x35A18000230DA775CAc24873d00Ff85BccdeD550,0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9,0x41e5560054824eA6B0732E656E3Ad64E20e94E45,0x6B175474E89094C44Da98b954EedeAC495271d0F,0x3597bfD533a99c9aa083587B074434E61Eb0A258,0x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419,0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd,0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e,0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c,0xBBc2AE13b23d715c30720F079fcd9B4a74093505,0xd33D0EB1c0c0295c3A2409a9101dd511823Bf217,0xa0246c9032bC3A600820415aE600c6388619A14D,0x956F47F50A910163D8BF957Cf5846D573E7f87CA,0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85,0xef3A930e1FfFFAcd2fc13434aC81bD278B0ecC8d,0xF6eA0E60cee427B90aA36f327eE61d1d4CABC49F,0xf8C3527CC04340b208C854E985240c02F7B7793f,0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9,0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b,0x8c15Ef5b4B21951d50E53E4fbdA8298FFAD25057,0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429,0x6810e776880C02933D47DB1b9fc05908e5386b96,0xb1f871Ae9462F1b2C6826E88A7827e76f86751d4,0xc944E90C64B2c07662A292be6244BDf05Cda44a7,0xE66747a101bFF2dBA3697199DCcE5b743b454759,0x0316EB71485b0Ab14103307bf65a021042c6d380,0x6c6EE5e31d828De241282B9606C8e98Ea48526E2,0xdF574c24545E5FfEcb9a659c229253D4111d87e1,0xB705268213D593B8FD88d3FDEFF93AFF5CbDcfAE,0xD9Ec3ff1f8be459Bb9369b4E79e9Ebcf7141C093,0xf34960d9d60be18cC1D5Afc1A6F012A723a28811,0x85Eee30c52B0b379b046Fb0F85F4f3Dc3009aFEC,0xdd974D5C2e2928deA5F71b9825b8b646686BD200,0xCb4e8CafEDa995da5cEdfda5205BD5664a12b848,0xaC1B818E9F1Fb4e34413d631cB298FBc8A986f52,0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C,0x2AF5D2aD76741191D15Dfe7bF6aC92d4Bd912Ca3,0x3E9BC21C9b189C09dF3eF1B824798658d5011937,0x514910771AF9Ca656af840dff83E8264EcF986CA,0xb59490aB09A0f526Cc7305822aC65f2Ab12f9723,0x58b6A8A3302369DAEc383334672404Ee733aB239,0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD,0x5f98805A4E8be255a32880FDeC7F6728C6568bA0,0x0F5D2fB29fb7d3CFeE444a200298f468908cC942,0x08d967bb0134F2d07f7cfb6E246680c53927DD30,0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0,0x0CDF9acd87E940837ff21BB40c9fd55F68bba059,0x09a3EcAFa817268f77BE1283176B946C4ff2E608,0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2,0xF433089366899D83a9f26A773D59ec7eCF30355e,0x5Ca381bBfb58f0092df149bD3D243b08B9a8386e,0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206,0x5Cf04716BA20127F1E2297AdDCf4B5035000c9eb,0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671,0xa8c8CfB141A3bB59FEA1E2ea6B79b5ECBCD7b6ca,0xd7c49CEE7E9188cCa6AD8FF264C1DA2e69D4Cf3B,0x967da4048cD07aB37855c090aAF366e4ce1b9F48,0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26,0x75231F58b43240C9718Dd58B4967c5114342a86c,0xd26114cd6EE289AccF82350c8d8487fedB8A0C07,0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA,0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a,0x8E870D67F660D95d5be530380D0eC0bd388289E1,0xF59ae934f6fe444afC309586cC60a84a0F89Aaea,0x6c5bA91642F10282b576d91922Ae6448C9d52f4E,0x89Ab32156e46F46D02ade3FEcbe5Fc4243B9AAeD,0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC,0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a,0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664,0x4a220E6096B25EADb88358cb44068A3248254675,0x93dfaf57D986B9cA77Df9376c50878E013D9c7C8,0xD01cb3d113a864763DD3977FE1E725860013b0Ed,0x505f5a4fF10985FE9F93f2aE3501dA5fE665F08A,0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf,0x408e41876cCCDC0F92210600ef50372656052a38,0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D,0x221657776846890989a759BA2973e427DfF5C9bB,0x9559Aaa82d9649C7A7b220E7c461d2E74c9a3593,0xC82eb6dEa0c93EDb8B697B89ad1b13d19469D635,0xa1d6Df714F91DeBF4e0802A542E13067f31b8262,0x3c3842c4d3037Ae121d69eA1e7a0b61413BE806C,0x607F4C5BB672230e8672085532f7e901544a7375,0xfA5047c9c78B8877af97BDcb85Db743fD7313d4a,0xAd4f86a25bbc20FfB751f2FAC312A0B4d8F88c64,0xB4EFd85c19999D84251304bDA99E90B92300Bd93,0x8762db106B2c2A0bccB3A80d1Ed41273552616E8,0x3155BA85D5F96b2d030a4966AF206230e46849cb,0x08AD83D779BDf2BBE1ad9cc0f78aa0D24AB97802,0x3845badAde8e6dFF049820680d1F14bD3903a5d0,0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb,0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7,0x744d70FDBE2Ba4CF95131626614a1763DF805B9E,0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F,0x0Ae055097C6d159879521C384F1D2123D1f195e6,0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84,0xbE9375C6a420D2eEB258962efB95551A5b722803,0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC,0xDe7D85157d9714EADf595045CC12Ca4A5f3E2aDb,0xe53EC727dbDEB9E2d5456c3be40cFF031AB40A55,0x57Ab1ec28D129707052df4dF418D58a2D46d5f51,0x6B3595068778DD592e39A122f4f5a5cF09C90fE2,0xCC4304A31d09258b0029eA7FE63d032f52e44EFe,0x8CE9137d39326AD0cD6491fb5CC0CbA0e089b6A9,0x467Bccd9d29f223BcE8043b84E8C8B282827790F,0x3A8cCCB969a61532d1E6005e2CE12C200caeCe87,0x888888848B652B3E3a0f34c96E00EEC0F3a23F72,0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F,0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0,0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B,0x0000000000085d4780B73119b644AE5ecd22b376,0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF,0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e,0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828,0x61107a409fFFe1965126aa456Af679719695C69C,0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984,0xD13c7342e1ef687C5ad21b27c2b65D772cAb5C8c,0x8806926Ab68EB5a7b909DcAf6FdBe5d93271D6e2,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0x674C6Ad92Fd080e4004b2312b45f796a192D27a0,0xdAC17F958D2ee523a2206206994597C13D831ec7,0xa47c8bf37f92aBed4A126BDA807A7b7498661acD,0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c,0x5Af2Be193a6ABCa9c8817001F45744777Db30756,0xF411903cbC70a74d22900a5DE66A2dda66507255,0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599,0xc221b7E65FfC80DE234bbB6667aBDd46593D34F0,0x4691937a7508860F876c9c0a2a617E7d9E945D4B,0x892A6f9dF0147e5f079b0993F486F9acA3c87881,0x6FCb6408499a7c0f242E32D77EB51fFa1dD28a7E,0x7dE91B204C1C737bcEe6F000AAA6569Cf7061cb7,0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272,0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e,0xe4815AE53B124e7263F08dcDBBB757d41Ed658c6,0xaa602dE53347579f86b996D2Add74bb6F79462b2,0xE41d2489571d322189246DaFA5ebDe1F4699F498
Arg [4] : addressVAL (address): 0xe88f8313e61A97cEc1871EE37fBbe2a8bf3ed1E4
Arg [5] : addressXOR (address): 0x40FD72257597aA14C7231A7B1aaa29Fce868F677
Arg [6] : networkId (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000
-----Encoded View---------------
191 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [3] : 00000000000000000000000000000000000000000000000000000000000002e0
Arg [4] : 000000000000000000000000e88f8313e61a97cec1871ee37fbbe2a8bf3ed1e4
Arg [5] : 00000000000000000000000040fd72257597aa14c7231a7b1aaa29fce868f677
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 0000000000000000000000006c9e8391a0444c739e7e2edd37a2c6e3381b1cbf
Arg [9] : 000000000000000000000000ef22d478a53bc8bbe854cef8ba2eb79c49a1a171
Arg [10] : 0000000000000000000000006219d0ba6a0bafa69cd2b1b15633a3fd864dd371
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [12] : 000000000000000000000000519c1001d550c0a1dae7d1fc220f7d14c2a521bb
Arg [13] : 0000000000000000000000002e7b0d4f9b2eaf782ed3d160e3a0a4b1a7930ada
Arg [14] : 000000000000000000000000c7d9c108d4e1dd1484d3e2568d7f74bfd763d356
Arg [15] : 0000000000000000000000005e7f20e72c21f6d0bf0a2814fd4164176401cf8e
Arg [16] : 000000000000000000000000c60d6662027f5797cf873bfe80bcf048e30fc35e
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [18] : 0200050000000000000000000000000000000000000000000000000000000000
Arg [19] : 008bcfd2387d3fc453333557eecb0efe59fcba128769b2feefdd306e98e66440
Arg [20] : 0200080000000000000000000000000000000000000000000000000000000000
Arg [21] : 00f2f4fda40a4bf1fc3769d156fa695532eec31e265d75068524462c0b80f674
Arg [22] : 0200090000000000000000000000000000000000000000000000000000000000
Arg [23] : 00000000000000000000000000000000000000000000000000000000000000a7
Arg [24] : 0000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
Arg [25] : 000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3
Arg [26] : 0000000000000000000000008ab7404063ec4dbcfd4598215992dc3f8ec853d7
Arg [27] : 000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df
Arg [28] : 00000000000000000000000027702a26126e0b3702af63ee09ac4d1a084ef628
Arg [29] : 000000000000000000000000a1faa113cbe53436df28ff0aee54275c13b40975
Arg [30] : 000000000000000000000000ff20817765cb7f73d4bde2e66e067e58d11095c2
Arg [31] : 0000000000000000000000008290333cef9e6d528dd5618fb97a76f268f3edd4
Arg [32] : 000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e
Arg [33] : 000000000000000000000000a9b1eb5908cfc3cdf91f9b8b3a74108598009096
Arg [34] : 00000000000000000000000018aaa7115705e8be94bffebde57af9bfc265b998
Arg [35] : 000000000000000000000000f5d669627376ebd411e34b98f19c868c8aba5ada
Arg [36] : 0000000000000000000000003472a5a71965499acd81997a54bba8d852c6e53d
Arg [37] : 000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d
Arg [38] : 000000000000000000000000ba11d00c5f74255f56a5e366f4f77f5a186d7f55
Arg [39] : 0000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c
Arg [40] : 000000000000000000000000d2dda223b2617cb616c1580db421e4cfae6a8a85
Arg [41] : 000000000000000000000000cb97e65f07da24d46bcdd078ebebd7c6e6e3d750
Arg [42] : 000000000000000000000000cca0c9c383076649604ee31b20248bc04fdf61ca
Arg [43] : 0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c53
Arg [44] : 00000000000000000000000056d811088235f11c8920698a204a5010a788f4b3
Arg [45] : 0000000000000000000000005d3a536e4d6dbd6114cc1ead35777bab948e3643
Arg [46] : 000000000000000000000000aaaebe6fe48e54f431b0c390cfaf0b017d09d42d
Arg [47] : 0000000000000000000000004f9254c83eb525f9fcf346490bbb3ed28a81c667
Arg [48] : 0000000000000000000000004ddc2d193948926d02f9b1fe9e1daa0718270ed5
Arg [49] : 0000000000000000000000003506424f91fd33084466f402d5d97f05f8e3b4af
Arg [50] : 000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888
Arg [51] : 000000000000000000000000115ec79f1de567ec68b7ae7eda501b406626478e
Arg [52] : 0000000000000000000000002ba592f78db6436527729929aaf6c908497cb200
Arg [53] : 000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b
Arg [54] : 00000000000000000000000032a7c02e79c4ea1008dd6564b35f131428673c41
Arg [55] : 000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd52
Arg [56] : 00000000000000000000000035a18000230da775cac24873d00ff85bccded550
Arg [57] : 000000000000000000000000f650c3d88d12db855b8bf7d11be6c55a4e07dcc9
Arg [58] : 00000000000000000000000041e5560054824ea6b0732e656e3ad64e20e94e45
Arg [59] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [60] : 0000000000000000000000003597bfd533a99c9aa083587b074434e61eb0a258
Arg [61] : 00000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c9419
Arg [62] : 00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd
Arg [63] : 000000000000000000000000bf2179859fc6d5bee9bf9158632dc51678a4100e
Arg [64] : 000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c
Arg [65] : 000000000000000000000000bbc2ae13b23d715c30720f079fcd9b4a74093505
Arg [66] : 000000000000000000000000d33d0eb1c0c0295c3a2409a9101dd511823bf217
Arg [67] : 000000000000000000000000a0246c9032bc3a600820415ae600c6388619a14d
Arg [68] : 000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca
Arg [69] : 000000000000000000000000aea46a60368a7bd060eec7df8cba43b7ef41ad85
Arg [70] : 000000000000000000000000ef3a930e1ffffacd2fc13434ac81bd278b0ecc8d
Arg [71] : 000000000000000000000000f6ea0e60cee427b90aa36f327ee61d1d4cabc49f
Arg [72] : 000000000000000000000000f8c3527cc04340b208c854e985240c02f7b7793f
Arg [73] : 00000000000000000000000050d1c9771902476076ecfc8b2a83ad6b9355a4c9
Arg [74] : 000000000000000000000000419d0d8bdd9af5e606ae2232ed285aff190e711b
Arg [75] : 0000000000000000000000008c15ef5b4b21951d50e53e4fbda8298ffad25057
Arg [76] : 0000000000000000000000007dd9c5cba05e151c895fde1cf355c9a1d5da6429
Arg [77] : 0000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96
Arg [78] : 000000000000000000000000b1f871ae9462f1b2c6826e88a7827e76f86751d4
Arg [79] : 000000000000000000000000c944e90c64b2c07662a292be6244bdf05cda44a7
Arg [80] : 000000000000000000000000e66747a101bff2dba3697199dcce5b743b454759
Arg [81] : 0000000000000000000000000316eb71485b0ab14103307bf65a021042c6d380
Arg [82] : 0000000000000000000000006c6ee5e31d828de241282b9606c8e98ea48526e2
Arg [83] : 000000000000000000000000df574c24545e5ffecb9a659c229253d4111d87e1
Arg [84] : 000000000000000000000000b705268213d593b8fd88d3fdeff93aff5cbdcfae
Arg [85] : 000000000000000000000000d9ec3ff1f8be459bb9369b4e79e9ebcf7141c093
Arg [86] : 000000000000000000000000f34960d9d60be18cc1d5afc1a6f012a723a28811
Arg [87] : 00000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec
Arg [88] : 000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200
Arg [89] : 000000000000000000000000cb4e8cafeda995da5cedfda5205bd5664a12b848
Arg [90] : 000000000000000000000000ac1b818e9f1fb4e34413d631cb298fbc8a986f52
Arg [91] : 00000000000000000000000067b6d479c7bb412c54e03dca8e1bc6740ce6b99c
Arg [92] : 0000000000000000000000002af5d2ad76741191d15dfe7bf6ac92d4bd912ca3
Arg [93] : 0000000000000000000000003e9bc21c9b189c09df3ef1b824798658d5011937
Arg [94] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [95] : 000000000000000000000000b59490ab09a0f526cc7305822ac65f2ab12f9723
Arg [96] : 00000000000000000000000058b6a8a3302369daec383334672404ee733ab239
Arg [97] : 000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd
Arg [98] : 0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0
Arg [99] : 0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc942
Arg [100] : 00000000000000000000000008d967bb0134f2d07f7cfb6e246680c53927dd30
Arg [101] : 0000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb0
Arg [102] : 0000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba059
Arg [103] : 00000000000000000000000009a3ecafa817268f77be1283176b946c4ff2e608
Arg [104] : 0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2
Arg [105] : 000000000000000000000000f433089366899d83a9f26a773d59ec7ecf30355e
Arg [106] : 0000000000000000000000005ca381bbfb58f0092df149bd3d243b08b9a8386e
Arg [107] : 000000000000000000000000b62132e35a6c13ee1ee0f84dc5d40bad8d815206
Arg [108] : 0000000000000000000000005cf04716ba20127f1e2297addcf4b5035000c9eb
Arg [109] : 0000000000000000000000001776e1f26f98b1a5df9cd347953a26dd3cb46671
Arg [110] : 000000000000000000000000a8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca
Arg [111] : 000000000000000000000000d7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b
Arg [112] : 000000000000000000000000967da4048cd07ab37855c090aaf366e4ce1b9f48
Arg [113] : 0000000000000000000000008207c1ffc5b6804f6024322ccf34f29c3541ae26
Arg [114] : 00000000000000000000000075231f58b43240c9718dd58b4967c5114342a86c
Arg [115] : 000000000000000000000000d26114cd6ee289accf82350c8d8487fedb8a0c07
Arg [116] : 000000000000000000000000ff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa
Arg [117] : 0000000000000000000000000258f474786ddfd37abce6df6bbb1dd5dfc4434a
Arg [118] : 0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1
Arg [119] : 000000000000000000000000f59ae934f6fe444afc309586cc60a84a0f89aaea
Arg [120] : 0000000000000000000000006c5ba91642f10282b576d91922ae6448c9d52f4e
Arg [121] : 00000000000000000000000089ab32156e46f46d02ade3fecbe5fc4243b9aaed
Arg [122] : 0000000000000000000000009992ec3cf6a55b00978cddf2b27bc6882d88d1ec
Arg [123] : 000000000000000000000000d4fa1460f537bb9085d22c7bccb5dd450ef28e3a
Arg [124] : 000000000000000000000000ea26c4ac16d4a5a106820bc8aee85fd0b7b2b664
Arg [125] : 0000000000000000000000004a220e6096b25eadb88358cb44068a3248254675
Arg [126] : 00000000000000000000000093dfaf57d986b9ca77df9376c50878e013d9c7c8
Arg [127] : 000000000000000000000000d01cb3d113a864763dd3977fe1e725860013b0ed
Arg [128] : 000000000000000000000000505f5a4ff10985fe9f93f2ae3501da5fe665f08a
Arg [129] : 000000000000000000000000fe3e6a25e6b192a42a44ecddcd13796471735acf
Arg [130] : 000000000000000000000000408e41876cccdc0f92210600ef50372656052a38
Arg [131] : 000000000000000000000000eb4c2781e4eba804ce9a9803c67d0893436bb27d
Arg [132] : 000000000000000000000000221657776846890989a759ba2973e427dff5c9bb
Arg [133] : 0000000000000000000000009559aaa82d9649c7a7b220e7c461d2e74c9a3593
Arg [134] : 000000000000000000000000c82eb6dea0c93edb8b697b89ad1b13d19469d635
Arg [135] : 000000000000000000000000a1d6df714f91debf4e0802a542e13067f31b8262
Arg [136] : 0000000000000000000000003c3842c4d3037ae121d69ea1e7a0b61413be806c
Arg [137] : 000000000000000000000000607f4c5bb672230e8672085532f7e901544a7375
Arg [138] : 000000000000000000000000fa5047c9c78b8877af97bdcb85db743fd7313d4a
Arg [139] : 000000000000000000000000ad4f86a25bbc20ffb751f2fac312a0b4d8f88c64
Arg [140] : 000000000000000000000000b4efd85c19999d84251304bda99e90b92300bd93
Arg [141] : 0000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e8
Arg [142] : 0000000000000000000000003155ba85d5f96b2d030a4966af206230e46849cb
Arg [143] : 00000000000000000000000008ad83d779bdf2bbe1ad9cc0f78aa0d24ab97802
Arg [144] : 0000000000000000000000003845badade8e6dff049820680d1f14bd3903a5d0
Arg [145] : 0000000000000000000000005e74c9036fb86bd7ecdcb084a0673efc32ea31cb
Arg [146] : 00000000000000000000000000c83aecc790e8a4453e5dd3b0b4b3680501a7a7
Arg [147] : 000000000000000000000000744d70fdbe2ba4cf95131626614a1763df805b9e
Arg [148] : 000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f
Arg [149] : 0000000000000000000000000ae055097c6d159879521c384f1d2123d1f195e6
Arg [150] : 000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84
Arg [151] : 000000000000000000000000be9375c6a420d2eeb258962efb95551a5b722803
Arg [152] : 000000000000000000000000b64ef51c888972c908cfacf59b47c1afbc0ab8ac
Arg [153] : 000000000000000000000000de7d85157d9714eadf595045cc12ca4a5f3e2adb
Arg [154] : 000000000000000000000000e53ec727dbdeb9e2d5456c3be40cff031ab40a55
Arg [155] : 00000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f51
Arg [156] : 0000000000000000000000006b3595068778dd592e39a122f4f5a5cf09c90fe2
Arg [157] : 000000000000000000000000cc4304a31d09258b0029ea7fe63d032f52e44efe
Arg [158] : 0000000000000000000000008ce9137d39326ad0cd6491fb5cc0cba0e089b6a9
Arg [159] : 000000000000000000000000467bccd9d29f223bce8043b84e8c8b282827790f
Arg [160] : 0000000000000000000000003a8cccb969a61532d1e6005e2ce12c200caece87
Arg [161] : 000000000000000000000000888888848b652b3e3a0f34c96e00eec0f3a23f72
Arg [162] : 000000000000000000000000aa7a9ca87d3694b5755f213b5d04094b8d0f0a6f
Arg [163] : 00000000000000000000000088df592f8eb5d7bd38bfef7deb0fbc02cf3778a0
Arg [164] : 000000000000000000000000c7283b66eb1eb5fb86327f08e1b5816b0720212b
Arg [165] : 0000000000000000000000000000000000085d4780b73119b644ae5ecd22b376
Arg [166] : 000000000000000000000000dbdb4d16eda451d0503b854cf79d55697f90c8df
Arg [167] : 0000000000000000000000008400d94a5cb0fa0d041a3788e395285d61c9ee5e
Arg [168] : 00000000000000000000000004fa0d235c4abf4bcf4787af4cf447de572ef828
Arg [169] : 00000000000000000000000061107a409fffe1965126aa456af679719695c69c
Arg [170] : 0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984
Arg [171] : 000000000000000000000000d13c7342e1ef687c5ad21b27c2b65d772cab5c8c
Arg [172] : 0000000000000000000000008806926ab68eb5a7b909dcaf6fdbe5d93271d6e2
Arg [173] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [174] : 000000000000000000000000674c6ad92fd080e4004b2312b45f796a192d27a0
Arg [175] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [176] : 000000000000000000000000a47c8bf37f92abed4a126bda807a7b7498661acd
Arg [177] : 000000000000000000000000dc9ac3c20d1ed0b540df9b1fedc10039df13f99c
Arg [178] : 0000000000000000000000005af2be193a6abca9c8817001f45744777db30756
Arg [179] : 000000000000000000000000f411903cbc70a74d22900a5de66a2dda66507255
Arg [180] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [181] : 000000000000000000000000c221b7e65ffc80de234bbb6667abdd46593d34f0
Arg [182] : 0000000000000000000000004691937a7508860f876c9c0a2a617e7d9e945d4b
Arg [183] : 000000000000000000000000892a6f9df0147e5f079b0993f486f9aca3c87881
Arg [184] : 0000000000000000000000006fcb6408499a7c0f242e32d77eb51ffa1dd28a7e
Arg [185] : 0000000000000000000000007de91b204c1c737bcee6f000aaa6569cf7061cb7
Arg [186] : 0000000000000000000000008798249c2e607446efb7ad49ec89dd1865ff4272
Arg [187] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [188] : 000000000000000000000000e4815ae53b124e7263f08dcdbbb757d41ed658c6
Arg [189] : 000000000000000000000000aa602de53347579f86b996d2add74bb6f79462b2
Arg [190] : 000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingOVERVIEW
SORA is an on-chain governance system based around the XOR token that allows producers to make proposals for funding and all token holders make decisions on how to allocate XOR so that the best goods and services get created.
Multichain Portfolio | 30 Chains
Chain Token Portfolio % Price Amount Value ETH Ether (ETH)56.20% $3,582.8 234.4273 $839,905.13 ETH 27.74% $0.999475 414,764.0232 $414,546.27 ETH 6.38% $0.998551 95,526.8016 $95,388.38 ETH 1.82% $94,884 0.2866 $27,189.08 ETH 1.21% $19.7 915.098 $18,027.43 ETH 1.17% $0.998915 17,502.0869 $17,483.1 ETH 0.54% $0.978653 8,298.535 $8,121.39 ETH 0.50% $0.000001 12,522,534,378.113 $7,528.43 ETH 0.46% $221.67 31.0756 $6,888.52 ETH 0.44% $13.04 499.2669 $6,510.44 ETH 0.40% $0.756814 7,905.0364 $5,982.64 ETH 0.39% $91,014 0.0644 $5,862.57 ETH 0.29% $0.158704 27,218.019 $4,319.61 ETH 0.29% $0.998683 4,320.0823 $4,314.39 ETH 0.29% $0.579472 7,378.4641 $4,275.61 ETH 0.17% $8.78 284.236 $2,495.59 ETH 0.15% $0.010263 222,461.0762 $2,283.12 ETH 0.13% $0.603885 3,255.9391 $1,966.21 ETH 0.12% $1.23 1,475.1263 $1,814.41 ETH 0.12% $0.004562 387,590.6678 $1,768.12 ETH 0.09% $353 3.6117 $1,274.94 ETH 0.08% $0.833174 1,496.2851 $1,246.67 ETH 0.08% $2.23 548.1205 $1,222.31 ETH 0.08% $0.27148 4,375.025 $1,187.73 ETH 0.07% $0.003085 347,265.0414 $1,071.18 ETH 0.07% $0.177129 6,004.2006 $1,063.52 ETH 0.07% $0.697556 1,462.332 $1,020.06 ETH 0.06% $0.00649 146,190.07 $948.8 ETH 0.06% $0.947263 937.0466 $887.63 ETH 0.05% $75.67 10.8496 $820.99 ETH 0.05% $1 783.0405 $783.04 ETH 0.05% $1.27 589.4182 $748.56 ETH 0.04% $0.388657 1,569.4466 $609.98 ETH 0.04% $1,789.58 0.3336 $596.96 ETH 0.04% $53.72 10.394 $558.37 ETH 0.04% $0.001649 336,033.0066 $554.03 ETH 0.04% $1.42 373.4424 $528.63 ETH 0.03% $3.16 132.9504 $420.12 ETH 0.03% $7,751.19 0.0493 $382.11 ETH 0.02% $0.004381 80,713.6046 $353.57 ETH 0.02% $0.130774 2,212.9588 $289.4 ETH 0.02% $0.659628 433.1219 $285.7 ETH 0.01% $0.412001 503.4634 $207.43 ETH <0.01% $18.62 7.5776 $141.1 ETH <0.01% $0.024675 2,844.1408 $70.18 ETH <0.01% $0.050582 1,217.236 $61.57 ETH <0.01% $0.179995 319.5939 $57.53 ETH <0.01% $0.045069 1,243.1325 $56.03 ETH <0.01% $0.007207 7,458.2718 $53.75 ETH <0.01% $0.166436 320.5249 $53.35 ETH <0.01% $2.45 14.9778 $36.7 ETH <0.01% $14.57 2.0815 $30.33 ETH <0.01% $3.77 7.1912 $27.11 ETH <0.01% $0.041046 566.4 $23.25 ETH <0.01% $0.094386 242.7952 $22.92 ETH <0.01% $0.038477 306.0914 $11.78 ETH <0.01% $0.13654 84.5386 $11.54 ETH <0.01% $6.41 1.5007 $9.62 ETH <0.01% $0.028253 137.6502 $3.89 ETH <0.01% $0.993486 3.5977 $3.57 ETH <0.01% $0.636618 3 $1.91 ETH <0.01% $0.001029 1,000 $1.03 ETH <0.01% $0.780964 0.7465 $0.5829 ETH <0.01% $0.730499 0.5 $0.3652 ETH <0.01% $0.032272 6.8 $0.2194 ETH <0.01% $0.000475 430.6793 $0.2046 POL <0.01% $0.579189 6.3887 $3.7 Loading...Loading[ 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.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to VerbatimInvalidDeduplication (low-severity), FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.SignIn
Address Cards
To use this feature, please login to your Etherscan account and return to this page.Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.