Ready to simplify your web3 experience? Try the all-in-one web3 app trusted by millions worldwide.
Purchase 100+ cryptocurrencies instantly, with Visa/Mastercard, Google/Apple Pay, and a variety of other funding methods.
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
9 years old Licensed Crypto Casino, Instant Withdraw 24/7, 6000+ Slots available, Paypal Deposit, Instant Live Support 24/7, 30% Rakeback.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Play 100s of games anonymously with all major cryptos. Join CryptoWins & start winning!
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
Overview
ETH Balance
Eth Value
$0.00Token Holdings
Could not find any matches!
- ERC-20 Tokens (>200)0.20489123 CLEVCLever Token (CLEV)$1.06@5.153.60384603 CTRConcentrator... (CTR)$1.02@0.28320.00261361 AAVEAave Token (AAVE)$0.39@150.2175.17671523 AIOZAIOZ Network (AIOZ)$35.67@0.47444.64243057 ALTAltLayer Tok... (ALT)$0.47@0.1020 AMPLAmpleforth (AMPL)$0.00@1.220.00040043 ankrETHAnkr Staked ... (ankrET...)$1.11@2,771.583.02950249 ANTAragon Netwo... (ANT)$18.18@6.0016.38292669 AURAAura (AURA)$5.59@0.34119.342123 AXLAxelar (AXL)$5.91@0.63233.12999664 BALBalancer (BAL)$5.92@1.890.36083398 B-80BAL-20WETHBalancer 80 ... (B-80BA...)$2.40@6.6618.26992626 cEURCelo Euro (W... (cEUR)$20.10@1.100.00041172 cbETHCoinbase Wra... (cbETH)$1.06@2,572.80139.04101742 cvxPrismaConvex Prism... (cvxPri...)$3.68@0.02650.15746733 CVXConvex Token (CVX)$0.31@1.95680.00000819 yvCurve-3Crypto-fCurve 3Crypt... (yvCurv...)8.05152899 yvCurve-3EUR-fCurve 3EUR F... (yvCurv...)1.97439588 yvCurve-agEUR-EUROC-fCurve agEUR-... (yvCurv...)0.00033643 yvCurve-alETHCurve alETH ... (yvCurv...)0.04704032 yvCurve-APEUSDBP3CRV-f-fCurve APEUSD... (yvCurv...)0.00282314 yvCurve-cbETH-fCurve cbETH ... (yvCurv...)0.01011295 yvCurve-CRV-ETH-fCurve CRV-ET... (yvCurv...)0.00253361 yvCurve-crvGEARETH-f-fCurve crvGEA... (yvCurv...)0.0000039 yvCurve-crvWSBTC-fCurve crvWSB... (yvCurv...)0.01042698 yvCurve-CVX-ETH-fCurve CVX-ET... (yvCurv...)3.76279227 yvCurve-cvxCRVCurve cvxCRV... (yvCurv...)5.12779797 yvCurve-DOLAFRAXBP3CRV-f-fCurve DOLAFR... (yvCurv...)0.00315048 yvCurve-rETHCurve rETH P... (yvCurv...)0.06079866 yvCurve-sdFXSFXS-f-fCurve sdFXSF... (yvCurv...)0.00115624 yvCurve-sdYFIYFI-f-fCurve sdYFIY... (yvCurv...)0.00913806 yvCurve-sETH-fCurve sETH F... (yvCurv...)0.00046485 yvCurve-stETH-fCurve stETH ... (yvCurv...)0 yvCurve-YFIETHCurve YFI-ET... (yvCurv...)0.1632618 3CrvCurve.fi DAI... (3Crv)$0.17@1.0350.2339485 sdFXSFXS-fCurve.fi Fac... (sdFXSF...)33.67167285 crvFRAXCurve.fi FRA... (crvFRA...)$33.86@1.005644.79414611 crvUSDCurve.Fi USD... (crvUSD)$44.79@0.99990.00999928 DUSDDavos.xyz US... (DUSD)$0.01@0.9921138.28988805 DGDecentral Ga... (DG)$2.01@0.01460.10602676 USDDDecentralize... (USDD)$0.11@0.996811.16880773 USXdForce USD (USX)$11.11@0.994626.49371109 DOLADola USD Sta... (DOLA)$26.44@0.99810 EBTCeBTC (EBTC)$0.00@60,905.0033.59697662 eUSDElectronic D... (eUSD)$33.54@0.99830.00097611 ETHxETHx (ETHx)$2.42@2,479.458.17749353 EURAEURA (previo... (EURA)$9.00@1.100.00357323 Renzo Restaked ETHezETH (Renzo ...)$8.66@2,424.736.14177145 fxUSDf(x) USD (fxUSD)$6.14@0.99910.19423288 FETFetch (FET)$0.27@1.3818.53951867 FRAXFrax (FRAX)$18.49@0.99710.00740081 frxETHFrax Ether (frxETH)$17.55@2,371.0961.40701061 FXSFrax Share (FXS)$2.73@1.9488.56477903 GMEEGAMEE (GMEE)$1.02@0.0116630.68536865 GEARGearbox (GEAR)$4.09@0.006514.86134475 GELGelato Netwo... (GEL)$1.93@0.130.03844943 GHOGho Token (GHO)$0.04@1.000.00000392 gOHMGovernance O... (gOHM)$0.02@4,108.8232.40632506 GRTGraph Token (GRT)$5.02@0.15483.81584126 GRAIGravita Debt... (GRAI)$3.74@0.9816.79069281 HFTHashflow (HFT)$0.97@0.14260.02604302 ILVIlluvium (ILV)$0.95@36.534.58759902 INSTInstadapp (INST)$4.49@0.97960.05430429 INVInverse DAO (INV)$1.19@21.870.00024937 pETHJPEG’d ETH (pETH)$0.60@2,412.460.00808215 weETHkKing Karak L... (weETHk)3.41837337 xETHLeveraged ET... (xETH)$5.71@1.672.19517706 LDOLido DAO Tok... (LDO)$2.25@1.0260.00417502 yvLINKLINK yVault (yvLINK)$0.05@11.170 LOOKSLooksRare To... (LOOKS)$0.00@0.04070.68477112 lp-yCRVv2LP Yearn CRV... (lp-yCR...)$0.82@1.200.2891747 LQTYLQTY (LQTY)$0.24@0.81651.63955344 yvLUSDLUSD yVault (yvLUSD)$1.89@1.158.87827256 MIMMagic Intern... (MIM)$8.88@0.99970.44207858 FOLDManifold Fin... (FOLD)$1.73@3.91210.67066148 MASQMASQ (MASQ)$0.13@0.19610.21789713 MetisMetis Token (Metis)$7.33@33.6416.92372195 yvmkUSD-AmkUSD yVault... (yvmkUS...)6.0412347 EUReMonerium EUR... (EURe)$6.67@1.1041.00263109 USDMMountain Pro... (USDM)$1.00@1.00010.00276998 mswETHmswETH (mswETH)$7.44@2,684.310.00133475 NMRNumeraire (NMR)$0.02@13.850.52301235 OHMOlympus (OHM)$8.10@15.494.17786582 ONDOOndo (ONDO)$2.88@0.68962.30087158 POOLPoolTogether (POOL)$0.72@0.31291.13832908 PRIMEPrime (PRIME)$11.33@9.954.4037031 PRISMAPrisma Gover... (PRISMA)$0.12@0.027312.64761338 mkUSDPrisma mkUSD (mkUSD)$12.60@0.996133.64762566 ULTRAPrisma ULTRA... (ULTRA)$35.36@1.0510.21702476 PROPCPropchain To... (PROPC)$0.24@1.12190.01397655 QNTQuant (QNT)$0.97@69.220.22689454 RR Stablecoin (R)1.5873608 RAIRai Reflex I... (RAI)$4.79@3.026.01622872 RAILRail (RAIL)$5.09@0.846382.04402518 RLBRollbit Coin (RLB)$6.99@0.08520.00040821 rswETHrswETH (rswETH)$0.99@2,416.95431.68732515 SHIBSHIBA INU (SHIB)$0.00@0.0033.01864655 SiloSilo Governa... (Silo)$0.91@0.02747.06909417 SISIREN (SI)$0.29@0.04090.52145245 SDStader (SD)$0.22@0.42316.33392675 sdCRVStake DAO CR... (sdCRV)$4.19@0.25669.56428348 SDTStake DAO To... (SDT)$2.36@0.246848.59838132 st-yCRVStaked Yearn... (st-yCR...)$22.88@0.47080.00319812 st-yETHStaked Yearn... (st-yET...)$7.96@2,490.4039.88539244 SWISEStakeWise (SWISE)$0.63@0.01581.12228894 STGStargateToke... (STG)$0.32@0.28660.00079482 stETHstETH (stETH)$1.89@2,379.1234.11462846 SUPERSuperFarm (SUPER)$36.13@1.0590.00565241 swETHswETH (swETH)$14.37@2,542.39370.03264528 sUSDSynth sUSD (sUSD)$0.03@0.99961.63696318 SNXSynthetix Ne... (SNX)$2.24@1.370.00031767 tBTCtBTC v2 (tBTC)$19.43@61,174.00218.37572596 TEMPTempus (TEMP)0.77268199 UMAUMA Voting T... (UMA)$2.30@2.981.569866 yvUSDCUSDC yVault (yvUSDC)$1.73@1.105.4091832 USDeUSDe (USDe)$5.40@0.99876.938008 yvUSDTUSDT yVault (yvUSDT)$7.47@1.0760 USD0Usual USD (USD0)$0.00@1.000 VCXVaultCraft (VCX)$0.00@0.0290.00000001 yvWBTCWBTC yVault (yvWBTC)$0.00@62,552.000.01183591 yvWETHWETH yVault (yvWETH)$30.33@2,562.940.52474921 WOOWOO (WOO)$0.08@0.16120.00073888 weETHWrapped eETH (weETH)$1.84@2,492.450.05228128 SOLWrapped SOL ... (SOL)$7.26@138.8181,873.84364671 XENXEN Crypto (XEN)$0.01@0.000.00011029 XMONXMON (XMON)$0.05@428.140.00345773 yETHYearn Ether (yETH)$8.20@2,371.09308.57659537 yPRISMAYearn PRISMA (yPRISM...)$8.02@0.0260.00083993 YFIyearn.financ... (YFI)$4.16@4,951.950.00000363 yvYFIYFI yVault (yvYFI)$0.02@5,011.4412.36177736 ACXAcross Proto... (ACX)$3.11@0.251714.10000396 BLURBlur (BLUR)$2.82@0.199929.98846688 BUSDBUSD (BUSD)$29.82@0.994321.03595951 cDAICompound Dai (cDAI)$0.50@0.02380 COWCoW Protocol... (COW)$0.00@0.265884.89880129 CRVCurve DAO To... (CRV)$22.15@0.26090.89149218 DAIDai Stableco... (DAI)$0.89@0.99960.04476405 ENSEthereum Nam... (ENS)$0.75@16.695.45832442 FTMFantom Token (FTM)$3.33@0.61093.86 GUSDGemini dolla... (GUSD)$3.86@0.99950.00513023 MKRMaker (MKR)$7.45@1,452.645.94390533 USDPPax Dollar (USDP)$5.94@0.99995.88093466 PENDLEPendle (PENDLE)$22.05@3.750.41996508 RPLRocket Pool (RPL)$4.11@9.795.003012 USDTTether USD (USDT)$5.00@0.99930.17875261 TUSDTrueUSD (TUSD)$0.18@0.99496.767256 USDCUSDC (USDC)$6.76@0.99930.0013397 WETHWrapped Ethe... (WETH)$3.18@2,377.08250.00233073 wstETHWrapped liqu... (wstETH)$6.54@2,806.709,283 $ ETH35.com - Visit to claim bonus rewards$ ETH35.com ($ ETH3...)27.82308228 AJNAAjnaToken$0.14@0.0049100.04738809 ASTOAltered State Machine Utility Token$1.16@0.01150.46641255 APWAPWine Token$0.09@0.1926.74562889 BAL-20WETH-80LITBalancer 20 ... (BAL-20...)0.00000826 bb-a-USDBalancer Aav... (bb-a-U...)0.32484895ERC20 ***0.3752457ERC20 ***0.00077982 bb-a-WETHBalancer Aav... (bb-a-W...)0.28833158 B-wjAura-wETHBalancer wjA... (B-wjAu...)0.72476277 BaoUSDBaoUSD (BaoUSD)0.9857717 bentCVXBent CVX (bentCV...)0.15677762 bLUSDbLUSD$0.20@1.250.10754511 BONEBONE SHIBASWAP$0.04@0.40450.0733519 BTRFLYBTRFLY$9.34@127.3098,778.71168144 BYTEByte$1.33@0.000.00043144 cbETH-wstETH-BPTcbETH-wstETH... (cbETH-...)12.39363838 clevCVXCLever CVX (clevCV...)11.67454606 clevUSDCLever USD (clevUS...)26.26219411 COILCoil$13.92@0.529913.31970261 cTUSDCompound Tru... (cTUSD)0.31318888 CNCConic Finance Token$0.06@0.20196.39155338 CVGConvergence$0.01@0.00140.15460689 cvxFXNConvex FXN$10.16@65.730.00305753 yvCurve-clevCVX-f-fCurve clevCV... (yvCurv...)0.01228193 yvCurve-CLEVETH-f-fCurve CLEVET... (yvCurv...)0.00385731 crvCRVETHCurve CRV-ET... (crvCRV...)0.0005943ERC20 ***0.00001283ERC20 ***0.0043529ERC20 ***32.65681546 yvCurve-crvUSDUSDP-f-fCurve crvUSD... (yvCurv...)0.44394442 crvCVXETHCurve CVX-ET... (crvCVX...)30.32402333 yvCurve-cvxCRVv2-fCurve cvxCRV... (yvCurv...)0.00094565 yvCurve-dgnETHETH+-fCurve dgnETH... (yvCurv...)0.0028702 yvCurve-dYFIETH-f-fCurve dYFIET... (yvCurv...)0.00034005 yvCurve-ETH+-fCurve ETH+ F... (yvCurv...)0.31327814 crvEURTUSDCurve EURT-3... (crvEUR...)0.08915647ERC20 ***0.03442182 yvCurve-LDOETH-f-fCurve LDOETH... (yvCurv...)0 yvCurve-mkcrvUSD-f-fCurve mkcrvU... (yvCurv...)0 yvCurve-msUSDFRAX3CRV-f-fCurve msUSDF... (yvCurv...)0.02683573 yvCurve-PRISMAETH-f-fCurve PRISMA... (yvCurv...)3.73674547 yvCurve-pUSDFRAXBP3CRV-f-fCurve pUSDFR... (yvCurv...)0ERC20 ***0.00000726 yvCurve-sdYFIpool-f-fCurve sdYFIp... (yvCurv...)0.0060493 yvCurve-STG-USDCCurve STG-USDC Pool yVault0.00721055 crvTETHCurve T-ETH (crvTET...)0.00432699 yvCurve-yETH-f-fCurve yETH-f... (yvCurv...)9.18075432 dusd3CRVCurve.fi DUS... (dusd3C...)0.00434008 rCRVCurve.fi ETH... (rCRV)0.00537766 eCRVCurve.fi ETH... (eCRV)NFT Tokens (39)ether-origin.comether-origin.comERC-1155claim rewards on fetchevent.netfetchevent.netERC-1155ipfseth.com Withdrawal NFTipfseth.com Withdrawal NFTERC-1155claim rewards on o-ether.orgo-ether.orgERC-1155claim rewards on shibprotocol.comshibprotocol.comERC-1155claim rewards on snxtoken.comsnxtoken.comERC-1155debridgeth.comWithdrawal Badge debridgeth.comERC-1155debridgeth.comWithdrawal Badge debridgeth.comERC-1155Withdrawal NFT originethers.commWithdrawal NFT originethers.comERC-1155Withdrawal NFT pufether.orgWithdrawal NFT pufether.orgERC-1155Withdrawal NFT puffereth.comWithdrawal NFT puffereth.comERC-1155Let's Go!🎁ERC-1155ERC-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]
- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 1,400 transactions
Transaction Hash MethodBlockFromToSweep 20480604 2024-08-08 1:33:11 57 days ago 1723080791 IN 0 ETH$0.00 0.0003293 1.47779526 Sweep 20465004 2024-08-05 21:19:11 59 days ago 1722892751 IN 0 ETH$0.00 0.00028154 5.54372192 Sweep 20434924 2024-08-01 16:35:11 63 days ago 1722530111 IN 0 ETH$0.00 0.00189028 27.8450291 Sweep 20422717 2024-07-30 23:41:47 65 days ago 1722382907 IN 0 ETH$0.00 0.0005744 2.62208803 Sweep 20419703 2024-07-30 13:35:11 65 days ago 1722346511 IN 0 ETH$0.00 0.00052495 8.7566763 Sweep 20363937 2024-07-22 18:44:11 73 days ago 1721673851 IN 0 ETH$0.00 0.0002539 4.99952885 Sweep 20316519 2024-07-16 3:55:35 80 days ago 1721102135 IN 0 ETH$0.00 0.00019286 4.48117812 Sweep 20287138 2024-07-12 1:27:11 84 days ago 1720747631 IN 0 ETH$0.00 0.00023345 4.59677508 Sweep 20271383 2024-07-09 20:40:23 86 days ago 1720557623 IN 0 ETH$0.00 0.00016772 4.17924242 Sweep 20267811 2024-07-09 8:41:23 86 days ago 1720514483 IN 0 ETH$0.00 0.0002309 4.54658361 Sweep 20216094 2024-07-02 3:17:23 94 days ago 1719890243 IN 0 ETH$0.00 0.00062222 3.14083621 Sweep 20206462 2024-06-30 19:02:23 95 days ago 1719774143 IN 0 ETH$0.00 0.00024013 4.63418825 Sweep 20206456 2024-06-30 19:01:11 95 days ago 1719774071 IN 0 ETH$0.00 0.00023405 4.51691067 Sweep 20206447 2024-06-30 18:59:23 95 days ago 1719773963 IN 0 ETH$0.00 0.00022162 4.27697942 Sweep 20206442 2024-06-30 18:58:23 95 days ago 1719773903 IN 0 ETH$0.00 0.00021965 4.23887563 Sweep 20206432 2024-06-30 18:56:23 95 days ago 1719773783 IN 0 ETH$0.00 0.00021251 4.10125364 Sweep 20206427 2024-06-30 18:55:23 95 days ago 1719773723 IN 0 ETH$0.00 0.00020824 4.01879002 Sweep 20179465 2024-06-27 0:33:23 99 days ago 1719448403 IN 0 ETH$0.00 0.00022096 4.35097295 Sweep 20171791 2024-06-25 22:50:23 100 days ago 1719355823 IN 0 ETH$0.00 0.00013274 3.36267572 Sweep 20149319 2024-06-22 19:26:23 103 days ago 1719084383 IN 0 ETH$0.00 0.00015615 3.01346524 Sweep 20149309 2024-06-22 19:24:23 103 days ago 1719084263 IN 0 ETH$0.00 0.00015576 3.00600506 Sweep 20149304 2024-06-22 19:23:23 103 days ago 1719084203 IN 0 ETH$0.00 0.00015621 3.01459374 Sweep 20149294 2024-06-22 19:21:23 103 days ago 1719084083 IN 0 ETH$0.00 0.0001542 2.97589431 Sweep 20149289 2024-06-22 19:20:23 103 days ago 1719084023 IN 0 ETH$0.00 0.00015164 2.92651753 Sweep 20149279 2024-06-22 19:18:23 103 days ago 1719083903 IN 0 ETH$0.00 0.0001638 3.16121442 View more zero value Internal Transactions in Advanced View mode
Advanced mode:Loading...LoadingThis contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.Contract Name:TradeHandler
Compiler Versionv0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: AGPL-3.0 pragma solidity 0.8.17; import "./VM.sol"; import "./TradeHandlerHelper.sol"; /** @title Trade Handler @author yearn.finance @notice TradeHandler is in charge of tracking which strategy wants to do certain trade. The strategy registers what they have and what they want and wait for an async trade. TradeHandler trades are executed by mechs through a weiroll VM. */ contract TradeHandler is VM { address payable public governance; address payable public pendingGovernance; // Treasury multisig for sweeps address payable public treasury; // COW protocol settlement contract address. address public settlement; // Mechs are addresses other than `settlement` that are authorized to // to call `execute()` mapping(address => bool) public mechs; // Solvers are EOAs authorised by COW protocol's settlement contract to // settle batches won at an auction mapping(address => bool) public solvers; event UpdatedSettlement(address settlement); event UpdatedTreasury(address treasury); event UpdatedGovernance(address governance); event AddedMech(address mech); event RemovedMech(address mech); event AddedSolver(address solver); event RemovedSolver(address solver); event TradeEnabled( address indexed seller, address indexed tokenIn, address indexed tokenOut ); event TradeDisabled( address indexed seller, address indexed tokenIn, address indexed tokenOut ); modifier onlyGovernance() { require(msg.sender == governance, "!governance"); _; } // The settlement contract must be authorized to call `execute()`, but additional // safeguards are needed because solvers other than Seasolver are also authorized // to call settlement.settle(). modifier onlyAuthorized() { require( ((msg.sender == settlement) && solvers[tx.origin]) || ((msg.sender != settlement && mechs[msg.sender])), "!authorized" ); _; } constructor(address payable _governance) { governance = _governance; treasury = _governance; mechs[_governance] = true; } function setGovernance(address payable _governance) external onlyGovernance { pendingGovernance = _governance; } function setTreasury(address payable _treasury) external onlyGovernance { treasury = _treasury; emit UpdatedTreasury(_treasury); } function acceptGovernance() external { require(msg.sender == pendingGovernance); governance = pendingGovernance; delete pendingGovernance; emit UpdatedGovernance(governance); } function setSettlement(address _settlement) external onlyGovernance { // Settlement can't be a mech. require(!mechs[_settlement]); settlement = _settlement; emit UpdatedSettlement(_settlement); } function addMech(address _mech) external onlyGovernance { // Settlement can't be set as mech as that would grant // other solvers power to execute. require(settlement != _mech); mechs[_mech] = true; emit AddedMech(_mech); } function removeMech(address _mech) external onlyGovernance { delete mechs[_mech]; emit RemovedMech(_mech); } function addSolver(address _solver) external onlyGovernance { solvers[_solver] = true; emit AddedSolver(_solver); } function removeSolver(address _solver) external onlyGovernance { delete solvers[_solver]; emit RemovedSolver(_solver); } function enable(address _tokenIn, address _tokenOut) external { require(_tokenIn != address(0)); require(_tokenOut != address(0)); emit TradeEnabled(msg.sender, _tokenIn, _tokenOut); } function disable(address _tokenIn, address _tokenOut) external { _disable(msg.sender, _tokenIn, _tokenOut); } function disableByAdmin( address _strategy, address _tokenIn, address _tokenOut ) external onlyGovernance { _disable(_strategy, _tokenIn, _tokenOut); } function _disable( address _strategy, address _tokenIn, address _tokenOut ) internal { emit TradeDisabled(_strategy, _tokenIn, _tokenOut); } function execute(bytes32[] calldata commands, bytes[] memory state) external onlyAuthorized returns (bytes[] memory) { return _execute(commands, state); } function sweep(address[] calldata _tokens, uint256[] calldata _amounts) external { uint256 _size = _tokens.length; require(_size == _amounts.length); for (uint256 i = 0; i < _size; i++) { if (_tokens[i] == address(0)) { // Native ETH TradeHandlerHelper.safeTransferETH(treasury, _amounts[i]); } else { // ERC20s TradeHandlerHelper.safeTransfer( _tokens[i], treasury, _amounts[i] ); } } } // `fallback` is called when msg.data is not empty fallback() external payable {} // `receive` is called when msg.data is empty receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; library CommandBuilder { uint256 constant IDX_VARIABLE_LENGTH = 0x80; uint256 constant IDX_VALUE_MASK = 0x7f; uint256 constant IDX_END_OF_ARGS = 0xff; uint256 constant IDX_USE_STATE = 0xfe; function buildInputs( bytes[] memory state, bytes4 selector, bytes32 indices ) internal view returns (bytes memory ret) { uint256 free; // Pointer to first free byte in tail part of message uint256 idx; // Determine the length of the encoded data for (uint256 i; i < 32;) { idx = uint8(indices[i]); if (idx == IDX_END_OF_ARGS) break; unchecked{free += 32;} unchecked{++i;} } // Encode it uint256 bytesWritten; assembly { ret := mload(0x40) bytesWritten := add(bytesWritten, 4) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) mstore(add(ret, 32), selector) } uint256 count = 0; bytes memory stateData; // Optionally encode the current state if the call requires it for (uint256 i; i < 32;) { idx = uint8(indices[i]); if (idx == IDX_END_OF_ARGS) break; if (idx & IDX_VARIABLE_LENGTH != 0) { if (idx == IDX_USE_STATE) { assembly { bytesWritten := add(bytesWritten, 32) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) mstore(add(add(ret, 36), count), free) } if (stateData.length == 0) { stateData = abi.encode(state); } assembly { bytesWritten := add(bytesWritten, mload(stateData)) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) } memcpy(stateData, 32, ret, free + 4, stateData.length - 32); free += stateData.length - 32; } else { bytes memory stateVar = state[idx & IDX_VALUE_MASK]; uint256 arglen = stateVar.length; // Variable length data; put a pointer in the slot and write the data at the end assembly { bytesWritten := add(bytesWritten, 32) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) mstore(add(add(ret, 36), count), free) } assembly { bytesWritten := add(bytesWritten, arglen) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) } memcpy( stateVar, 0, ret, free + 4, arglen ); free += arglen; } } else { // Fixed length data; write it directly bytes memory stateVar = state[idx & IDX_VALUE_MASK]; assembly { bytesWritten := add(bytesWritten, mload(stateVar)) mstore(0x40, add(ret, and(add(add(bytesWritten, 0x20), 0x1f), not(0x1f)))) mstore(add(add(ret, 36), count), mload(add(stateVar, 32))) } } unchecked{count += 32;} unchecked{++i;} } assembly { mstore(ret, bytesWritten) } } function writeOutputs( bytes[] memory state, bytes1 index, bytes memory output ) internal pure returns (bytes[] memory) { uint256 idx = uint8(index); if (idx == IDX_END_OF_ARGS) return state; if (idx & IDX_VARIABLE_LENGTH != 0) { if (idx == IDX_USE_STATE) { state = abi.decode(output, (bytes[])); } else { // Check the first field is 0x20 (because we have only a single return value) uint256 argptr; assembly { argptr := mload(add(output, 32)) } require( argptr == 32, "Only one return value permitted (variable)" ); assembly { // Overwrite the first word of the return data with the length - 32 mstore(add(output, 32), sub(mload(output), 32)) // Insert a pointer to the return data, starting at the second word, into state mstore( add(add(state, 32), mul(and(idx, IDX_VALUE_MASK), 32)), add(output, 32) ) } } } else { // Single word require( output.length == 32, "Only one return value permitted (static)" ); state[idx & IDX_VALUE_MASK] = output; } return state; } function writeTuple( bytes[] memory state, bytes1 index, bytes memory output ) internal view { uint256 idx = uint256(uint8(index)); if (idx == IDX_END_OF_ARGS) return; bytes memory entry = state[idx & IDX_VALUE_MASK] = new bytes(output.length + 32); memcpy(output, 0, entry, 32, output.length); assembly { let l := mload(output) mstore(add(entry, 32), l) } } function memcpy( bytes memory src, uint256 srcidx, bytes memory dest, uint256 destidx, uint256 len ) internal view { assembly { pop( staticcall( gas(), 4, add(add(src, 32), srcidx), len, add(add(dest, 32), destidx), len ) ) } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; library TradeHandlerHelper { function insertElement( bytes calldata tuple, uint256 index, bytes32 element, bool returnRaw ) public pure returns (bytes memory newTuple) { uint256 byteIndex; unchecked { byteIndex = index * 32; } require(byteIndex <= tuple.length); newTuple = bytes.concat(tuple[:byteIndex], element, tuple[byteIndex:]); if (returnRaw) { assembly { return(add(newTuple, 32), tuple.length) } } } function replaceElement( bytes calldata tuple, uint256 index, bytes32 element, bool returnRaw ) public pure returns (bytes memory newTuple) { uint256 byteIndex; unchecked { byteIndex = index * 32; require(tuple.length >= 32 && byteIndex <= tuple.length - 32); newTuple = bytes.concat( tuple[:byteIndex], element, tuple[byteIndex + 32:] ); } if (returnRaw) { assembly { return(add(newTuple, 32), tuple.length) } } } function getElement(bytes memory tuple, uint256 index) public pure returns (bytes32) { assembly { return(add(tuple, mul(add(index, 1), 32)), 32) } } function power(uint256 a, uint256 b) public pure returns (uint256) { return a**b; } function sum(uint256 a, uint256 b) public pure returns (uint256) { return a + b; } function subtract(uint256 a, uint256 b) public pure returns (uint256) { return a - b; } function multiply(uint256 a, uint256 b) public pure returns (uint256) { return a * b; } function divide(uint256 a, uint256 b) public pure returns (uint256) { return a / b; } /// @dev Wrapper around a call to the ERC20 function `transfer` that reverts /// also when the token returns `false`. function safeTransfer( address token, address to, uint256 value ) external { // solhint-disable-next-line no-inline-assembly assembly { let freeMemoryPointer := mload(0x40) mstore( freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000 ) mstore( add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff) ) mstore(add(freeMemoryPointer, 36), value) if iszero(call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)) { returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } require(getLastTransferResult(token), "!transfer"); } /// @dev Wrapper around a call to the ERC20 function `transferFrom` that /// reverts also when the token returns `false`. function safeTransferFrom( address token, address from, address to, uint256 value ) external { // solhint-disable-next-line no-inline-assembly assembly { let freeMemoryPointer := mload(0x40) mstore( freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000 ) mstore( add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff) ) mstore( add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff) ) mstore(add(freeMemoryPointer, 68), value) if iszero(call(gas(), token, 0, freeMemoryPointer, 100, 0, 0)) { returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } require(getLastTransferResult(token), "!transferFrom"); } /// @dev Verifies that the last return was a successful `transfer*` call. /// This is done by checking that the return data is either empty, or /// is a valid ABI encoded boolean. function getLastTransferResult(address token) private view returns (bool success) { // NOTE: Inspecting previous return data requires assembly. Note that // we write the return data to memory 0 in the case where the return // data size is 32, this is OK since the first 64 bytes of memory are // reserved by Solidy as a scratch space that can be used within // assembly blocks. // <https://docs.soliditylang.org/en/v0.7.6/internals/layout_in_memory.html> // solhint-disable-next-line no-inline-assembly assembly { /// @dev Revert with an ABI encoded Solidity error with a message /// that fits into 32-bytes. /// /// An ABI encoded Solidity error has the following memory layout: /// /// ------------+---------------------------------- /// byte range | value /// ------------+---------------------------------- /// 0x00..0x04 | selector("Error(string)") /// 0x04..0x24 | string offset (always 0x20) /// 0x24..0x44 | string length /// 0x44..0x64 | string value, padded to 32-bytes function revertWithMessage(length, message) { mstore(0x00, "\x08\xc3\x79\xa0") mstore(0x04, 0x20) mstore(0x24, length) mstore(0x44, message) revert(0x00, 0x64) } switch returndatasize() // Non-standard ERC20 transfer without return. case 0 { // NOTE: When the return data size is 0, verify that there // is code at the address. This is done in order to maintain // compatibility with Solidity calling conventions. // <https://docs.soliditylang.org/en/v0.7.6/control-structures.html#external-function-calls> if iszero(extcodesize(token)) { revertWithMessage(20, "!contract") } success := 1 } // Standard ERC20 transfer returning boolean success value. case 32 { returndatacopy(0, 0, returndatasize()) // NOTE: For ABI encoding v1, any non-zero value is accepted // as `true` for a boolean. In order to stay compatible with // OpenZeppelin's `SafeERC20` library which is known to work // with the existing ERC20 implementation we care about, // make sure we return success for any non-zero return value // from the `transfer*` call. success := iszero(iszero(mload(0))) } default { revertWithMessage(31, "malformed") // malformed transfer result } } } function safeTransferETH(address to, uint256 amount) external { bool success; assembly { // Transfer the ETH and store if it succeeded or not. success := call(gas(), to, amount, 0, 0, 0, 0) } require(success, "!safeTransferETH"); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import "./CommandBuilder.sol"; abstract contract VM { using CommandBuilder for bytes[]; uint256 constant FLAG_CT_DELEGATECALL = 0x00; uint256 constant FLAG_CT_CALL = 0x01; uint256 constant FLAG_CT_STATICCALL = 0x02; uint256 constant FLAG_CT_VALUECALL = 0x03; uint256 constant FLAG_CT_MASK = 0x03; uint256 constant FLAG_EXTENDED_COMMAND = 0x40; uint256 constant FLAG_TUPLE_RETURN = 0x80; uint256 constant SHORT_COMMAND_FILL = 0x000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; address immutable self; error ExecutionFailed( uint256 command_index, address target, string message ); constructor() { self = address(this); } function _execute(bytes32[] calldata commands, bytes[] memory state) internal returns (bytes[] memory) { bytes32 command; uint256 flags; bytes32 indices; bool success; bytes memory outdata; uint256 commandsLength = commands.length; for (uint256 i; i < commandsLength;) { command = commands[i]; flags = uint256(command >> 216) & 0xFF; // more efficient // flags = uint256(uint8(bytes1(command << 32))); // more readable if (flags & FLAG_EXTENDED_COMMAND != 0) { indices = commands[++i]; } else { indices = bytes32(uint256(command << 40) | SHORT_COMMAND_FILL); } if (flags & FLAG_CT_MASK == FLAG_CT_DELEGATECALL) { (success, outdata) = address(uint160(uint256(command))).delegatecall( // target // inputs state.buildInputs( //selector bytes4(command), indices ) ); } else if (flags & FLAG_CT_MASK == FLAG_CT_CALL) { (success, outdata) = address(uint160(uint256(command))).call( // target // inputs state.buildInputs( //selector bytes4(command), indices ) ); } else if (flags & FLAG_CT_MASK == FLAG_CT_STATICCALL) { (success, outdata) = address(uint160(uint256(command))).staticcall( // target // inputs state.buildInputs( //selector bytes4(command), indices ) ); } else if (flags & FLAG_CT_MASK == FLAG_CT_VALUECALL) { uint256 callEth; bytes memory v = state[uint8(bytes1(indices))]; require(v.length == 32, "_execute: value call has no value indicated."); assembly { callEth := mload(add(v, 0x20)) } (success, outdata) = address(uint160(uint256(command))).call{ // target value: callEth }( // inputs state.buildInputs( //selector bytes4(command), bytes32(uint256(indices << 8) | CommandBuilder.IDX_END_OF_ARGS) ) ); } else { revert("Invalid calltype"); } if (!success) { if (outdata.length > 0) { assembly { outdata := add(outdata, 68) } } revert ExecutionFailed({ command_index: 0, target: address(uint160(uint256(command))), message: outdata.length > 0 ? string(outdata) : "Unknown" }); } if (flags & FLAG_TUPLE_RETURN != 0) { state.writeTuple(bytes1(command << 88), outdata); } else { state = state.writeOutputs(bytes1(command << 88), outdata); } unchecked{++i;} } return state; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address payable","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"command_index","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"string","name":"message","type":"string"}],"name":"ExecutionFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mech","type":"address"}],"name":"AddedMech","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"solver","type":"address"}],"name":"AddedSolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mech","type":"address"}],"name":"RemovedMech","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"solver","type":"address"}],"name":"RemovedSolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"}],"name":"TradeDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"governance","type":"address"}],"name":"UpdatedGovernance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"settlement","type":"address"}],"name":"UpdatedSettlement","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasury","type":"address"}],"name":"UpdatedTreasury","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mech","type":"address"}],"name":"addMech","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_solver","type":"address"}],"name":"addSolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"}],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"}],"name":"disableByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"commands","type":"bytes32[]"},{"internalType":"bytes[]","name":"state","type":"bytes[]"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mechs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGovernance","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_mech","type":"address"}],"name":"removeMech","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_solver","type":"address"}],"name":"removeSolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"name":"setSettlement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settlement","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"solvers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516119b53803806119b583398101604081905261002f9161007b565b30608052600080546001600160a01b03929092166001600160a01b031992831681178255600280549093168117909255908152600460205260409020805460ff191660011790556100ab565b60006020828403121561008d57600080fd5b81516001600160a01b03811681146100a457600080fd5b9392505050565b6080516118f26100c3600039600050506118f26000f3fe60806040526004361061010b5760003560e01c80638f4e6f371161009a578063d0adcdf611610061578063d0adcdf614610316578063de792d5f14610336578063ec58f4b814610363578063f0f4426014610383578063f39c38a0146103a357005b80638f4e6f37146102765780638fd57b92146102965780639cd38be5146102b65780639ed6c6f6146102d6578063ab033ea9146102f657005b806351160630116100de57806351160630146101ae57806357f58d98146101e65780635aa6e6751461021657806361d027b31461023657806366f88f821461025657005b8062b8ff9214610114578063238efcbc1461013457806349d6e212146101495780634c8541261461018e57005b3661011257005b005b34801561012057600080fd5b5061011261012f36600461132f565b6103c3565b34801561014057600080fd5b50610112610406565b34801561015557600080fd5b5061017961016436600461137a565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561019a57600080fd5b506101126101a9366004611397565b61047b565b3480156101ba57600080fd5b506003546101ce906001600160a01b031681565b6040516001600160a01b039091168152602001610185565b3480156101f257600080fd5b5061017961020136600461137a565b60056020526000908152604090205460ff1681565b34801561022257600080fd5b506000546101ce906001600160a01b031681565b34801561024257600080fd5b506002546101ce906001600160a01b031681565b34801561026257600080fd5b5061011261027136600461137a565b6104e0565b34801561028257600080fd5b5061011261029136600461137a565b610562565b3480156102a257600080fd5b506101126102b136600461137a565b610600565b3480156102c257600080fd5b506101126102d1366004611397565b61067b565b3480156102e257600080fd5b506101126102f136600461141c565b61068a565b34801561030257600080fd5b5061011261031136600461137a565b610864565b34801561032257600080fd5b5061011261033136600461137a565b6108b0565b34801561034257600080fd5b5061035661035136600461151b565b610948565b6040516101859190611688565b34801561036f57600080fd5b5061011261037e36600461137a565b6109f3565b34801561038f57600080fd5b5061011261039e36600461137a565b610a71565b3480156103af57600080fd5b506001546101ce906001600160a01b031681565b6000546001600160a01b031633146103f65760405162461bcd60e51b81526004016103ed906116ea565b60405180910390fd5b610401838383610ae9565b505050565b6001546001600160a01b0316331461041d57600080fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f17fdeaa3d89b13aa2b63d35b4629f020be603156d5afcf4aba89bfa93d5f579d9060200160405180910390a1565b6001600160a01b03821661048e57600080fd5b6001600160a01b0381166104a157600080fd5b6040516001600160a01b03808316919084169033907f39e31092deb8f976532f8f405a66c2a1f574b4494ba37cbc2915c1914a9689f290600090a45050565b6000546001600160a01b0316331461050a5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260046020908152604091829020805460ff1916905590519182527f74cbb97aad2128ac02cf33c1dd8791a60aae9afab06f3a411169bdae081277c591015b60405180910390a150565b6000546001600160a01b0316331461058c5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b03811660009081526004602052604090205460ff16156105b257600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f1fa4026b4d339f83c1501efed0d8a25130bf25d6e1b2b0a2c48c8225b2d0fb1e90602001610557565b6000546001600160a01b0316331461062a5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f736584b2af2b5be32a90fa808de47de356f4e8d00b0c131f3e3c61240b5d71909101610557565b610686338383610ae9565b5050565b8281811461069757600080fd5b60005b8181101561085c5760008686838181106106b6576106b661170f565b90506020020160208101906106cb919061137a565b6001600160a01b03160361077d57600254731b45a86e58b97df309bae0e6c4bbcd40f5a23d5490637c4368c1906001600160a01b03168686858181106107135761071361170f565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602002919091013560248301525060440160006040518083038186803b15801561076057600080fd5b505af4158015610774573d6000803e3d6000fd5b5050505061084a565b731b45a86e58b97df309bae0e6c4bbcd40f5a23d5463d1660f998787848181106107a9576107a961170f565b90506020020160208101906107be919061137a565b6002546001600160a01b03168787868181106107dc576107dc61170f565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501525060209091020135604482015260640160006040518083038186803b15801561083157600080fd5b505af4158015610845573d6000803e3d6000fd5b505050505b806108548161173b565b91505061069a565b505050505050565b6000546001600160a01b0316331461088e5760405162461bcd60e51b81526004016103ed906116ea565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016103ed906116ea565b6003546001600160a01b038083169116036108f457600080fd5b6001600160a01b038116600081815260046020908152604091829020805460ff1916600117905590519182527fb43754e0033076ed886a3bee063313d9f0da4612cd15041451f9ccf4108205bd9101610557565b6003546060906001600160a01b03163314801561097457503260009081526005602052604090205460ff165b806109a457506003546001600160a01b031633148015906109a457503360009081526004602052604090205460ff165b6109de5760405162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b60448201526064016103ed565b6109e9848484610b38565b90505b9392505050565b6000546001600160a01b03163314610a1d5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f68f4df5a91ac3c3a2468604a418ba454518d42eb6fcedccca0c00bd1129bcc7f9101610557565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016103ed906116ea565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fa6df481f77da1f4c92eb330341e03585d46106fcf522f8e6b6b2afbea56eefdc90602001610557565b806001600160a01b0316826001600160a01b0316846001600160a01b03167fb670ba64017b695a17160f17252635c78b7e4b57d1efcf9a6968b9c03e7b596660405160405180910390a4505050565b606060008080808487825b81811015610eee578a8a82818110610b5d57610b5d61170f565b90506020020135965060d887901c60001c60ff16955060408616600014610ba9578a8a610b898361173b565b925082818110610b9b57610b9b61170f565b905060200201359450610bba565b602887901b6001600160d01b031794505b60038616610c2f576001600160a01b038716610bd78a8988610efd565b604051610be49190611754565b600060405180830381855af49150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b606091505b509094509250610e52565b60016003871603610c99576001600160a01b038716610c4f8a8988610efd565b604051610c5c9190611754565b6000604051808303816000865af19150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b60026003871603610d01576001600160a01b038716610cb98a8988610efd565b604051610cc69190611754565b600060405180830381855afa9150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b600380871603610e17576000808a8760f81c60ff1681518110610d2657610d2661170f565b602002602001015190508051602014610d965760405162461bcd60e51b815260206004820152602c60248201527f5f657865637574653a2076616c75652063616c6c20686173206e6f2076616c7560448201526b329034b73234b1b0ba32b21760a11b60648201526084016103ed565b602081015191506001600160a01b03891682610dba8d8c60088c901b60ff17610efd565b604051610dc79190611754565b60006040518083038185875af1925050503d8060008114610e04576040519150601f19603f3d011682016040523d82523d6000602084013e610e09565b606091505b509096509450610e52915050565b60405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063616c6c7479706560801b60448201526064016103ed565b83610eb757825115610e65576044830192505b60008760001c6000855111610e9957604051806040016040528060078152602001662ab735b737bbb760c91b815250610e9b565b845b60405163ef3dcb2f60e01b81526004016103ed93929190611770565b6080861615610ed457610ecf89605889901b856110fd565b610ee6565b610ee389605889901b856111a5565b98505b600101610b43565b50969998505050505050505050565b606060008060005b6020811015610f3c57848160208110610f2057610f2061170f565b1a915060fe19820115610f3c5760209290920191600101610f05565b5060408051808201909152602081018690529250600460006060815b60208110156110ee57878160208110610f7357610f7361170f565b1a945060fe198501156110ee57608085161561109f5760fe850361102f57601f19605f85011687016040526024838801018690528151602090940193600003610fd95789604051602001610fc79190611688565b60405160208183030381529060405291505b8151603f9401938401601f1916870160405261101082602089610ffd8a60046117a3565b6020875161100b91906117bc565b6112fd565b6020825161101e91906117bc565b61102890876117a3565b95506110df565b60008a607f8716815181106110465761104661170f565b6020908102919091018101518051868b016024018a9052968701605f8101601f19168b016040529091019590915061108c8260008b6110868c60046117a3565b856112fd565b61109681896117a3565b975050506110df565b60008a607f8716815181106110b6576110b661170f565b6020908102919091018101518051603f9701968701601f19168a01604052015184890160240152505b60209290920191600101610f58565b50505083525090949350505050565b60f882901c60fe1981016111115750505050565b60008251602061112191906117a3565b67ffffffffffffffff81111561113957611139611488565b6040519080825280601f01601f191660200182016040528015611163576020820181803683370190505b5085607f8416815181106111795761117961170f565b60200260200101819052905061119583600083602087516112fd565b8251806020830152505050505050565b606060f883901c60fe1981016111be57849150506109ec565b60808116156112705760fe81036111ea57828060200190518101906111e391906117cf565b94506112f4565b6020838101519081146112525760405162461bcd60e51b815260206004820152602a60248201527f4f6e6c79206f6e652072657475726e2076616c7565207065726d697474656420604482015269287661726961626c652960b01b60648201526084016103ed565b508251601f19016020848101918252607f83168102870101526112f4565b82516020146112d25760405162461bcd60e51b815260206004820152602860248201527f4f6e6c79206f6e652072657475726e2076616c7565207065726d697474656420604482015267287374617469632960c01b60648201526084016103ed565b8285607f8316815181106112e8576112e861170f565b60200260200101819052505b50929392505050565b808260208501018286602089010160045afa505050505050565b6001600160a01b038116811461132c57600080fd5b50565b60008060006060848603121561134457600080fd5b833561134f81611317565b9250602084013561135f81611317565b9150604084013561136f81611317565b809150509250925092565b60006020828403121561138c57600080fd5b81356109ec81611317565b600080604083850312156113aa57600080fd5b82356113b581611317565b915060208301356113c581611317565b809150509250929050565b60008083601f8401126113e257600080fd5b50813567ffffffffffffffff8111156113fa57600080fd5b6020830191508360208260051b850101111561141557600080fd5b9250929050565b6000806000806040858703121561143257600080fd5b843567ffffffffffffffff8082111561144a57600080fd5b611456888389016113d0565b9096509450602087013591508082111561146f57600080fd5b5061147c878288016113d0565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114c7576114c7611488565b604052919050565b600067ffffffffffffffff8211156114e9576114e9611488565b5060051b60200190565b600067ffffffffffffffff82111561150d5761150d611488565b50601f01601f191660200190565b6000806000604080858703121561153157600080fd5b843567ffffffffffffffff8082111561154957600080fd5b611555888389016113d0565b909650945060209150868201358181111561156f57600080fd5b8701601f8101891361158057600080fd5b803561159361158e826114cf565b61149e565b81815260059190911b8201840190848101908b8311156115b257600080fd5b8584015b83811015611626578035868111156115ce5760008081fd5b8501603f81018e136115e05760008081fd5b878101356115f061158e826114f3565b8181528f8b8385010111156116055760008081fd5b818b84018b83013760009181018a01919091528452509186019186016115b6565b50809750505050505050509250925092565b60005b8381101561165357818101518382015260200161163b565b50506000910152565b60008151808452611674816020860160208601611638565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156116dd57603f198886030184526116cb85835161165c565b945092850192908501906001016116af565b5092979650505050505050565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161174d5761174d611725565b5060010190565b60008251611766818460208701611638565b9190910192915050565b8381526001600160a01b038316602082015260606040820181905260009061179a9083018461165c565b95945050505050565b808201808211156117b6576117b6611725565b92915050565b818103818111156117b6576117b6611725565b600060208083850312156117e257600080fd5b825167ffffffffffffffff808211156117fa57600080fd5b818501915085601f83011261180e57600080fd5b815161181c61158e826114cf565b81815260059190911b8301840190848101908883111561183b57600080fd5b8585015b838110156118af578051858111156118575760008081fd5b8601603f81018b136118695760008081fd5b87810151604061187b61158e836114f3565b8281528d828486010111156118905760008081fd5b61189f838c8301848701611638565b865250505091860191860161183f565b509897505050505050505056fea2646970667358221220bc488897086574fb93bc838a9bd5eb177f591f592d440e94ff6c9c70abfc7a2964736f6c634300081100330000000000000000000000002757ae02f65db7ce8cf2b2261c58f07a0170e58eDeployed Bytecode
0x60806040526004361061010b5760003560e01c80638f4e6f371161009a578063d0adcdf611610061578063d0adcdf614610316578063de792d5f14610336578063ec58f4b814610363578063f0f4426014610383578063f39c38a0146103a357005b80638f4e6f37146102765780638fd57b92146102965780639cd38be5146102b65780639ed6c6f6146102d6578063ab033ea9146102f657005b806351160630116100de57806351160630146101ae57806357f58d98146101e65780635aa6e6751461021657806361d027b31461023657806366f88f821461025657005b8062b8ff9214610114578063238efcbc1461013457806349d6e212146101495780634c8541261461018e57005b3661011257005b005b34801561012057600080fd5b5061011261012f36600461132f565b6103c3565b34801561014057600080fd5b50610112610406565b34801561015557600080fd5b5061017961016436600461137a565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561019a57600080fd5b506101126101a9366004611397565b61047b565b3480156101ba57600080fd5b506003546101ce906001600160a01b031681565b6040516001600160a01b039091168152602001610185565b3480156101f257600080fd5b5061017961020136600461137a565b60056020526000908152604090205460ff1681565b34801561022257600080fd5b506000546101ce906001600160a01b031681565b34801561024257600080fd5b506002546101ce906001600160a01b031681565b34801561026257600080fd5b5061011261027136600461137a565b6104e0565b34801561028257600080fd5b5061011261029136600461137a565b610562565b3480156102a257600080fd5b506101126102b136600461137a565b610600565b3480156102c257600080fd5b506101126102d1366004611397565b61067b565b3480156102e257600080fd5b506101126102f136600461141c565b61068a565b34801561030257600080fd5b5061011261031136600461137a565b610864565b34801561032257600080fd5b5061011261033136600461137a565b6108b0565b34801561034257600080fd5b5061035661035136600461151b565b610948565b6040516101859190611688565b34801561036f57600080fd5b5061011261037e36600461137a565b6109f3565b34801561038f57600080fd5b5061011261039e36600461137a565b610a71565b3480156103af57600080fd5b506001546101ce906001600160a01b031681565b6000546001600160a01b031633146103f65760405162461bcd60e51b81526004016103ed906116ea565b60405180910390fd5b610401838383610ae9565b505050565b6001546001600160a01b0316331461041d57600080fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f17fdeaa3d89b13aa2b63d35b4629f020be603156d5afcf4aba89bfa93d5f579d9060200160405180910390a1565b6001600160a01b03821661048e57600080fd5b6001600160a01b0381166104a157600080fd5b6040516001600160a01b03808316919084169033907f39e31092deb8f976532f8f405a66c2a1f574b4494ba37cbc2915c1914a9689f290600090a45050565b6000546001600160a01b0316331461050a5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260046020908152604091829020805460ff1916905590519182527f74cbb97aad2128ac02cf33c1dd8791a60aae9afab06f3a411169bdae081277c591015b60405180910390a150565b6000546001600160a01b0316331461058c5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b03811660009081526004602052604090205460ff16156105b257600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f1fa4026b4d339f83c1501efed0d8a25130bf25d6e1b2b0a2c48c8225b2d0fb1e90602001610557565b6000546001600160a01b0316331461062a5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f736584b2af2b5be32a90fa808de47de356f4e8d00b0c131f3e3c61240b5d71909101610557565b610686338383610ae9565b5050565b8281811461069757600080fd5b60005b8181101561085c5760008686838181106106b6576106b661170f565b90506020020160208101906106cb919061137a565b6001600160a01b03160361077d57600254731b45a86e58b97df309bae0e6c4bbcd40f5a23d5490637c4368c1906001600160a01b03168686858181106107135761071361170f565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602002919091013560248301525060440160006040518083038186803b15801561076057600080fd5b505af4158015610774573d6000803e3d6000fd5b5050505061084a565b731b45a86e58b97df309bae0e6c4bbcd40f5a23d5463d1660f998787848181106107a9576107a961170f565b90506020020160208101906107be919061137a565b6002546001600160a01b03168787868181106107dc576107dc61170f565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501525060209091020135604482015260640160006040518083038186803b15801561083157600080fd5b505af4158015610845573d6000803e3d6000fd5b505050505b806108548161173b565b91505061069a565b505050505050565b6000546001600160a01b0316331461088e5760405162461bcd60e51b81526004016103ed906116ea565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016103ed906116ea565b6003546001600160a01b038083169116036108f457600080fd5b6001600160a01b038116600081815260046020908152604091829020805460ff1916600117905590519182527fb43754e0033076ed886a3bee063313d9f0da4612cd15041451f9ccf4108205bd9101610557565b6003546060906001600160a01b03163314801561097457503260009081526005602052604090205460ff165b806109a457506003546001600160a01b031633148015906109a457503360009081526004602052604090205460ff165b6109de5760405162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b60448201526064016103ed565b6109e9848484610b38565b90505b9392505050565b6000546001600160a01b03163314610a1d5760405162461bcd60e51b81526004016103ed906116ea565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f68f4df5a91ac3c3a2468604a418ba454518d42eb6fcedccca0c00bd1129bcc7f9101610557565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016103ed906116ea565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fa6df481f77da1f4c92eb330341e03585d46106fcf522f8e6b6b2afbea56eefdc90602001610557565b806001600160a01b0316826001600160a01b0316846001600160a01b03167fb670ba64017b695a17160f17252635c78b7e4b57d1efcf9a6968b9c03e7b596660405160405180910390a4505050565b606060008080808487825b81811015610eee578a8a82818110610b5d57610b5d61170f565b90506020020135965060d887901c60001c60ff16955060408616600014610ba9578a8a610b898361173b565b925082818110610b9b57610b9b61170f565b905060200201359450610bba565b602887901b6001600160d01b031794505b60038616610c2f576001600160a01b038716610bd78a8988610efd565b604051610be49190611754565b600060405180830381855af49150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b606091505b509094509250610e52565b60016003871603610c99576001600160a01b038716610c4f8a8988610efd565b604051610c5c9190611754565b6000604051808303816000865af19150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b60026003871603610d01576001600160a01b038716610cb98a8988610efd565b604051610cc69190611754565b600060405180830381855afa9150503d8060008114610c1f576040519150601f19603f3d011682016040523d82523d6000602084013e610c24565b600380871603610e17576000808a8760f81c60ff1681518110610d2657610d2661170f565b602002602001015190508051602014610d965760405162461bcd60e51b815260206004820152602c60248201527f5f657865637574653a2076616c75652063616c6c20686173206e6f2076616c7560448201526b329034b73234b1b0ba32b21760a11b60648201526084016103ed565b602081015191506001600160a01b03891682610dba8d8c60088c901b60ff17610efd565b604051610dc79190611754565b60006040518083038185875af1925050503d8060008114610e04576040519150601f19603f3d011682016040523d82523d6000602084013e610e09565b606091505b509096509450610e52915050565b60405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063616c6c7479706560801b60448201526064016103ed565b83610eb757825115610e65576044830192505b60008760001c6000855111610e9957604051806040016040528060078152602001662ab735b737bbb760c91b815250610e9b565b845b60405163ef3dcb2f60e01b81526004016103ed93929190611770565b6080861615610ed457610ecf89605889901b856110fd565b610ee6565b610ee389605889901b856111a5565b98505b600101610b43565b50969998505050505050505050565b606060008060005b6020811015610f3c57848160208110610f2057610f2061170f565b1a915060fe19820115610f3c5760209290920191600101610f05565b5060408051808201909152602081018690529250600460006060815b60208110156110ee57878160208110610f7357610f7361170f565b1a945060fe198501156110ee57608085161561109f5760fe850361102f57601f19605f85011687016040526024838801018690528151602090940193600003610fd95789604051602001610fc79190611688565b60405160208183030381529060405291505b8151603f9401938401601f1916870160405261101082602089610ffd8a60046117a3565b6020875161100b91906117bc565b6112fd565b6020825161101e91906117bc565b61102890876117a3565b95506110df565b60008a607f8716815181106110465761104661170f565b6020908102919091018101518051868b016024018a9052968701605f8101601f19168b016040529091019590915061108c8260008b6110868c60046117a3565b856112fd565b61109681896117a3565b975050506110df565b60008a607f8716815181106110b6576110b661170f565b6020908102919091018101518051603f9701968701601f19168a01604052015184890160240152505b60209290920191600101610f58565b50505083525090949350505050565b60f882901c60fe1981016111115750505050565b60008251602061112191906117a3565b67ffffffffffffffff81111561113957611139611488565b6040519080825280601f01601f191660200182016040528015611163576020820181803683370190505b5085607f8416815181106111795761117961170f565b60200260200101819052905061119583600083602087516112fd565b8251806020830152505050505050565b606060f883901c60fe1981016111be57849150506109ec565b60808116156112705760fe81036111ea57828060200190518101906111e391906117cf565b94506112f4565b6020838101519081146112525760405162461bcd60e51b815260206004820152602a60248201527f4f6e6c79206f6e652072657475726e2076616c7565207065726d697474656420604482015269287661726961626c652960b01b60648201526084016103ed565b508251601f19016020848101918252607f83168102870101526112f4565b82516020146112d25760405162461bcd60e51b815260206004820152602860248201527f4f6e6c79206f6e652072657475726e2076616c7565207065726d697474656420604482015267287374617469632960c01b60648201526084016103ed565b8285607f8316815181106112e8576112e861170f565b60200260200101819052505b50929392505050565b808260208501018286602089010160045afa505050505050565b6001600160a01b038116811461132c57600080fd5b50565b60008060006060848603121561134457600080fd5b833561134f81611317565b9250602084013561135f81611317565b9150604084013561136f81611317565b809150509250925092565b60006020828403121561138c57600080fd5b81356109ec81611317565b600080604083850312156113aa57600080fd5b82356113b581611317565b915060208301356113c581611317565b809150509250929050565b60008083601f8401126113e257600080fd5b50813567ffffffffffffffff8111156113fa57600080fd5b6020830191508360208260051b850101111561141557600080fd5b9250929050565b6000806000806040858703121561143257600080fd5b843567ffffffffffffffff8082111561144a57600080fd5b611456888389016113d0565b9096509450602087013591508082111561146f57600080fd5b5061147c878288016113d0565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114c7576114c7611488565b604052919050565b600067ffffffffffffffff8211156114e9576114e9611488565b5060051b60200190565b600067ffffffffffffffff82111561150d5761150d611488565b50601f01601f191660200190565b6000806000604080858703121561153157600080fd5b843567ffffffffffffffff8082111561154957600080fd5b611555888389016113d0565b909650945060209150868201358181111561156f57600080fd5b8701601f8101891361158057600080fd5b803561159361158e826114cf565b61149e565b81815260059190911b8201840190848101908b8311156115b257600080fd5b8584015b83811015611626578035868111156115ce5760008081fd5b8501603f81018e136115e05760008081fd5b878101356115f061158e826114f3565b8181528f8b8385010111156116055760008081fd5b818b84018b83013760009181018a01919091528452509186019186016115b6565b50809750505050505050509250925092565b60005b8381101561165357818101518382015260200161163b565b50506000910152565b60008151808452611674816020860160208601611638565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156116dd57603f198886030184526116cb85835161165c565b945092850192908501906001016116af565b5092979650505050505050565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161174d5761174d611725565b5060010190565b60008251611766818460208701611638565b9190910192915050565b8381526001600160a01b038316602082015260606040820181905260009061179a9083018461165c565b95945050505050565b808201808211156117b6576117b6611725565b92915050565b818103818111156117b6576117b6611725565b600060208083850312156117e257600080fd5b825167ffffffffffffffff808211156117fa57600080fd5b818501915085601f83011261180e57600080fd5b815161181c61158e826114cf565b81815260059190911b8301840190848101908883111561183b57600080fd5b8585015b838110156118af578051858111156118575760008081fd5b8601603f81018b136118695760008081fd5b87810151604061187b61158e836114f3565b8281528d828486010111156118905760008081fd5b61189f838c8301848701611638565b865250505091860191860161183f565b509897505050505050505056fea2646970667358221220bc488897086574fb93bc838a9bd5eb177f591f592d440e94ff6c9c70abfc7a2964736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002757ae02f65db7ce8cf2b2261c58f07a0170e58e
-----Decoded View---------------
Arg [0] : _governance (address): 0x2757AE02F65dB7Ce8CF2b2261c58f07a0170e58e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002757ae02f65db7ce8cf2b2261c58f07a0170e58eDeployed Bytecode Sourcemap
406:5024:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4057:191;;;;;;;;;;-1:-1:-1;4057:191:1;;;;;:::i;:::-;;:::i;2562:212::-;;;;;;;;;;;;;:::i;782:37::-;;;;;;;;;;-1:-1:-1;782:37:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1101:14:4;;1094:22;1076:41;;1064:2;1049:18;782:37:1;;;;;;;;3711:213;;;;;;;;;;-1:-1:-1;3711:213:1;;;;;:::i;:::-;;:::i;649:25::-;;;;;;;;;;-1:-1:-1;649:25:1;;;;-1:-1:-1;;;;;649:25:1;;;;;;-1:-1:-1;;;;;1685:32:4;;;1667:51;;1655:2;1640:18;649:25:1;1521:203:4;942:39:1;;;;;;;;;;-1:-1:-1;942:39:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;440:33;;;;;;;;;;-1:-1:-1;440:33:1;;;;-1:-1:-1;;;;;440:33:1;;;562:31;;;;;;;;;;-1:-1:-1;562:31:1;;;;-1:-1:-1;;;;;562:31:1;;;3290:128;;;;;;;;;;-1:-1:-1;3290:128:1;;;;;:::i;:::-;;:::i;2780:231::-;;;;;;;;;;-1:-1:-1;2780:231:1;;;;;:::i;:::-;;:::i;3565:140::-;;;;;;;;;;-1:-1:-1;3565:140:1;;;;;:::i;:::-;;:::i;3930:121::-;;;;;;;;;;-1:-1:-1;3930:121:1;;;;;:::i;:::-;;:::i;4640:612::-;;;;;;;;;;-1:-1:-1;4640:612:1;;;;;:::i;:::-;;:::i;2256:144::-;;;;;;;;;;-1:-1:-1;2256:144:1;;;;;:::i;:::-;;:::i;3017:267::-;;;;;;;;;;-1:-1:-1;3017:267:1;;;;;:::i;:::-;;:::i;4440:194::-;;;;;;;;;;-1:-1:-1;4440:194:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3424:135::-;;;;;;;;;;-1:-1:-1;3424:135:1;;;;;:::i;:::-;;:::i;2406:150::-;;;;;;;;;;-1:-1:-1;2406:150:1;;;;;:::i;:::-;;:::i;479:40::-;;;;;;;;;;-1:-1:-1;479:40:1;;;;-1:-1:-1;;;;;479:40:1;;;4057:191;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;;;;;;;;;4201:40:::1;4210:9;4221:8;4231:9;4201:8;:40::i;:::-;4057:191:::0;;;:::o;2562:212::-;2631:17;;-1:-1:-1;;;;;2631:17:1;2617:10;:31;2609:40;;;;;;2672:17;;;;2659:30;;-1:-1:-1;;;;;2672:17:1;;-1:-1:-1;;;;;;2659:30:1;;;;;;;;2699:24;;;;;;2738:29;;1667:51:4;;;2738:29:1;;1655:2:4;1640:18;2738:29:1;;;;;;;2562:212::o;3711:213::-;-1:-1:-1;;;;;3791:22:1;;3783:31;;;;;;-1:-1:-1;;;;;3832:23:1;;3824:32;;;;;;3872:45;;-1:-1:-1;;;;;3872:45:1;;;;;;;;3885:10;;3872:45;;;;;3711:213;;:::o;3290:128::-;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3366:12:1;::::1;;::::0;;;:5:::1;:12;::::0;;;;;;;;3359:19;;-1:-1:-1;;3359:19:1::1;::::0;;3393:18;;1667:51:4;;;3393:18:1::1;::::0;1640::4;3393::1::1;;;;;;;;3290:128:::0;:::o;2780:231::-;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;2906:18:1;::::1;;::::0;;;:5:::1;:18;::::0;;;;;::::1;;2905:19;2897:28;;;::::0;::::1;;2935:10;:24:::0;;-1:-1:-1;;;;;;2935:24:1::1;-1:-1:-1::0;;;;;2935:24:1;::::1;::::0;;::::1;::::0;;;2974:30:::1;::::0;1667:51:4;;;2974:30:1::1;::::0;1655:2:4;1640:18;2974:30:1::1;1521:203:4::0;3565:140:1;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3645:16:1;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;;3638:23;;-1:-1:-1;;3638:23:1::1;::::0;;3676:22;;1667:51:4;;;3676:22:1::1;::::0;1640:18:4;3676:22:1::1;1521:203:4::0;3930:121:1;4003:41;4012:10;4024:8;4034:9;4003:8;:41::i;:::-;3930:121;;:::o;4640:612::-;4759:7;4791:24;;;4783:33;;;;;;4832:9;4827:419;4851:5;4847:1;:9;4827:419;;;4903:1;4881:7;;4889:1;4881:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4881:24:1;;4877:359;;4990:8;;4955:18;;:34;;-1:-1:-1;;;;;4990:8:1;5000;;5009:1;5000:11;;;;;;;:::i;:::-;4955:57;;-1:-1:-1;;;;;;4955:57:1;;;;;;;-1:-1:-1;;;;;8377:32:4;;;4955:57:1;;;8359:51:4;5000:11:1;;;;;;;8426:18:4;;;8419:34;-1:-1:-1;8332:18:4;;4955:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:359;;;5077:18;:31;5130:7;;5138:1;5130:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5162:8;;-1:-1:-1;;;;;5162:8:1;5192;;5201:1;5192:11;;;;;;;:::i;:::-;5077:144;;-1:-1:-1;;;;;;5077:144:1;;;;;;;-1:-1:-1;;;;;8738:15:4;;;5077:144:1;;;8720:34:4;8790:15;;;;8770:18;;;8763:43;-1:-1:-1;5192:11:1;;;;;;8822:18:4;;;8815:34;8655:18;;5077:144:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:359;4858:3;;;;:::i;:::-;;;;4827:419;;;;4733:519;4640:612;;;;:::o;2256:144::-;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;2362:17:::1;:31:::0;;-1:-1:-1;;;;;;2362:31:1::1;-1:-1:-1::0;;;;;2362:31:1;;;::::1;::::0;;;::::1;::::0;;2256:144::o;3017:267::-;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;3197:10:::1;::::0;-1:-1:-1;;;;;3197:19:1;;::::1;:10:::0;::::1;:19:::0;3189:28:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;3227:12:1;::::1;;::::0;;;:5:::1;:12;::::0;;;;;;;;:19;;-1:-1:-1;;3227:19:1::1;3242:4;3227:19;::::0;;3261:16;;1667:51:4;;;3261:16:1::1;::::0;1640:18:4;3261:16:1::1;1521:203:4::0;4440:194:1;1937:10;;4565:14;;-1:-1:-1;;;;;1937:10:1;1923;:24;1922:48;;;;-1:-1:-1;1960:9:1;1952:18;;;;:7;:18;;;;;;;;1922:48;1921:119;;;-1:-1:-1;2007:10:1;;-1:-1:-1;;;;;2007:10:1;1993;:24;;;;:45;;-1:-1:-1;2027:10:1;2021:17;;;;:5;:17;;;;;;;;1993:45;1900:177;;;;-1:-1:-1;;;1900:177:1;;9334:2:4;1900:177:1;;;9316:21:4;9373:2;9353:18;;;9346:30;-1:-1:-1;;;9392:18:4;;;9385:41;9443:18;;1900:177:1;9132:335:4;1900:177:1;4602:25:::1;4611:8;;4621:5;4602:8;:25::i;:::-;4595:32;;2087:1;4440:194:::0;;;;;:::o;3424:135::-;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3494:16:1;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;;:23;;-1:-1:-1;;3494:23:1::1;3513:4;3494:23;::::0;;3532:20;;1667:51:4;;;3532:20:1::1;::::0;1640:18:4;3532:20:1::1;1521:203:4::0;2406:150:1;1606:10;;-1:-1:-1;;;;;1606:10:1;1592;:24;1584:48;;;;-1:-1:-1;;;1584:48:1;;;;;;;:::i;:::-;2488:8:::1;:20:::0;;-1:-1:-1;;;;;;2488:20:1::1;-1:-1:-1::0;;;;;2488:20:1;::::1;::::0;;::::1;::::0;;;2523:26:::1;::::0;1667:51:4;;;2523:26:1::1;::::0;1655:2:4;1640:18;2523:26:1::1;1521:203:4::0;4254:180:1;4417:9;-1:-1:-1;;;;;4382:45:1;4407:8;-1:-1:-1;;;;;4382:45:1;4396:9;-1:-1:-1;;;;;4382:45:1;;;;;;;;;;;4254:180;;;:::o;793:3450:3:-;886:14;916:15;;;;886:14;1068:8;916:15;1093:3122;1113:14;1109:1;:18;1093:3122;;;1154:8;;1163:1;1154:11;;;;;;;:::i;:::-;;;;;;;1144:21;;1206:3;1195:7;:14;;1187:23;;1213:4;1187:30;1179:38;;425:4;1333:5;:29;1366:1;1333:34;1329:197;;1397:8;;1406:3;;;:::i;:::-;;;;1397:13;;;;;;;:::i;:::-;;;;;;;1387:23;;1329:197;;;1486:2;1475:13;;;-1:-1:-1;;;;;1467:43:3;;-1:-1:-1;1329:197:3;374:4;1544:20;;1540:1960;;-1:-1:-1;;;;;1629:47:3;;1738:148;:5;1653:7;1857;1738:17;:148::i;:::-;1629:275;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1608:296:3;;-1:-1:-1;1608:296:3;-1:-1:-1;1540:1960:3;;;237:4;374;1929:5;:20;:36;1925:1575;;-1:-1:-1;;;;;2006:39:3;;2107:148;:5;2030:7;2226;2107:17;:148::i;:::-;2006:267;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:1575;285:4;374;2298:5;:20;:42;2294:1206;;-1:-1:-1;;;;;2381:45:3;;2488:148;:5;2405:7;2607;2488:17;:148::i;:::-;2381:273;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2294:1206;332:4;374;2679:5;:20;:41;2675:825;;2740:15;2773:14;2790:5;2809:7;2796:22;;2790:29;;;;;;;;;;:::i;:::-;;;;;;;2773:46;;2845:1;:8;2857:2;2845:14;2837:71;;;;-1:-1:-1;;;2837:71:3;;9966:2:4;2837:71:3;;;9948:21:4;10005:2;9985:18;;;9978:30;10044:34;10024:18;;;10017:62;-1:-1:-1;;;10095:18:4;;;10088:42;10147:19;;2837:71:3;9764:408:4;2837:71:3;2981:4;2974:12;;2968:19;;-1:-1:-1;;;;;;3043:39:3;;2968:19;3198:204;:5;3067:7;3344:1;3333:12;;;215:4:0;3325:54:3;3198:17;:204::i;:::-;3043:377;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3022:398:3;;-1:-1:-1;3022:398:3;-1:-1:-1;2675:825:3;;-1:-1:-1;;2675:825:3;;3459:26;;-1:-1:-1;;;3459:26:3;;10379:2:4;3459:26:3;;;10361:21:4;10418:2;10398:18;;;10391:30;-1:-1:-1;;;10437:18:4;;;10430:46;10493:18;;3459:26:3;10177:340:4;2675:825:3;3519:7;3514:435;;3550:14;;:18;3546:148;;3651:2;3642:7;3638:16;3627:27;;3546:148;3771:1;3826:7;3818:16;;3884:1;3867:7;:14;:18;:48;;;;;;;;;;;;;;;-1:-1:-1;;;3867:48:3;;;;;;3895:7;3867:48;3718:216;;-1:-1:-1;;;3718:216:3;;;;;;;;;;:::i;3514:435::-;472:4;3967:25;;:30;3963:214;;4017:48;:5;4052:2;4041:13;;;4057:7;4017:16;:48::i;:::-;3963:214;;;4112:50;:5;4149:2;4138:13;;;4154:7;4112:18;:50::i;:::-;4104:58;;3963:214;4200:3;;1093:3122;;;-1:-1:-1;4231:5:3;;793:3450;-1:-1:-1;;;;;;;;;793:3450:3:o;269:3487:0:-;399:16;427:12;503:11;582:9;577:183;597:2;593:1;:6;577:183;;;628:7;636:1;628:10;;;;;;;:::i;:::-;;;-1:-1:-1;;;657:22:0;;653:33;681:5;653:33;718:2;710:10;;;;;745:3;;577:183;;;-1:-1:-1;857:4:0;851:11;;937:60;;;924:74;;;972:4;1018:12;;1011:30;;;851:11;-1:-1:-1;909:1:0;791:20;1087:22;791:20;1182:2501;1202:2;1198:1;:6;1182:2501;;;1233:7;1241:1;1233:10;;;;;;;:::i;:::-;;;-1:-1:-1;;;1262:22:0;;1258:33;1286:5;1258:33;126:4;1310:25;;:30;1306:2303;;258:4;1364:3;:20;1360:1799;;-1:-1:-1;;1531:34:0;;;1527:50;1518:60;;1535:23;1505:74;1624:2;1611:24;;;;1604:38;;;1689:16;;1477:2;1459:21;;;;1709:1;1689:21;1685:105;;1761:5;1750:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;1738:29;;1685:105;1880:16;;1948:34;1862:35;;1948:34;;;-1:-1:-1;;1944:50:0;1935:60;;1929:4;1922:74;2039:59;1886:9;1970:4;1939:3;2066:8;:4;2073:1;2066:8;:::i;:::-;2095:2;2076:9;:16;:21;;;;:::i;:::-;2039:6;:59::i;:::-;2147:2;2128:9;:16;:21;;;;:::i;:::-;2120:29;;;;:::i;:::-;;;1306:2303;;1360:1799;2196:21;2220:5;170:4;2226:3;:20;2220:27;;;;;;;;:::i;:::-;;;;;;;;;;;;2286:15;;2628:24;;;2641:2;2628:24;2621:38;;;2753:25;;;2548:34;2829;;-1:-1:-1;;2825:50:0;2816:60;;2552:23;2803:74;2753:25;;;;2220:27;;-1:-1:-1;2920:184:0;2220:27;2269:14;2539:3;3042:8;2654:4;3049:1;3042:8;:::i;:::-;3076:6;2920;:184::i;:::-;3126:14;3134:6;3126:14;;:::i;:::-;;;2174:985;;1306:2303;;;3253:21;3277:5;170:4;3283:3;:20;3277:27;;;;;;;;:::i;:::-;;;;;;;;;;;;3387:15;;3450:34;3369;;3450;;;-1:-1:-1;;3446:50:0;3437:60;;3431:4;3424:74;3558:17;3552:24;3526;;;3539:2;3526:24;3519:58;-1:-1:-1;1306:2303:0;3641:2;3632:11;;;;;3668:3;;1182:2501;;;-1:-1:-1;;;3715:25:0;;-1:-1:-1;3722:3:0;;269:3487;-1:-1:-1;;;;269:3487:0:o;5285:464::-;5438:12;;;;-1:-1:-1;;5465:22:0;;5461:35;;5489:7;5285:464;;;:::o;5461:35::-;5506:18;5567:6;:13;5583:2;5567:18;;;;:::i;:::-;5557:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5557:29:0;;5527:5;170:4;5533:3;:20;5527:27;;;;;;;;:::i;:::-;;;;;;:59;;;5506:80;;5597:43;5604:6;5612:1;5615:5;5622:2;5626:6;:13;5597:6;:43::i;:::-;5688:6;5682:13;5731:1;5726:2;5719:5;5715:14;5708:25;;5659:84;;5285:464;;;:::o;3762:1517::-;3894:14;3934:12;;;;-1:-1:-1;;3960:22:0;;3956:40;;3991:5;3984:12;;;;;3956:40;126:4;4011:25;;:30;4007:1243;;258:4;4061:3;:20;4057:956;;4120:6;4109:29;;;;;;;;;;;;:::i;:::-;4101:37;;4007:1243;;4057:956;4362:2;4350:15;;;4344:22;;4430:12;;4401:125;;;;-1:-1:-1;;;4401:125:0;;13028:2:4;4401:125:0;;;13010:21:4;13067:2;13047:18;;;13040:30;13106:34;13086:18;;;13079:62;-1:-1:-1;;;13157:18:4;;;13150:40;13207:19;;4401:125:0;12826:406:4;4401:125:0;-1:-1:-1;4692:13:0;;-1:-1:-1;;4688:22:0;4707:2;4671:15;;;4664:47;;;4897:14;4888:24;;4884:33;;4864:54;;;4832:149;4007:1243;;;5095:6;:13;5112:2;5095:19;5070:118;;;;-1:-1:-1;;;5070:118:0;;13439:2:4;5070:118:0;;;13421:21:4;13478:2;13458:18;;;13451:30;13517:34;13497:18;;;13490:62;-1:-1:-1;;;13568:18:4;;;13561:38;13616:19;;5070:118:0;13237:404:4;5070:118:0;5233:6;5203:5;170:4;5209:3;:20;5203:27;;;;;;;;:::i;:::-;;;;;;:36;;;;4007:1243;-1:-1:-1;5267:5:0;;3762:1517;-1:-1:-1;;;3762:1517:0:o;5755:467::-;6171:3;6141:7;6136:2;6130:4;6126:13;6122:27;6097:3;6068:6;6063:2;6058:3;6054:12;6050:25;6027:1;6000:5;5968:224;5947:259;5755:467;;;;;:::o;14:131:4:-;-1:-1:-1;;;;;89:31:4;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:529::-;227:6;235;243;296:2;284:9;275:7;271:23;267:32;264:52;;;312:1;309;302:12;264:52;351:9;338:23;370:31;395:5;370:31;:::i;:::-;420:5;-1:-1:-1;477:2:4;462:18;;449:32;490:33;449:32;490:33;:::i;:::-;542:7;-1:-1:-1;601:2:4;586:18;;573:32;614:33;573:32;614:33;:::i;:::-;666:7;656:17;;;150:529;;;;;:::o;684:247::-;743:6;796:2;784:9;775:7;771:23;767:32;764:52;;;812:1;809;802:12;764:52;851:9;838:23;870:31;895:5;870:31;:::i;1128:388::-;1196:6;1204;1257:2;1245:9;1236:7;1232:23;1228:32;1225:52;;;1273:1;1270;1263:12;1225:52;1312:9;1299:23;1331:31;1356:5;1331:31;:::i;:::-;1381:5;-1:-1:-1;1438:2:4;1423:18;;1410:32;1451:33;1410:32;1451:33;:::i;:::-;1503:7;1493:17;;;1128:388;;;;;:::o;1953:367::-;2016:8;2026:6;2080:3;2073:4;2065:6;2061:17;2057:27;2047:55;;2098:1;2095;2088:12;2047:55;-1:-1:-1;2121:20:4;;2164:18;2153:30;;2150:50;;;2196:1;2193;2186:12;2150:50;2233:4;2225:6;2221:17;2209:29;;2293:3;2286:4;2276:6;2273:1;2269:14;2261:6;2257:27;2253:38;2250:47;2247:67;;;2310:1;2307;2300:12;2247:67;1953:367;;;;;:::o;2325:773::-;2447:6;2455;2463;2471;2524:2;2512:9;2503:7;2499:23;2495:32;2492:52;;;2540:1;2537;2530:12;2492:52;2580:9;2567:23;2609:18;2650:2;2642:6;2639:14;2636:34;;;2666:1;2663;2656:12;2636:34;2705:70;2767:7;2758:6;2747:9;2743:22;2705:70;:::i;:::-;2794:8;;-1:-1:-1;2679:96:4;-1:-1:-1;2882:2:4;2867:18;;2854:32;;-1:-1:-1;2898:16:4;;;2895:36;;;2927:1;2924;2917:12;2895:36;;2966:72;3030:7;3019:8;3008:9;3004:24;2966:72;:::i;:::-;2325:773;;;;-1:-1:-1;3057:8:4;-1:-1:-1;;;;2325:773:4:o;3363:127::-;3424:10;3419:3;3415:20;3412:1;3405:31;3455:4;3452:1;3445:15;3479:4;3476:1;3469:15;3495:275;3566:2;3560:9;3631:2;3612:13;;-1:-1:-1;;3608:27:4;3596:40;;3666:18;3651:34;;3687:22;;;3648:62;3645:88;;;3713:18;;:::i;:::-;3749:2;3742:22;3495:275;;-1:-1:-1;3495:275:4:o;3775:181::-;3833:4;3866:18;3858:6;3855:30;3852:56;;;3888:18;;:::i;:::-;-1:-1:-1;3933:1:4;3929:14;3945:4;3925:25;;3775:181::o;3961:186::-;4009:4;4042:18;4034:6;4031:30;4028:56;;;4064:18;;:::i;:::-;-1:-1:-1;4130:2:4;4109:15;-1:-1:-1;;4105:29:4;4136:4;4101:40;;3961:186::o;4152:1989::-;4281:6;4289;4297;4328:2;4371;4359:9;4350:7;4346:23;4342:32;4339:52;;;4387:1;4384;4377:12;4339:52;4427:9;4414:23;4456:18;4497:2;4489:6;4486:14;4483:34;;;4513:1;4510;4503:12;4483:34;4552:70;4614:7;4605:6;4594:9;4590:22;4552:70;:::i;:::-;4641:8;;-1:-1:-1;4526:96:4;-1:-1:-1;4695:2:4;;-1:-1:-1;4735:18:4;;;4722:32;4766:16;;;4763:36;;;4795:1;4792;4785:12;4763:36;4818:24;;4873:4;4865:13;;4861:27;-1:-1:-1;4851:55:4;;4902:1;4899;4892:12;4851:55;4938:2;4925:16;4961:58;4977:41;5015:2;4977:41;:::i;:::-;4961:58;:::i;:::-;5053:15;;;5135:1;5131:10;;;;5123:19;;5119:28;;;5084:12;;;;5159:19;;;5156:39;;;5191:1;5188;5181:12;5156:39;5223:2;5219;5215:11;5235:876;5251:6;5246:3;5243:15;5235:876;;;5337:3;5324:17;5373:2;5360:11;5357:19;5354:109;;;5417:1;5446:2;5442;5435:14;5354:109;5486:20;;5541:2;5533:11;;5529:25;-1:-1:-1;5519:123:4;;5596:1;5625:2;5621;5614:14;5519:123;5686:2;5682;5678:11;5665:25;5716:48;5732:31;5760:2;5732:31;:::i;5716:48::-;5791:2;5784:5;5777:17;5835:7;5830:2;5825;5821;5817:11;5813:20;5810:33;5807:126;;;5885:1;5915:3;5910;5903:16;5807:126;5988:2;5983;5979;5975:11;5970:2;5963:5;5959:14;5946:45;6036:1;6015:14;;;6011:23;;6004:34;;;;6051:18;;-1:-1:-1;6089:12:4;;;;5268;;5235:876;;;5239:3;6130:5;6120:15;;;;;;;;;4152:1989;;;;;:::o;6146:250::-;6231:1;6241:113;6255:6;6252:1;6249:13;6241:113;;;6331:11;;;6325:18;6312:11;;;6305:39;6277:2;6270:10;6241:113;;;-1:-1:-1;;6388:1:4;6370:16;;6363:27;6146:250::o;6401:270::-;6442:3;6480:5;6474:12;6507:6;6502:3;6495:19;6523:76;6592:6;6585:4;6580:3;6576:14;6569:4;6562:5;6558:16;6523:76;:::i;:::-;6653:2;6632:15;-1:-1:-1;;6628:29:4;6619:39;;;;6660:4;6615:50;;6401:270;-1:-1:-1;;6401:270:4:o;6676:800::-;6836:4;6865:2;6905;6894:9;6890:18;6935:2;6924:9;6917:21;6958:6;6993;6987:13;7024:6;7016;7009:22;7062:2;7051:9;7047:18;7040:25;;7124:2;7114:6;7111:1;7107:14;7096:9;7092:30;7088:39;7074:53;;7162:2;7154:6;7150:15;7183:1;7193:254;7207:6;7204:1;7201:13;7193:254;;;7300:2;7296:7;7284:9;7276:6;7272:22;7268:36;7263:3;7256:49;7328:39;7360:6;7351;7345:13;7328:39;:::i;:::-;7318:49;-1:-1:-1;7425:12:4;;;;7390:15;;;;7229:1;7222:9;7193:254;;;-1:-1:-1;7464:6:4;;6676:800;-1:-1:-1;;;;;;;6676:800:4:o;7481:335::-;7683:2;7665:21;;;7722:2;7702:18;;;7695:30;-1:-1:-1;;;7756:2:4;7741:18;;7734:41;7807:2;7792:18;;7481:335::o;8037:127::-;8098:10;8093:3;8089:20;8086:1;8079:31;8129:4;8126:1;8119:15;8153:4;8150:1;8143:15;8860:127;8921:10;8916:3;8912:20;8909:1;8902:31;8952:4;8949:1;8942:15;8976:4;8973:1;8966:15;8992:135;9031:3;9052:17;;;9049:43;;9072:18;;:::i;:::-;-1:-1:-1;9119:1:4;9108:13;;8992:135::o;9472:287::-;9601:3;9639:6;9633:13;9655:66;9714:6;9709:3;9702:4;9694:6;9690:17;9655:66;:::i;:::-;9737:16;;;;;9472:287;-1:-1:-1;;9472:287:4:o;10522:395::-;10717:25;;;-1:-1:-1;;;;;10778:32:4;;10773:2;10758:18;;10751:60;10847:2;10842;10827:18;;10820:30;;;-1:-1:-1;;10867:44:4;;10892:18;;10884:6;10867:44;:::i;:::-;10859:52;10522:395;-1:-1:-1;;;;;10522:395:4:o;10922:125::-;10987:9;;;11008:10;;;11005:36;;;11021:18;;:::i;:::-;10922:125;;;;:::o;11052:128::-;11119:9;;;11140:11;;;11137:37;;;11154:18;;:::i;11185:1636::-;11289:6;11320:2;11363;11351:9;11342:7;11338:23;11334:32;11331:52;;;11379:1;11376;11369:12;11331:52;11412:9;11406:16;11441:18;11482:2;11474:6;11471:14;11468:34;;;11498:1;11495;11488:12;11468:34;11536:6;11525:9;11521:22;11511:32;;11581:7;11574:4;11570:2;11566:13;11562:27;11552:55;;11603:1;11600;11593:12;11552:55;11632:2;11626:9;11655:58;11671:41;11709:2;11671:41;:::i;11655:58::-;11747:15;;;11829:1;11825:10;;;;11817:19;;11813:28;;;11778:12;;;;11853:19;;;11850:39;;;11885:1;11882;11875:12;11850:39;11917:2;11913;11909:11;11929:862;11945:6;11940:3;11937:15;11929:862;;;12024:3;12018:10;12060:2;12047:11;12044:19;12041:109;;;12104:1;12133:2;12129;12122:14;12041:109;12173:20;;12228:2;12220:11;;12216:25;-1:-1:-1;12206:123:4;;12283:1;12312:2;12308;12301:14;12206:123;12366:2;12362;12358:11;12352:18;12393:2;12421:48;12437:31;12465:2;12437:31;:::i;12421:48::-;12496:2;12489:5;12482:17;12540:7;12535:2;12530;12526;12522:11;12518:20;12515:33;12512:126;;;12590:1;12620:3;12615;12608:16;12512:126;12651:67;12715:2;12710;12703:5;12699:14;12694:2;12690;12686:11;12651:67;:::i;:::-;12731:18;;-1:-1:-1;;;12769:12:4;;;;11962;;11929:862;;;-1:-1:-1;12810:5:4;11185:1636;-1:-1:-1;;;;;;;;11185:1636:4:o
Swarm Source
ipfs://bc488897086574fb93bc838a9bd5eb177f591f592d440e94ff6c9c70abfc7a29
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingMultichain Portfolio | 27 Chains
Chain Token Portfolio % Price Amount Value ETH 4.38% $0.999854 44.7941 $44.79 ETH 3.53% $1.06 34.1146 $36.13 ETH 3.48% $0.474437 75.1767 $35.67 ETH 3.45% $1.05 33.6476 $35.36 ETH 3.31% $1.01 33.6717 $33.86 ETH 3.28% $0.998275 33.597 $33.54 ETH 3.11% $0.997578 31.9107 $31.83 ETH 2.96% $2,562.94 0.0118 $30.33 ETH 2.91% $0.994312 29.9885 $29.82 ETH 2.90% $0.246189 120.7327 $29.72 ETH 2.60% $0.9931 26.7941 $26.61 ETH 2.58% $0.998129 26.4937 $26.44 ETH 2.24% $0.470775 48.5984 $22.88 ETH 2.16% $0.260864 84.8988 $22.15 ETH 2.15% $3.75 5.8809 $22.05 ETH 1.96% $1.1 18.2699 $20.1 ETH 1.90% $61,174 0.00031767 $19.43 ETH 1.81% $0.997064 18.5395 $18.49 ETH 1.78% $6 3.0295 $18.18 ETH 1.71% $2,371.1 0.00740081 $17.55 ETH 1.51% $2,366.12 0.00654903 $15.5 ETH 1.40% $2,542.39 0.00565241 $14.37 ETH 1.40% $61,070 0.00023517 $14.36 ETH 1.36% $0.529872 26.2622 $13.92 ETH 1.30% $1.09 12.1995 $13.32 ETH 1.28% $1.5 8.7207 $13.08 ETH 1.23% $0.996132 12.6476 $12.6 ETH 1.11% $9.95 1.1383 $11.33 ETH 1.09% $0.994642 11.1688 $11.11 ETH 0.99% $65.73 0.1546 $10.16 ETH 0.97% $0.999763 9.9456 $9.94 ETH 0.91% $127.3 0.0734 $9.34 ETH 0.88% $1.1 8.1775 $9 ETH 0.87% $0.999669 8.8783 $8.88 ETH 0.85% $2,424.73 0.00357323 $8.66 ETH 0.80% $2,371.09 0.00345773 $8.2 ETH 0.79% $15.49 0.523 $8.1 ETH 0.78% $0.026002 308.5766 $8.02 ETH 0.78% $2,490.4 0.00319812 $7.96 ETH 0.73% $1.08 6.938 $7.47 ETH 0.73% $1,452.64 0.00513023 $7.45 ETH 0.73% $2,684.31 0.00276998 $7.44 ETH 0.72% $33.64 0.2179 $7.33 ETH 0.71% $138.81 0.0523 $7.26 ETH 0.68% $0.08519 82.044 $6.99 ETH 0.66% $0.999292 6.7673 $6.76 ETH 0.65% $1.1 6.0412 $6.67 ETH 0.64% $2,806.7 0.00233073 $6.54 ETH 0.60% $0.999141 6.1418 $6.14 ETH 0.58% $0.999937 5.9439 $5.94 ETH 0.58% $1.89 3.13 $5.92 ETH 0.58% $0.632316 9.3421 $5.91 ETH 0.57% $0.124878 47.0416 $5.87 ETH 0.56% $1.67 3.4184 $5.71 ETH 0.55% $0.341054 16.3829 $5.59 ETH 0.54% $0.049698 111.2899 $5.53 ETH 0.53% $0.998733 5.4092 $5.4 ETH 0.53% $5.24 1.0308 $5.4 ETH 0.50% $0.846303 6.0162 $5.09 ETH 0.49% $0.154838 32.4063 $5.02 ETH 0.49% $0.99926 5.003 $5 ETH 0.47% $3.02 1.5874 $4.79 ETH 0.44% $0.979643 4.5876 $4.49 ETH 0.42% $0.168166 25.2837 $4.25 ETH 0.41% $0.256553 16.3339 $4.19 ETH 0.41% $4,951.95 0.00083993 $4.16 ETH 0.40% $9.79 0.42 $4.11 ETH 0.40% $0.006479 630.6854 $4.09 ETH 0.38% $0.999523 3.86 $3.86 ETH 0.37% $0.980956 3.8158 $3.74 ETH 0.36% $0.026481 139.041 $3.68 ETH 0.35% $2,455.1 0.00146045 $3.59 ETH 0.33% $0.61088 5.4583 $3.33 ETH 0.31% $2,377.08 0.0013397 $3.18 ETH 0.30% $0.251684 12.3618 $3.11 ETH 0.28% $0.689591 4.1779 $2.88 ETH 0.28% $0.199872 14.1 $2.82 ETH 0.27% $1.94 1.407 $2.73 ETH 0.24% $0.983155 2.5232 $2.48 ETH 0.24% $2,479.45 0.00097611 $2.42 ETH 0.23% $6.66 0.3608 $2.4 ETH 0.23% $0.246829 9.5643 $2.36 ETH 0.22% $2.98 0.7727 $2.3 ETH 0.22% $1.03 2.1952 $2.25 ETH 0.22% $1.37 1.637 $2.24 ETH 0.20% $0.014568 138.2899 $2.01 ETH 0.19% $0.130017 14.8613 $1.93 ETH 0.18% $2,379.12 0.00079482 $1.89 ETH 0.18% $1.15 1.6396 $1.89 ETH 0.18% $0.998205 1.8481 $1.84 ETH 0.18% $2,492.45 0.00073888 $1.84 ETH 0.17% $3.91 0.4421 $1.73 ETH 0.17% $1.1 1.5699 $1.73 ETH 0.13% $0.000014 98,778.7117 $1.33 ETH 0.12% $0.040409 29.9287 $1.21 ETH 0.12% $21.87 0.0543 $1.19 ETH 0.11% $0.011547 100.0474 $1.16 ETH 0.11% $0.100899 11.4139 $1.15 ETH 0.11% $2,771.58 0.00040043 $1.11 ETH 0.10% $2,572.8 0.00041172 $1.06 ETH 0.10% $5.15 0.2049 $1.06 ETH 0.10% $0.011568 88.5648 $1.02 ETH 0.10% $0.283216 3.6038 $1.02 ETH 0.10% $1 1.0026 $1 ETH 0.10% $0.998911 0.9967 $0.9956 ETH 0.10% $1.07 0.9267 $0.9934 ETH 0.10% $2,416.95 0.00040821 $0.9866 ETH 0.09% $0.142587 6.7907 $0.9682 ETH 0.09% $69.22 0.014 $0.9674 ETH 0.09% $36.53 0.026 $0.9513 ETH 0.09% $0.027437 33.0186 $0.9059 ETH 0.09% $0.99959 0.8915 $0.8911 ETH 0.08% $1.2 0.6848 $0.8217 ETH 0.07% $16.69 0.0448 $0.7471 ETH 0.07% $0.312869 2.3009 $0.7198 ETH 0.06% $66.52 0.00956303 $0.6361 ETH 0.06% $0.015821 39.8854 $0.631 ETH 0.06% $2,412.46 0.00024937 $0.6015 ETH 0.05% <$0.000001 4,304,385.1178 $0.5423 ETH 0.05% $0.02379 21.036 $0.5004 ETH 0.05% $0.101994 4.6424 $0.4735 ETH 0.04% $2,619.99 0.0001673 $0.4383 ETH 0.04% $150.21 0.00261361 $0.3925 ETH 0.04% $0.224164 1.6797 $0.3765 ETH 0.03% $0.286558 1.1223 $0.3216 ETH 0.03% $1.96 0.1575 $0.3081 ETH 0.03% $0.040894 7.0691 $0.289 ETH 0.03% $1.38 0.1942 $0.268 ETH 0.02% $1.12 0.217 $0.2434 ETH 0.02% $0.816507 0.2892 $0.2361 ETH 0.02% $0.422998 0.5215 $0.2205 ETH 0.02% $1.25 0.1568 $0.1959 ETH 0.02% $0.994914 0.1788 $0.1778 ETH 0.02% $1.04 0.1633 $0.1689 ETH 0.01% $0.789245 0.1796 $0.1417 ETH 0.01% $0.004889 27.8231 $0.136 ETH 0.01% $0.196075 0.6707 $0.1314 ETH 0.01% $0.106301 1.195 $0.127 ETH 0.01% $0.027291 4.4037 $0.1201 ETH 0.01% $0.996787 0.106 $0.1056 Loading...Loading[ 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.Address Cards
To use this feature, please login to your Etherscan account and return to this page.Before You Copy
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.