More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 231 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Reward | 16099549 | 698 days ago | IN | 0 ETH | 0.00084333 | ||||
Claim Reward | 16099548 | 698 days ago | IN | 0 ETH | 0.00103635 | ||||
Claim Reward | 16099547 | 698 days ago | IN | 0 ETH | 0.00084661 | ||||
Claim Reward | 16099546 | 698 days ago | IN | 0 ETH | 0.00081083 | ||||
Claim Reward | 16099544 | 698 days ago | IN | 0 ETH | 0.00110501 | ||||
Claim Reward | 16099543 | 698 days ago | IN | 0 ETH | 0.0008671 | ||||
Claim Reward | 16099542 | 698 days ago | IN | 0 ETH | 0.00057773 | ||||
Claim Reward | 16099542 | 698 days ago | IN | 0 ETH | 0.00091497 | ||||
Claim Reward | 16099541 | 698 days ago | IN | 0 ETH | 0.00089935 | ||||
Claim Reward | 16099540 | 698 days ago | IN | 0 ETH | 0.00085596 | ||||
Claim Reward | 16099539 | 698 days ago | IN | 0 ETH | 0.0011253 | ||||
Claim Reward | 16099538 | 698 days ago | IN | 0 ETH | 0.0011438 | ||||
Claim Reward | 16099537 | 698 days ago | IN | 0 ETH | 0.00137688 | ||||
Claim Reward | 16099528 | 698 days ago | IN | 0 ETH | 0.00113781 | ||||
Claim Reward | 16099527 | 698 days ago | IN | 0 ETH | 0.00120287 | ||||
Claim Reward | 16099526 | 698 days ago | IN | 0 ETH | 0.00109477 | ||||
Claim Reward | 16099526 | 698 days ago | IN | 0 ETH | 0.00109477 | ||||
Claim Reward | 16099519 | 698 days ago | IN | 0 ETH | 0.0010201 | ||||
Claim Reward | 16099518 | 698 days ago | IN | 0 ETH | 0.00115757 | ||||
Claim Reward | 16099518 | 698 days ago | IN | 0 ETH | 0.00091553 | ||||
Claim Reward | 16099515 | 698 days ago | IN | 0 ETH | 0.00054816 | ||||
Claim Reward | 16099514 | 698 days ago | IN | 0 ETH | 0.00055134 | ||||
Claim Reward | 16099513 | 698 days ago | IN | 0 ETH | 0.00086187 | ||||
Claim Reward | 16099513 | 698 days ago | IN | 0 ETH | 0.00086187 | ||||
Claim Reward | 16099512 | 698 days ago | IN | 0 ETH | 0.00086332 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BodegaClaim
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-15 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.14; interface IERC20 { function totalSupply() external view returns (uint256); function symbol() external view returns (string memory); function name() external view returns (string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the number of decimal places */ function decimals() external view returns (uint8); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: 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 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable { address private owner; // event for EVM logging event OwnerSet(address indexed oldOwner, address indexed newOwner); // modifier to check if caller is owner modifier onlyOwner() { // If the first argument of 'require' evaluates to 'false', execution terminates and all // changes to the state and to Ether balances are reverted. // This used to consume all gas in old EVM versions, but not anymore. // It is often a good idea to use 'require' to check if functions are called correctly. // As a second argument, you can also provide an explanation about what went wrong. require(msg.sender == owner, "Caller is not owner"); _; } /** * @dev Set contract deployer as owner */ constructor() { owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor emit OwnerSet(address(0), owner); } /** * @dev Change owner * @param newOwner address of new owner */ function changeOwner(address newOwner) public onlyOwner { emit OwnerSet(owner, newOwner); owner = newOwner; } /** * @dev Return owner address * @return address of owner */ function getOwner() external view returns (address) { return owner; } } interface IBodega { function allocationClass0() external view returns (uint256); function allocationClass1() external view returns (uint256); function allocationClass2() external view returns (uint256); function totalClass0() external view returns (uint256); function totalClass1() external view returns (uint256); function totalClass2() external view returns (uint256); function ownerOf(uint256 tokenId) external view returns (address); function getIDsByOwner(address owner) external view returns (uint256[] memory); } interface ITetherSucks { function transferFrom( address sender, address recipient, uint256 amount ) external; function transfer(address recipient, uint256 amount) external; } contract BodegaClaim is Ownable { // WETH address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // USDT address private constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; // Bodega NFT contract IBodega public constant bodega = IBodega(0x6C208c2785050b5A79aC1e7Bd317d81A2E477837); // Mapping from tokenId to reward token to excluded rewards mapping( uint256 => mapping ( address => uint256 )) private totalExcluded; struct RewardToken { uint totalRewards; uint dividendsPerNFTClass0; uint dividendsPerNFTClass1; uint dividendsPerNFTClass2; } // reward tracking mapping ( address => RewardToken ) public rewardToken; // constant break points uint256 public constant breakPoint0 = 111; uint256 public constant breakPoint1 = 1_222; function giveRewards(address token, uint256 amount) external { uint256 received = _transferIn(token, amount); _register(token, received); } function giveETH() external payable { _register(WETH, msg.value); } function claimRewardsForUser(address token) external { _batchClaimRewardsMemory(token, msg.sender, getIDsByOwner(msg.sender)); } function claimRewards(address token, uint256[] calldata tokenIds) external { _batchClaimRewards(token, msg.sender, tokenIds); } function claimReward(address token, uint256 tokenId) external { _claimReward(token, tokenId); } function _register(address token, uint256 amount) internal { (uint256 c0, uint256 c1, uint256 c2) = divvyRewards(amount); uint tot0 = totalClass0(); uint tot1 = totalClass1(); uint tot2 = totalClass2(); unchecked { rewardToken[token].totalRewards += amount; if (tot0 > 0) { rewardToken[token].dividendsPerNFTClass0 += c0 / tot0; } if (tot1 > 0) { rewardToken[token].dividendsPerNFTClass1 += c1 / tot1; } if (tot2 > 0) { rewardToken[token].dividendsPerNFTClass2 += c2 / tot2; } } } function _transferIn(address token, uint256 amount) internal returns (uint256) { uint256 before = IERC20(token).balanceOf(address(this)); if (token == USDT) { ITetherSucks(token).transferFrom(msg.sender, address(this), amount); } else { IERC20(token).transferFrom(msg.sender, address(this), amount); } uint256 After = IERC20(token).balanceOf(address(this)); require(After > before, "Zero Received"); return After - before; } function _batchClaimRewards(address token, address user, uint256[] calldata tokenIds) internal { uint256 total; uint256 len = tokenIds.length; for (uint256 i = 0; i < len; ) { uint256 ID = tokenIds[i]; require(bodega.ownerOf(ID) == user, "Not Owner Of TokenID"); total += pendingRewardsForID(token, ID); totalExcluded[ID][token] = getCumulativeDividends(token, ID); unchecked { ++i; } } // send rewards to user _send(token, user, total); } function _batchClaimRewardsMemory(address token, address user, uint256[] memory tokenIds) internal { uint256 total; uint256 len = tokenIds.length; for (uint256 i = 0; i < len; ) { uint256 ID = tokenIds[i]; require(bodega.ownerOf(ID) == user, "Not Owner Of TokenID"); total += pendingRewardsForID(token, ID); totalExcluded[ID][token] = getCumulativeDividends(token, ID); unchecked { ++i; } } // send rewards to user _send(token, user, total); } /** Claims Reward For User */ function _claimReward(address token, uint256 tokenId) internal { // owner of token id address owner = bodega.ownerOf(tokenId); require( owner != address(0), 'Zero Owner' ); // fetch pending rewards uint256 pending = pendingRewardsForID(token, tokenId); // reset total rewards totalExcluded[tokenId][token] = getCumulativeDividends(token, tokenId); // transfer reward to user _send(token, owner, pending); } function _send(address token, address to, uint256 amount) internal { // reward token balance uint256 rBal = token == WETH ? address(this).balance : IERC20(token).balanceOf(address(this)); if (amount > rBal) { amount = rBal; } // return if no rewards if (amount == 0) { return; } // require success if (token == WETH) { (bool s,) = payable(to).call{value: amount}(""); require(s); } else { if (token == USDT) { ITetherSucks(token).transfer(to, amount); } else { IERC20(token).transfer(to, amount); } } } function divvyRewards(uint256 amount) public view returns ( uint256 class0, uint256 class1, uint256 class2 ) { uint all0 = allocationClass0(); uint all1 = allocationClass1(); uint all2 = allocationClass2(); uint total = all0 + all1 + all2; class0 = ( amount * all0 ) / total; class1 = ( amount * all1 ) / total; class2 = amount - (class0 + class1); } /** Pending Rewards For `tokenId` */ function pendingRewardsForUser(address token, address user) external view returns (uint256 total) { uint256[] memory tokenIds = getIDsByOwner(user); uint256 len = tokenIds.length; for (uint256 i = 0; i < len; ) { total += pendingRewardsForID(token, tokenIds[i]); unchecked { ++i; } } } /** Pending Rewards For `tokenId` */ function pendingRewards(address token, uint256[] calldata tokenIds) public view returns (uint256 total) { uint256 len = tokenIds.length; for (uint256 i = 0; i < len; ) { total += pendingRewardsForID(token, tokenIds[i]); unchecked { ++i; } } } /** Pending Rewards For `tokenId` */ function pendingRewardsForID(address token, uint256 tokenId) public view returns (uint256) { uint256 accountTotalDividends = getCumulativeDividends(token, tokenId); uint256 accountTotalExcluded = totalExcluded[tokenId][token]; if (accountTotalDividends <= accountTotalExcluded) { return 0; } return accountTotalDividends - accountTotalExcluded; } /** Cumulative Dividends For A Number Of Tokens */ function getCumulativeDividends(address token, uint256 tokenId) internal view returns (uint256) { if (tokenId < breakPoint0) { return rewardToken[token].dividendsPerNFTClass0; } else if (tokenId < breakPoint1) { return rewardToken[token].dividendsPerNFTClass1; } else { return rewardToken[token].dividendsPerNFTClass2; } } function getIDsByOwner(address owner) public view returns (uint256[] memory) { return bodega.getIDsByOwner(owner); } function allocationClass0() public view returns (uint256) { return bodega.allocationClass0(); } function allocationClass1() public view returns (uint256) { return bodega.allocationClass1(); } function allocationClass2() public view returns (uint256) { return bodega.allocationClass2(); } function totalClass0() public view returns (uint256) { return bodega.totalClass0(); } function totalClass1() public view returns (uint256) { return bodega.totalClass1(); } function totalClass2() public view returns (uint256) { return bodega.totalClass2(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"inputs":[],"name":"allocationClass0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationClass1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationClass2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bodega","outputs":[{"internalType":"contract IBodega","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"breakPoint0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"breakPoint1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimRewardsForUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"divvyRewards","outputs":[{"internalType":"uint256","name":"class0","type":"uint256"},{"internalType":"uint256","name":"class1","type":"uint256"},{"internalType":"uint256","name":"class2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getIDsByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"giveRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"pendingRewardsForID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"pendingRewardsForUser","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardToken","outputs":[{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"dividendsPerNFTClass0","type":"uint256"},{"internalType":"uint256","name":"dividendsPerNFTClass1","type":"uint256"},{"internalType":"uint256","name":"dividendsPerNFTClass2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClass0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClass1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClass2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a36116db8061005f6000396000f3fe6080604052600436106101355760003560e01c8063887c207a116100ab578063b121c95e1161006f578063b121c95e1461033b578063b36444c81461035b578063bc6e82b314610370578063cdef91d014610385578063da7e690c146103e9578063deb849971461041157600080fd5b8063887c207a14610278578063893d20e81461028e5780638d673c94146102c0578063a6f9dae1146102fb578063aea95da61461031b57600080fd5b80635ece6aa1116100fd5780635ece6aa1146101f157806367349ad81461020657806367a594f61461021b5780636ebf9f65146102305780637bc299d61461023857806387a7433b1461025857600080fd5b806305231dea1461013a578063165059291461015c578063174e31c41461018457806337619e76146101a45780635bf244be146101c4575b600080fd5b34801561014657600080fd5b5061015a610155366004611359565b610426565b005b34801561016857600080fd5b50610171610437565b6040519081526020015b60405180910390f35b34801561019057600080fd5b5061015a61019f3660046113e1565b6104b4565b3480156101b057600080fd5b5061015a6101bf36600461140d565b6104c2565b3480156101d057600080fd5b506101e46101df36600461140d565b6104d8565b60405161017b9190611431565b3480156101fd57600080fd5b50610171606f81565b34801561021257600080fd5b50610171610561565b34801561022757600080fd5b506101716105b5565b61015a610609565b34801561024457600080fd5b5061015a6102533660046113e1565b610629565b34801561026457600080fd5b50610171610273366004611359565b610641565b34801561028457600080fd5b506101716104c681565b34801561029a57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017b565b3480156102cc57600080fd5b506102e06102db366004611475565b61068d565b6040805193845260208401929092529082015260600161017b565b34801561030757600080fd5b5061015a61031636600461140d565b61071c565b34801561032757600080fd5b5061017161033636600461148e565b6107cc565b34801561034757600080fd5b506101716103563660046113e1565b610828565b34801561036757600080fd5b50610171610880565b34801561037c57600080fd5b506101716108d4565b34801561039157600080fd5b506103c96103a036600461140d565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60408051948552602085019390935291830152606082015260800161017b565b3480156103f557600080fd5b506102a8736c208c2785050b5a79ac1e7bd317d81a2e47783781565b34801561041d57600080fd5b50610171610928565b6104328333848461097c565b505050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663165059296040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906114c7565b905090565b6104be8282610ade565b5050565b6104d581336104d0336104d8565b610be6565b50565b604051632df9225f60e11b81526001600160a01b0382166004820152606090736c208c2785050b5a79ac1e7bd317d81a2e47783790635bf244be90602401600060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261055b91908101906114f6565b92915050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b03166367349ad86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b03166367a594f66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b61062773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc234610d4a565b565b60006106358383610e5f565b90506104328382610d4a565b600081815b818110156106845761067086868684818110610664576106646115b4565b90506020020135610828565b61067a90846115e0565b9250600101610646565b50509392505050565b60008060008061069b610928565b905060006106a76108d4565b905060006106b3610437565b90506000816106c284866115e0565b6106cc91906115e0565b9050806106d9858a6115f8565b6106e3919061162d565b9650806106f0848a6115f8565b6106fa919061162d565b955061070686886115e0565b610710908961164f565b96989597505050505050565b6000546001600160a01b031633146107715760405162461bcd60e51b815260206004820152601360248201527221b0b63632b91034b9903737ba1037bbb732b960691b60448201526064015b60405180910390fd5b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806107d8836104d8565b805190915060005b8181101561081f5761080b868483815181106107fe576107fe6115b4565b6020026020010151610828565b61081590856115e0565b93506001016107e0565b50505092915050565b600080610835848461108d565b60008481526001602090815260408083206001600160a01b038916845290915290205490915080821161086d5760009250505061055b565b610877818361164f565b95945050505050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663b36444c86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663bc6e82b36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663deb849976040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b600081815b81811015610aca57600085858381811061099d5761099d6115b4565b905060200201359050866001600160a01b0316736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016109f291815260200190565b602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190611666565b6001600160a01b031614610a805760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c8813d988151bdad95b925160621b6044820152606401610768565b610a8a8882610828565b610a9490856115e0565b9350610aa0888261108d565b60009182526001602081815260408085206001600160a01b038d1686529091529092205501610981565b50610ad6868684611109565b505050505050565b6040516331a9108f60e11b815260048101829052600090736c208c2785050b5a79ac1e7bd317d81a2e47783790636352211e90602401602060405180830381865afa158015610b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b559190611666565b90506001600160a01b038116610b9a5760405162461bcd60e51b815260206004820152600a6024820152692d32b9379027bbb732b960b11b6044820152606401610768565b6000610ba68484610828565b9050610bb2848461108d565b60008481526001602090815260408083206001600160a01b0389168452909152902055610be0848383611109565b50505050565b8051600090815b81811015610d37576000848281518110610c0957610c096115b4565b60200260200101519050856001600160a01b0316736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610c5f91815260200190565b602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190611666565b6001600160a01b031614610ced5760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c8813d988151bdad95b925160621b6044820152606401610768565b610cf78782610828565b610d0190856115e0565b9350610d0d878261108d565b60009182526001602081815260408085206001600160a01b038c1686529091529092205501610bed565b50610d43858584611109565b5050505050565b6000806000610d588461068d565b9250925092506000610d68610880565b90506000610d746105b5565b90506000610d80610561565b6001600160a01b038916600090815260026020526040902080548901905590508215610ddc57828681610db557610db5611617565b6001600160a01b038a16600090815260026020526040902060010180549290910490910190555b8115610e1957818581610df157610df1611617565b6001600160a01b038a1660009081526002602081905260409091200180549290910490910190555b8015610e5557808481610e2e57610e2e611617565b6001600160a01b038a16600090815260026020526040902060030180549290910490910190555b5050505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc91906114c7565b905073dac17f958d2ee523a2206206994597c13d831ec6196001600160a01b03851601610f5e576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b50505050610fd7565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611683565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104291906114c7565b90508181116110835760405162461bcd60e51b815260206004820152600d60248201526c16995c9bc8149958d95a5d9959609a1b6044820152606401610768565b610877828261164f565b6000606f8210156110ba57506001600160a01b03821660009081526002602052604090206001015461055b565b6104c68210156110e757506001600160a01b0382166000908152600260208190526040909120015461055b565b506001600160a01b03821660009081526002602052604090206003015461055b565b60006001600160a01b03841673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21461119c576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119791906114c7565b61119e565b475b9050808211156111ac578091505b816000036111ba5750505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b03851601611245576000836001600160a01b03168360405160006040518083038185875af1925050503d806000811461122c576040519150601f19603f3d011682016040523d82523d6000602084013e611231565b606091505b505090508061123f57600080fd5b50610be0565b73dac17f958d2ee523a2206206994597c13d831ec6196001600160a01b038516016112d15760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb90604401600060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50505050610be0565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611683565b6001600160a01b03811681146104d557600080fd5b60008060006040848603121561136e57600080fd5b833561137981611344565b9250602084013567ffffffffffffffff8082111561139657600080fd5b818601915086601f8301126113aa57600080fd5b8135818111156113b957600080fd5b8760208260051b85010111156113ce57600080fd5b6020830194508093505050509250925092565b600080604083850312156113f457600080fd5b82356113ff81611344565b946020939093013593505050565b60006020828403121561141f57600080fd5b813561142a81611344565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114695783518352928401929184019160010161144d565b50909695505050505050565b60006020828403121561148757600080fd5b5035919050565b600080604083850312156114a157600080fd5b82356114ac81611344565b915060208301356114bc81611344565b809150509250929050565b6000602082840312156114d957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561150957600080fd5b825167ffffffffffffffff8082111561152157600080fd5b818501915085601f83011261153557600080fd5b815181811115611547576115476114e0565b8060051b604051601f19603f8301168101818110858211171561156c5761156c6114e0565b60405291825284820192508381018501918883111561158a57600080fd5b938501935b828510156115a85784518452938501939285019261158f565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156115f3576115f36115ca565b500190565b6000816000190483118215151615611612576116126115ca565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261164a57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611661576116616115ca565b500390565b60006020828403121561167857600080fd5b815161142a81611344565b60006020828403121561169557600080fd5b8151801515811461142a57600080fdfea2646970667358221220477f3429830581dd0332505508a63c086c07330ca8b084703d0e4e7a750b3ad064736f6c634300080e0033
Deployed Bytecode
0x6080604052600436106101355760003560e01c8063887c207a116100ab578063b121c95e1161006f578063b121c95e1461033b578063b36444c81461035b578063bc6e82b314610370578063cdef91d014610385578063da7e690c146103e9578063deb849971461041157600080fd5b8063887c207a14610278578063893d20e81461028e5780638d673c94146102c0578063a6f9dae1146102fb578063aea95da61461031b57600080fd5b80635ece6aa1116100fd5780635ece6aa1146101f157806367349ad81461020657806367a594f61461021b5780636ebf9f65146102305780637bc299d61461023857806387a7433b1461025857600080fd5b806305231dea1461013a578063165059291461015c578063174e31c41461018457806337619e76146101a45780635bf244be146101c4575b600080fd5b34801561014657600080fd5b5061015a610155366004611359565b610426565b005b34801561016857600080fd5b50610171610437565b6040519081526020015b60405180910390f35b34801561019057600080fd5b5061015a61019f3660046113e1565b6104b4565b3480156101b057600080fd5b5061015a6101bf36600461140d565b6104c2565b3480156101d057600080fd5b506101e46101df36600461140d565b6104d8565b60405161017b9190611431565b3480156101fd57600080fd5b50610171606f81565b34801561021257600080fd5b50610171610561565b34801561022757600080fd5b506101716105b5565b61015a610609565b34801561024457600080fd5b5061015a6102533660046113e1565b610629565b34801561026457600080fd5b50610171610273366004611359565b610641565b34801561028457600080fd5b506101716104c681565b34801561029a57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017b565b3480156102cc57600080fd5b506102e06102db366004611475565b61068d565b6040805193845260208401929092529082015260600161017b565b34801561030757600080fd5b5061015a61031636600461140d565b61071c565b34801561032757600080fd5b5061017161033636600461148e565b6107cc565b34801561034757600080fd5b506101716103563660046113e1565b610828565b34801561036757600080fd5b50610171610880565b34801561037c57600080fd5b506101716108d4565b34801561039157600080fd5b506103c96103a036600461140d565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60408051948552602085019390935291830152606082015260800161017b565b3480156103f557600080fd5b506102a8736c208c2785050b5a79ac1e7bd317d81a2e47783781565b34801561041d57600080fd5b50610171610928565b6104328333848461097c565b505050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663165059296040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906114c7565b905090565b6104be8282610ade565b5050565b6104d581336104d0336104d8565b610be6565b50565b604051632df9225f60e11b81526001600160a01b0382166004820152606090736c208c2785050b5a79ac1e7bd317d81a2e47783790635bf244be90602401600060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261055b91908101906114f6565b92915050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b03166367349ad86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b03166367a594f66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b61062773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc234610d4a565b565b60006106358383610e5f565b90506104328382610d4a565b600081815b818110156106845761067086868684818110610664576106646115b4565b90506020020135610828565b61067a90846115e0565b9250600101610646565b50509392505050565b60008060008061069b610928565b905060006106a76108d4565b905060006106b3610437565b90506000816106c284866115e0565b6106cc91906115e0565b9050806106d9858a6115f8565b6106e3919061162d565b9650806106f0848a6115f8565b6106fa919061162d565b955061070686886115e0565b610710908961164f565b96989597505050505050565b6000546001600160a01b031633146107715760405162461bcd60e51b815260206004820152601360248201527221b0b63632b91034b9903737ba1037bbb732b960691b60448201526064015b60405180910390fd5b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806107d8836104d8565b805190915060005b8181101561081f5761080b868483815181106107fe576107fe6115b4565b6020026020010151610828565b61081590856115e0565b93506001016107e0565b50505092915050565b600080610835848461108d565b60008481526001602090815260408083206001600160a01b038916845290915290205490915080821161086d5760009250505061055b565b610877818361164f565b95945050505050565b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663b36444c86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663bc6e82b36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b6000736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b031663deb849976040518163ffffffff1660e01b8152600401602060405180830381865afa15801561048b573d6000803e3d6000fd5b600081815b81811015610aca57600085858381811061099d5761099d6115b4565b905060200201359050866001600160a01b0316736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016109f291815260200190565b602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190611666565b6001600160a01b031614610a805760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c8813d988151bdad95b925160621b6044820152606401610768565b610a8a8882610828565b610a9490856115e0565b9350610aa0888261108d565b60009182526001602081815260408085206001600160a01b038d1686529091529092205501610981565b50610ad6868684611109565b505050505050565b6040516331a9108f60e11b815260048101829052600090736c208c2785050b5a79ac1e7bd317d81a2e47783790636352211e90602401602060405180830381865afa158015610b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b559190611666565b90506001600160a01b038116610b9a5760405162461bcd60e51b815260206004820152600a6024820152692d32b9379027bbb732b960b11b6044820152606401610768565b6000610ba68484610828565b9050610bb2848461108d565b60008481526001602090815260408083206001600160a01b0389168452909152902055610be0848383611109565b50505050565b8051600090815b81811015610d37576000848281518110610c0957610c096115b4565b60200260200101519050856001600160a01b0316736c208c2785050b5a79ac1e7bd317d81a2e4778376001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610c5f91815260200190565b602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190611666565b6001600160a01b031614610ced5760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c8813d988151bdad95b925160621b6044820152606401610768565b610cf78782610828565b610d0190856115e0565b9350610d0d878261108d565b60009182526001602081815260408085206001600160a01b038c1686529091529092205501610bed565b50610d43858584611109565b5050505050565b6000806000610d588461068d565b9250925092506000610d68610880565b90506000610d746105b5565b90506000610d80610561565b6001600160a01b038916600090815260026020526040902080548901905590508215610ddc57828681610db557610db5611617565b6001600160a01b038a16600090815260026020526040902060010180549290910490910190555b8115610e1957818581610df157610df1611617565b6001600160a01b038a1660009081526002602081905260409091200180549290910490910190555b8015610e5557808481610e2e57610e2e611617565b6001600160a01b038a16600090815260026020526040902060030180549290910490910190555b5050505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc91906114c7565b905073dac17f958d2ee523a2206206994597c13d831ec6196001600160a01b03851601610f5e576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b50505050610fd7565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611683565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104291906114c7565b90508181116110835760405162461bcd60e51b815260206004820152600d60248201526c16995c9bc8149958d95a5d9959609a1b6044820152606401610768565b610877828261164f565b6000606f8210156110ba57506001600160a01b03821660009081526002602052604090206001015461055b565b6104c68210156110e757506001600160a01b0382166000908152600260208190526040909120015461055b565b506001600160a01b03821660009081526002602052604090206003015461055b565b60006001600160a01b03841673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21461119c576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119791906114c7565b61119e565b475b9050808211156111ac578091505b816000036111ba5750505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b03851601611245576000836001600160a01b03168360405160006040518083038185875af1925050503d806000811461122c576040519150601f19603f3d011682016040523d82523d6000602084013e611231565b606091505b505090508061123f57600080fd5b50610be0565b73dac17f958d2ee523a2206206994597c13d831ec6196001600160a01b038516016112d15760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb90604401600060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50505050610be0565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611683565b6001600160a01b03811681146104d557600080fd5b60008060006040848603121561136e57600080fd5b833561137981611344565b9250602084013567ffffffffffffffff8082111561139657600080fd5b818601915086601f8301126113aa57600080fd5b8135818111156113b957600080fd5b8760208260051b85010111156113ce57600080fd5b6020830194508093505050509250925092565b600080604083850312156113f457600080fd5b82356113ff81611344565b946020939093013593505050565b60006020828403121561141f57600080fd5b813561142a81611344565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114695783518352928401929184019160010161144d565b50909695505050505050565b60006020828403121561148757600080fd5b5035919050565b600080604083850312156114a157600080fd5b82356114ac81611344565b915060208301356114bc81611344565b809150509250929050565b6000602082840312156114d957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561150957600080fd5b825167ffffffffffffffff8082111561152157600080fd5b818501915085601f83011261153557600080fd5b815181811115611547576115476114e0565b8060051b604051601f19603f8301168101818110858211171561156c5761156c6114e0565b60405291825284820192508381018501918883111561158a57600080fd5b938501935b828510156115a85784518452938501939285019261158f565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156115f3576115f36115ca565b500190565b6000816000190483118215151615611612576116126115ca565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261164a57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611661576116616115ca565b500390565b60006020828403121561167857600080fd5b815161142a81611344565b60006020828403121561169557600080fd5b8151801515811461142a57600080fdfea2646970667358221220477f3429830581dd0332505508a63c086c07330ca8b084703d0e4e7a750b3ad064736f6c634300080e0033
Deployed Bytecode Sourcemap
5176:8636:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6476:141;;;;;;;;;;-1:-1:-1;6476:141:0;;;;;:::i;:::-;;:::i;:::-;;13385:109;;;;;;;;;;;;;:::i;:::-;;;1051:25:1;;;1039:2;1024:18;13385:109:0;;;;;;;;6625;;;;;;;;;;-1:-1:-1;6625:109:0;;;;;:::i;:::-;;:::i;6326:142::-;;;;;;;;;;-1:-1:-1;6326:142:0;;;;;:::i;:::-;;:::i;12985:162::-;;;;;;;;;;-1:-1:-1;12985:162:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5967:41::-;;;;;;;;;;;;6005:3;5967:41;;13710:99;;;;;;;;;;;;;:::i;13605:::-;;;;;;;;;;;;;:::i;6237:81::-;;;:::i;6067:162::-;;;;;;;;;;-1:-1:-1;6067:162:0;;;;;:::i;:::-;;:::i;11592:362::-;;;;;;;;;;-1:-1:-1;11592:362:0;;;;;:::i;:::-;;:::i;6015:43::-;;;;;;;;;;;;6053:5;6015:43;;4297:83;;;;;;;;;;-1:-1:-1;4340:7:0;4367:5;-1:-1:-1;;;;;4367:5:0;4297:83;;;-1:-1:-1;;;;;2460:32:1;;;2442:51;;2430:2;2415:18;4297:83:0;2296:203:1;10548:498:0;;;;;;;;;;-1:-1:-1;10548:498:0;;;;;:::i;:::-;;:::i;:::-;;;;2891:25:1;;;2947:2;2932:18;;2925:34;;;;2975:18;;;2968:34;2879:2;2864:18;10548:498:0;2689:319:1;4072:132:0;;;;;;;;;;-1:-1:-1;4072:132:0;;;;;:::i;:::-;;:::i;11111:416::-;;;;;;;;;;-1:-1:-1;11111:416:0;;;;;:::i;:::-;;:::i;12019:445::-;;;;;;;;;;-1:-1:-1;12019:445:0;;;;;:::i;:::-;;:::i;13500:99::-;;;;;;;;;;;;;:::i;13270:109::-;;;;;;;;;;;;;:::i;5875:53::-;;;;;;;;;;-1:-1:-1;5875:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3637:25:1;;;3693:2;3678:18;;3671:34;;;;3721:18;;;3714:34;3779:2;3764:18;;3757:34;3624:3;3609:19;5875:53:0;3406:391:1;5437:84:0;;;;;;;;;;;;5478:42;5437:84;;13155:109;;;;;;;;;;;;;:::i;6476:141::-;6562:47;6581:5;6588:10;6600:8;;6562:18;:47::i;:::-;6476:141;;;:::o;13385:109::-;13434:7;5478:42;-1:-1:-1;;;;;13461:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13454:32;;13385:109;:::o;6625:::-;6698:28;6711:5;6718:7;6698:12;:28::i;:::-;6625:109;;:::o;6326:142::-;6390:70;6415:5;6422:10;6434:25;6448:10;6434:13;:25::i;:::-;6390:24;:70::i;:::-;6326:142;:::o;12985:162::-;13112:27;;-1:-1:-1;;;13112:27:0;;-1:-1:-1;;;;;2460:32:1;;13112:27:0;;;2442:51:1;13071:16:0;;5478:42;;13112:20;;2415:18:1;;13112:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13112:27:0;;;;;;;;;;;;:::i;:::-;13105:34;12985:162;-1:-1:-1;;12985:162:0:o;13710:99::-;13754:7;5478:42;-1:-1:-1;;;;;13781:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13605:99;13649:7;5478:42;-1:-1:-1;;;;;13676:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6237:81;6284:26;5262:42;6300:9;6284;:26::i;:::-;6237:81::o;6067:162::-;6139:16;6158:26;6170:5;6177:6;6158:11;:26::i;:::-;6139:45;;6195:26;6205:5;6212:8;6195:9;:26::i;11592:362::-;11708:13;11753:8;11708:13;11779:168;11803:3;11799:1;:7;11779:168;;;11834:39;11854:5;11861:8;;11870:1;11861:11;;;;;;;:::i;:::-;;;;;;;11834:19;:39::i;:::-;11825:48;;;;:::i;:::-;;-1:-1:-1;11917:3:0;;11779:168;;;;11728:226;11592:362;;;;;:::o;10548:498::-;10648:14;10677;10706;10748:9;10760:18;:16;:18::i;:::-;10748:30;;10789:9;10801:18;:16;:18::i;:::-;10789:30;;10830:9;10842:18;:16;:18::i;:::-;10830:30;-1:-1:-1;10871:10:0;10830:30;10884:11;10891:4;10884;:11;:::i;:::-;:18;;;;:::i;:::-;10871:31;-1:-1:-1;10871:31:0;10924:13;10933:4;10924:6;:13;:::i;:::-;10922:25;;;;:::i;:::-;10913:34;-1:-1:-1;10987:5:0;10969:13;10978:4;10969:6;:13;:::i;:::-;10967:25;;;;:::i;:::-;10958:34;-1:-1:-1;11022:15:0;10958:34;11022:6;:15;:::i;:::-;11012:26;;:6;:26;:::i;:::-;10548:498;;;;-1:-1:-1;;;;;;10548:498:0:o;4072:132::-;3683:5;;-1:-1:-1;;;;;3683:5:0;3669:10;:19;3661:51;;;;-1:-1:-1;;;3661:51:0;;6712:2:1;3661:51:0;;;6694:21:1;6751:2;6731:18;;;6724:30;-1:-1:-1;;;6770:18:1;;;6763:49;6829:18;;3661:51:0;;;;;;;;;4153:5:::1;::::0;;4144:25:::1;::::0;-1:-1:-1;;;;;4144:25:0;;::::1;::::0;4153:5;::::1;::::0;4144:25:::1;::::0;::::1;4180:5;:16:::0;;-1:-1:-1;;;;;;4180:16:0::1;-1:-1:-1::0;;;;;4180:16:0;;;::::1;::::0;;;::::1;::::0;;4072:132::o;11111:416::-;11221:13;11252:25;11280:19;11294:4;11280:13;:19::i;:::-;11326:15;;11252:47;;-1:-1:-1;11312:11:0;11352:168;11376:3;11372:1;:7;11352:168;;;11407:39;11427:5;11434:8;11443:1;11434:11;;;;;;;;:::i;:::-;;;;;;;11407:19;:39::i;:::-;11398:48;;;;:::i;:::-;;-1:-1:-1;11490:3:0;;11352:168;;;;11241:286;;11111:416;;;;:::o;12019:445::-;12128:7;12153:29;12185:38;12208:5;12215:7;12185:22;:38::i;:::-;12234:28;12265:22;;;:13;:22;;;;;;;;-1:-1:-1;;;;;12265:29:0;;;;;;;;;;12153:70;;-1:-1:-1;12311:45:0;;;12307:86;;12380:1;12373:8;;;;;;12307:86;12412:44;12436:20;12412:21;:44;:::i;:::-;12405:51;12019:445;-1:-1:-1;;;;;12019:445:0:o;13500:99::-;13544:7;5478:42;-1:-1:-1;;;;;13571:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13270:109;13319:7;5478:42;-1:-1:-1;;;;;13346:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13155:109;13204:7;5478:42;-1:-1:-1;;;;;13231:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7970:611;8090:13;8128:8;8090:13;8156:347;8180:3;8176:1;:7;8156:347;;;8202:10;8215:8;;8224:1;8215:11;;;;;;;:::i;:::-;;;;;;;8202:24;;8271:4;-1:-1:-1;;;;;8249:26:0;5478:42;-1:-1:-1;;;;;8249:14:0;;8264:2;8249:18;;;;;;;;;;;;;1051:25:1;;1039:2;1024:18;;905:177;8249:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8249:26:0;;8241:59;;;;-1:-1:-1;;;8241:59:0;;7316:2:1;8241:59:0;;;7298:21:1;7355:2;7335:18;;;7328:30;-1:-1:-1;;;7374:18:1;;;7367:50;7434:18;;8241:59:0;7114:344:1;8241:59:0;8324:30;8344:5;8351:2;8324:19;:30::i;:::-;8315:39;;;;:::i;:::-;;;8396:33;8419:5;8426:2;8396:22;:33::i;:::-;8369:17;;;;:13;:17;;;;;;;;-1:-1:-1;;;;;8369:24:0;;;;;;;;;;:60;8473:3;8156:347;;;;8548:25;8554:5;8561:4;8567:5;8548;:25::i;:::-;8079:502;;7970:611;;;;:::o;9262:535::-;9384:23;;-1:-1:-1;;;9384:23:0;;;;;1051:25:1;;;9368:13:0;;5478:42;;9384:14;;1024:18:1;;9384:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9368:39;-1:-1:-1;;;;;;9440:19:0;;9418:79;;;;-1:-1:-1;;;9418:79:0;;7665:2:1;9418:79:0;;;7647:21:1;7704:2;7684:18;;;7677:30;-1:-1:-1;;;7723:18:1;;;7716:40;7773:18;;9418:79:0;7463:334:1;9418:79:0;9544:15;9562:35;9582:5;9589:7;9562:19;:35::i;:::-;9544:53;;9674:38;9697:5;9704:7;9674:22;:38::i;:::-;9642:22;;;;:13;:22;;;;;;;;-1:-1:-1;;;;;9642:29:0;;;;;;;;;:70;9761:28;9665:5;9774;9781:7;9761:5;:28::i;:::-;9325:472;;9262:535;;:::o;8589:615::-;8751:15;;8713:13;;;8779:347;8803:3;8799:1;:7;8779:347;;;8825:10;8838:8;8847:1;8838:11;;;;;;;;:::i;:::-;;;;;;;8825:24;;8894:4;-1:-1:-1;;;;;8872:26:0;5478:42;-1:-1:-1;;;;;8872:14:0;;8887:2;8872:18;;;;;;;;;;;;;1051:25:1;;1039:2;1024:18;;905:177;8872:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8872:26:0;;8864:59;;;;-1:-1:-1;;;8864:59:0;;7316:2:1;8864:59:0;;;7298:21:1;7355:2;7335:18;;;7328:30;-1:-1:-1;;;7374:18:1;;;7367:50;7434:18;;8864:59:0;7114:344:1;8864:59:0;8947:30;8967:5;8974:2;8947:19;:30::i;:::-;8938:39;;;;:::i;:::-;;;9019:33;9042:5;9049:2;9019:22;:33::i;:::-;8992:17;;;;:13;:17;;;;;;;;-1:-1:-1;;;;;8992:24:0;;;;;;;;;;:60;9096:3;8779:347;;;;9171:25;9177:5;9184:4;9190:5;9171;:25::i;:::-;8702:502;;8589:615;;;:::o;6742:691::-;6823:10;6835;6847;6861:20;6874:6;6861:12;:20::i;:::-;6822:59;;;;;;6892:9;6904:13;:11;:13::i;:::-;6892:25;;6928:9;6940:13;:11;:13::i;:::-;6928:25;;6964:9;6976:13;:11;:13::i;:::-;-1:-1:-1;;;;;7025:18:0;;;;;;:11;:18;;;;;:41;;;;;;6964:25;-1:-1:-1;7085:8:0;;7081:102;;7163:4;7158:2;:9;;;;;:::i;:::-;-1:-1:-1;;;;;7114:18:0;;;;;;:11;:18;;;;;:40;;:53;;7158:9;;;;7114:53;;;;;7081:102;7201:8;;7197:102;;7279:4;7274:2;:9;;;;;:::i;:::-;-1:-1:-1;;;;;7230:18:0;;;;;;:11;:18;;;;;;;;:40;:53;;7274:9;;;;7230:53;;;;;7197:102;7317:8;;7313:102;;7395:4;7390:2;:9;;;;;:::i;:::-;-1:-1:-1;;;;;7346:18:0;;;;;;:11;:18;;;;;:40;;:53;;7390:9;;;;7346:53;;;;;7313:102;6801:632;;;;;;6742:691;;:::o;7441:521::-;7548:38;;-1:-1:-1;;;7548:38:0;;7580:4;7548:38;;;2442:51:1;7511:7:0;;;;-1:-1:-1;;;;;7548:23:0;;;;;2415:18:1;;7548:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7531:55;-1:-1:-1;;;;;;;;7601:13:0;;;7597:210;;7631:67;;-1:-1:-1;;;7631:67:0;;7664:10;7631:67;;;8042:34:1;7684:4:0;8092:18:1;;;8085:43;8144:18;;;8137:34;;;-1:-1:-1;;;;;7631:32:0;;;;;7977:18:1;;7631:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7597:210;;;7731:61;;-1:-1:-1;;;7731:61:0;;7758:10;7731:61;;;8042:34:1;7778:4:0;8092:18:1;;;8085:43;8144:18;;;8137:34;;;-1:-1:-1;;;;;7731:26:0;;;;;7977:18:1;;7731:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:210;7833:38;;-1:-1:-1;;;7833:38:0;;7865:4;7833:38;;;2442:51:1;7817:13:0;;-1:-1:-1;;;;;7833:23:0;;;;;2415:18:1;;7833:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7817:54;;7898:6;7890:5;:14;7882:40;;;;-1:-1:-1;;;7882:40:0;;8666:2:1;7882:40:0;;;8648:21:1;8705:2;8685:18;;;8678:30;-1:-1:-1;;;8724:18:1;;;8717:43;8777:18;;7882:40:0;8464:337:1;7882:40:0;7940:14;7948:6;7940:5;:14;:::i;12543:434::-;12657:7;6005:3;12686:7;:21;12682:288;;;-1:-1:-1;;;;;;12731:18:0;;;;;;:11;:18;;;;;:40;;;12724:47;;12682:288;6053:5;12793:7;:21;12789:181;;;-1:-1:-1;;;;;;12838:18:0;;;;;;:11;:18;;;;;;;;:40;;12831:47;;12789:181;-1:-1:-1;;;;;;12918:18:0;;;;;;:11;:18;;;;;:40;;;12911:47;;9805:735;9916:12;-1:-1:-1;;;;;9931:13:0;;5262:42;9931:13;:78;;9971:38;;-1:-1:-1;;;9971:38:0;;10003:4;9971:38;;;2442:51:1;-1:-1:-1;;;;;9971:23:0;;;;;2415:18:1;;9971:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9931:78;;;9947:21;9931:78;9916:93;;10033:4;10024:6;:13;10020:59;;;10063:4;10054:13;;10020:59;10128:6;10138:1;10128:11;10124:50;;10156:7;9805:735;;;:::o;10124:50::-;-1:-1:-1;;;;;;;10218:13:0;;;10214:319;;10249:6;10268:2;-1:-1:-1;;;;;10260:16:0;10284:6;10260:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10248:47;;;10318:1;10310:10;;;;;;10233:99;10214:319;;;-1:-1:-1;;;;;;;10357:13:0;;;10353:169;;10391:40;;-1:-1:-1;;;10391:40:0;;-1:-1:-1;;;;;9208:32:1;;;10391:40:0;;;9190:51:1;9257:18;;;9250:34;;;10391:28:0;;;;;9163:18:1;;10391:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10353:169;;;10472:34;;-1:-1:-1;;;10472:34:0;;-1:-1:-1;;;;;9208:32:1;;;10472:34:0;;;9190:51:1;9257:18;;;9250:34;;;10472:22:0;;;;;9163:18:1;;10472:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:750;245:6;253;261;314:2;302:9;293:7;289:23;285:32;282:52;;;330:1;327;320:12;282:52;369:9;356:23;388:31;413:5;388:31;:::i;:::-;438:5;-1:-1:-1;494:2:1;479:18;;466:32;517:18;547:14;;;544:34;;;574:1;571;564:12;544:34;612:6;601:9;597:22;587:32;;657:7;650:4;646:2;642:13;638:27;628:55;;679:1;676;669:12;628:55;719:2;706:16;745:2;737:6;734:14;731:34;;;761:1;758;751:12;731:34;814:7;809:2;799:6;796:1;792:14;788:2;784:23;780:32;777:45;774:65;;;835:1;832;825:12;774:65;866:2;862;858:11;848:21;;888:6;878:16;;;;;150:750;;;;;:::o;1087:315::-;1155:6;1163;1216:2;1204:9;1195:7;1191:23;1187:32;1184:52;;;1232:1;1229;1222:12;1184:52;1271:9;1258:23;1290:31;1315:5;1290:31;:::i;:::-;1340:5;1392:2;1377:18;;;;1364:32;;-1:-1:-1;;;1087:315:1:o;1407:247::-;1466:6;1519:2;1507:9;1498:7;1494:23;1490:32;1487:52;;;1535:1;1532;1525:12;1487:52;1574:9;1561:23;1593:31;1618:5;1593:31;:::i;:::-;1643:5;1407:247;-1:-1:-1;;;1407:247:1:o;1659:632::-;1830:2;1882:21;;;1952:13;;1855:18;;;1974:22;;;1801:4;;1830:2;2053:15;;;;2027:2;2012:18;;;1801:4;2096:169;2110:6;2107:1;2104:13;2096:169;;;2171:13;;2159:26;;2240:15;;;;2205:12;;;;2132:1;2125:9;2096:169;;;-1:-1:-1;2282:3:1;;1659:632;-1:-1:-1;;;;;;1659:632:1:o;2504:180::-;2563:6;2616:2;2604:9;2595:7;2591:23;2587:32;2584:52;;;2632:1;2629;2622:12;2584:52;-1:-1:-1;2655:23:1;;2504:180;-1:-1:-1;2504:180:1:o;3013:388::-;3081:6;3089;3142:2;3130:9;3121:7;3117:23;3113:32;3110:52;;;3158:1;3155;3148:12;3110:52;3197:9;3184:23;3216:31;3241:5;3216:31;:::i;:::-;3266:5;-1:-1:-1;3323:2:1;3308:18;;3295:32;3336:33;3295:32;3336:33;:::i;:::-;3388:7;3378:17;;;3013:388;;;;;:::o;4025:184::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;-1:-1:-1;4187:16:1;;4025:184;-1:-1:-1;4025:184:1:o;4214:127::-;4275:10;4270:3;4266:20;4263:1;4256:31;4306:4;4303:1;4296:15;4330:4;4327:1;4320:15;4346:1105;4441:6;4472:2;4515;4503:9;4494:7;4490:23;4486:32;4483:52;;;4531:1;4528;4521:12;4483:52;4564:9;4558:16;4593:18;4634:2;4626:6;4623:14;4620:34;;;4650:1;4647;4640:12;4620:34;4688:6;4677:9;4673:22;4663:32;;4733:7;4726:4;4722:2;4718:13;4714:27;4704:55;;4755:1;4752;4745:12;4704:55;4784:2;4778:9;4806:2;4802;4799:10;4796:36;;;4812:18;;:::i;:::-;4858:2;4855:1;4851:10;4890:2;4884:9;4953:2;4949:7;4944:2;4940;4936:11;4932:25;4924:6;4920:38;5008:6;4996:10;4993:22;4988:2;4976:10;4973:18;4970:46;4967:72;;;5019:18;;:::i;:::-;5055:2;5048:22;5105:18;;;5139:15;;;;-1:-1:-1;5181:11:1;;;5177:20;;;5209:19;;;5206:39;;;5241:1;5238;5231:12;5206:39;5265:11;;;;5285:135;5301:6;5296:3;5293:15;5285:135;;;5367:10;;5355:23;;5318:12;;;;5398;;;;5285:135;;;5439:6;4346:1105;-1:-1:-1;;;;;;;;4346:1105:1:o;5456:127::-;5517:10;5512:3;5508:20;5505:1;5498:31;5548:4;5545:1;5538:15;5572:4;5569:1;5562:15;5588:127;5649:10;5644:3;5640:20;5637:1;5630:31;5680:4;5677:1;5670:15;5704:4;5701:1;5694:15;5720:128;5760:3;5791:1;5787:6;5784:1;5781:13;5778:39;;;5797:18;;:::i;:::-;-1:-1:-1;5833:9:1;;5720:128::o;5853:168::-;5893:7;5959:1;5955;5951:6;5947:14;5944:1;5941:21;5936:1;5929:9;5922:17;5918:45;5915:71;;;5966:18;;:::i;:::-;-1:-1:-1;6006:9:1;;5853:168::o;6026:127::-;6087:10;6082:3;6078:20;6075:1;6068:31;6118:4;6115:1;6108:15;6142:4;6139:1;6132:15;6158:217;6198:1;6224;6214:132;;6268:10;6263:3;6259:20;6256:1;6249:31;6303:4;6300:1;6293:15;6331:4;6328:1;6321:15;6214:132;-1:-1:-1;6360:9:1;;6158:217::o;6380:125::-;6420:4;6448:1;6445;6442:8;6439:34;;;6453:18;;:::i;:::-;-1:-1:-1;6490:9:1;;6380:125::o;6858:251::-;6928:6;6981:2;6969:9;6960:7;6956:23;6952:32;6949:52;;;6997:1;6994;6987:12;6949:52;7029:9;7023:16;7048:31;7073:5;7048:31;:::i;8182:277::-;8249:6;8302:2;8290:9;8281:7;8277:23;8273:32;8270:52;;;8318:1;8315;8308:12;8270:52;8350:9;8344:16;8403:5;8396:13;8389:21;8382:5;8379:32;8369:60;;8425:1;8422;8415:12
Swarm Source
ipfs://477f3429830581dd0332505508a63c086c07330ca8b084703d0e4e7a750b3ad0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.999738 | 105.5357 | $105.51 |
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.