Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,076 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 17294870 | 561 days ago | IN | 0 ETH | 0.00712339 | ||||
Unstake | 17290619 | 561 days ago | IN | 0 ETH | 0.00235025 | ||||
Unstake | 17290601 | 561 days ago | IN | 0 ETH | 0.00325728 | ||||
Stake | 17274344 | 564 days ago | IN | 0 ETH | 0.0074609 | ||||
Unstake | 17274263 | 564 days ago | IN | 0 ETH | 0.00569866 | ||||
Unstake | 17268701 | 565 days ago | IN | 0 ETH | 0.04883195 | ||||
Stake | 17266778 | 565 days ago | IN | 0 ETH | 0.01349343 | ||||
Stake | 17266439 | 565 days ago | IN | 0 ETH | 0.01041517 | ||||
Stake | 17260539 | 566 days ago | IN | 0 ETH | 0.02492255 | ||||
Stake | 17259595 | 566 days ago | IN | 0 ETH | 0.00727217 | ||||
Unstake | 17250149 | 567 days ago | IN | 0 ETH | 0.00335984 | ||||
Stake | 17247011 | 568 days ago | IN | 0 ETH | 0.00819822 | ||||
Unstake | 17210087 | 573 days ago | IN | 0 ETH | 0.00511089 | ||||
Unstake | 17210076 | 573 days ago | IN | 0 ETH | 0.00424192 | ||||
Unstake | 17150290 | 581 days ago | IN | 0 ETH | 0.00101348 | ||||
Stake | 17150196 | 581 days ago | IN | 0 ETH | 0.0045666 | ||||
Unstake | 17146159 | 582 days ago | IN | 0 ETH | 0.00151185 | ||||
Stake | 17145504 | 582 days ago | IN | 0 ETH | 0.02258116 | ||||
Stake | 17145202 | 582 days ago | IN | 0 ETH | 0.00582402 | ||||
Stake | 17145180 | 582 days ago | IN | 0 ETH | 0.00536884 | ||||
Stake | 17145150 | 582 days ago | IN | 0 ETH | 0.00572512 | ||||
Stake | 17145138 | 582 days ago | IN | 0 ETH | 0.00595332 | ||||
Stake | 17145109 | 582 days ago | IN | 0 ETH | 0.00874642 | ||||
Stake | 17145077 | 582 days ago | IN | 0 ETH | 0.00551099 | ||||
Stake | 17145068 | 582 days ago | IN | 0 ETH | 0.00583402 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EarlyBirds_Staking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-21 */ // SPDX-License-Identifier: MIT /* ______ _ ____ _ _ | ____| | | | _ \(_) | | | |__ __ _ _ __| |_ _ | |_) |_ _ __ __| |___ | __| / _` | '__| | | | | | _ <| | '__/ _` / __| | |___| (_| | | | | |_| | | |_) | | | | (_| \__ \ |______\__,_|_| |_|\__, | |____/|_|_| \__,_|___/ __/ | |___/ By Devko.dev#7286 */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contract.sol pragma solidity ^0.8.7; interface IEB { function transferFrom( address from, address to, uint256 tokenId ) external; function ownerOf(uint256 tokenId) external view returns (address owner); function balanceOf(address owner) external view returns (uint256 balance); } contract EarlyBirds_Staking is Ownable { using SafeMath for uint256; IEB public EB_Contract = IEB(0x3D84cbDC126B1d9DCA50bfFe0c7bb1940A4D029D); struct token { uint256 stakeDate; address stakerAddress; uint256 tierId; uint256 collected; uint256 boost; } mapping(uint256 => token) public stakedTokens; mapping(address => uint256) public stakedTokensCount; mapping(uint256 => uint256) public tiersRate; mapping(uint256 => uint256) public tiersDays; constructor() { tiersRate[1] = 0.0000578703703 ether; tiersRate[2] = 0.0001157407406 ether; tiersRate[3] = 0.0002314814812 ether; tiersDays[1] = 14 days; tiersDays[2] = 90 days; tiersDays[3] = 365 days; } modifier notContract() { require( (!_isContract(msg.sender)) && (msg.sender == tx.origin), "Contracts not allowed" ); _; } function _isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function stake(uint256[] calldata tokenIds, uint256 tierId) external notContract { require(tiersRate[tierId] > 0, "TIER_NOT_VALID"); for (uint256 index = 0; index < tokenIds.length; index++) { if (EB_Contract.ownerOf(tokenIds[index]) == msg.sender) { EB_Contract.transferFrom( msg.sender, address(this), tokenIds[index] ); stakedTokens[tokenIds[index]].stakeDate = block.timestamp; stakedTokens[tokenIds[index]].tierId = tierId; stakedTokens[tokenIds[index]].stakerAddress = msg.sender; stakedTokensCount[msg.sender]++; } } } function unstake(uint256[] calldata tokenIds) external notContract { for (uint256 index = 0; index < tokenIds.length; index++) { if ( stakedTokens[tokenIds[index]].stakerAddress == msg.sender && (stakedTokens[tokenIds[index]].stakeDate + tiersDays[stakedTokens[tokenIds[index]].tierId]) < block.timestamp ) { EB_Contract.transferFrom( address(this), msg.sender, tokenIds[index] ); stakedTokens[tokenIds[index]].collected = this .claimableWormsForId(tokenIds[index]); stakedTokens[tokenIds[index]].stakeDate = 0; stakedTokens[tokenIds[index]].tierId = 0; stakedTokens[tokenIds[index]].stakerAddress = address(0); stakedTokensCount[msg.sender]--; } } } function changeBoostsBulk(uint256[] memory tokenIds, uint256 boost) external onlyOwner { for (uint256 index = 0; index < tokenIds.length; index++) { stakedTokens[tokenIds[index]].boost = boost; } } function changeBoosts(uint256[] memory tokenIds, uint256[] memory boosts) external onlyOwner { require(tokenIds.length == boosts.length, "LENGTH_NOT_MATCHED"); for (uint256 index = 0; index < tokenIds.length; index++) { stakedTokens[tokenIds[index]].boost = boosts[index]; } } function claimableWormsFor(uint256[] memory tokenIds) external view returns (uint256) { uint256 totalClaimable = 0; for (uint256 index = 0; index < tokenIds.length; index++) { uint256 timePassed = block.timestamp - stakedTokens[tokenIds[index]].stakeDate; uint256 noBoostAmount; if (timePassed > tiersDays[stakedTokens[tokenIds[index]].tierId]) { noBoostAmount = tiersDays[stakedTokens[tokenIds[index]].tierId] * tiersRate[stakedTokens[tokenIds[index]].tierId]; } else { noBoostAmount = timePassed * tiersRate[stakedTokens[tokenIds[index]].tierId]; } if (stakedTokens[tokenIds[index]].boost == 0) { totalClaimable += stakedTokens[tokenIds[index]].collected + noBoostAmount; } else { totalClaimable += stakedTokens[tokenIds[index]].collected + noBoostAmount + ((noBoostAmount * stakedTokens[tokenIds[index]].boost) / 1000); } } return totalClaimable; } function claimableWormsForId(uint256 tokenId) external view returns (uint256) { uint256 timePassed = block.timestamp - stakedTokens[tokenId].stakeDate; uint256 noBoostAmount; if (timePassed > tiersDays[stakedTokens[tokenId].tierId]) { noBoostAmount = tiersDays[stakedTokens[tokenId].tierId] * tiersRate[stakedTokens[tokenId].tierId]; } else { noBoostAmount = timePassed * tiersRate[stakedTokens[tokenId].tierId]; } if (stakedTokens[tokenId].boost == 0) { return stakedTokens[tokenId].collected + noBoostAmount; } else { return stakedTokens[tokenId].collected + noBoostAmount + ((noBoostAmount * stakedTokens[tokenId].boost) / 1000); } } function tokensDetails(uint256[] memory tokens) external view returns (token[] memory) { token[] memory tokensList = new token[](tokens.length); for (uint256 index = 0; index < tokens.length; index++) { tokensList[index] = stakedTokens[tokens[index]]; } return tokensList; } function tokensOwnedBy(address owner) external view returns (uint256[] memory) { uint256[] memory tokensList = new uint256[]( EB_Contract.balanceOf(owner) ); uint256 currentIndex; for (uint256 index = 1; index <= 1420; index++) { try EB_Contract.ownerOf(index) { if (EB_Contract.ownerOf(index) == owner) { tokensList[currentIndex] = uint256(index); currentIndex++; } } catch {} } return tokensList; } function tokensStakedBy(address owner) external view returns (uint256[] memory) { uint256[] memory tokensList = new uint256[](stakedTokensCount[owner]); uint256 currentIndex = 0; for (uint256 tokenId = 1; tokenId <= 1420; tokenId++) { if (stakedTokens[tokenId].stakerAddress == owner) { tokensList[currentIndex] = uint256(tokenId); currentIndex++; } } return tokensList; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"EB_Contract","outputs":[{"internalType":"contract IEB","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"boosts","type":"uint256[]"}],"name":"changeBoosts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"boost","type":"uint256"}],"name":"changeBoostsBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claimableWormsFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claimableWormsForId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokens","outputs":[{"internalType":"uint256","name":"stakeDate","type":"uint256"},{"internalType":"address","name":"stakerAddress","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"collected","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakedTokensCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiersDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiersRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"tokensDetails","outputs":[{"components":[{"internalType":"uint256","name":"stakeDate","type":"uint256"},{"internalType":"address","name":"stakerAddress","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"collected","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"internalType":"struct EarlyBirds_Staking.token[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOwnedBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensStakedBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600180546001600160a01b031916733d84cbdc126b1d9dca50bffe0c7bb1940a4d029d17905534801561003657600080fd5b506100403361013d565b6534a1fedd60607fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0555656943fdbac0c07f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a75565d287fb7581807f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0556005602052621275007f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b556276a7007f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a5560036000526301e133807fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc05561018d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118898061019c6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063ce98c28911610071578063ce98c289146102b4578063e449f341146102c7578063ea66aeb3146102da578063f2fde38b146102ed578063f703b5eb1461030057600080fd5b80638da5cb5b146101e6578063a444319a1461020b578063c07885551461022b578063c688df85146102a157600080fd5b80636ec00232116100de5780636ec0023214610196578063715018a6146101b657806377325ebe146101c0578063857b767b146101d357600080fd5b80631e6c7bfd146101105780633d8c4584146101435780633fe3941e1461016357806364728f6d14610183575b600080fd5b61013061011e36600461166d565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101306101513660046114c0565b60036020526000908152604090205481565b61013061017136600461166d565b60056020526000908152604090205481565b61013061019136600461158f565b610313565b6101a96101a436600461158f565b6105ce565b60405161013a919061169f565b6101be61070c565b005b6101be6101ce366004611628565b610720565b6101be6101e1366004611543565b610780565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b61021e6102193660046114c0565b610a5c565b60405161013a9190611716565b61027161023936600461166d565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b031692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161013a565b6001546101f3906001600160a01b031681565b6101306102c236600461166d565b610b37565b6101be6102d5366004611501565b610c6a565b61021e6102e83660046114c0565b610fd9565b6101be6102fb3660046114c0565b6111f6565b6101be61030e3660046115c4565b61126f565b600080805b83518110156105c75760006002600086848151811061033957610339611812565b60200260200101518152602001908152602001600020600001544261035e91906117b3565b90506000600560006002600089878151811061037c5761037c611812565b60200260200101518152602001908152602001600020600201548152602001908152602001600020548211156104435760046000600260008987815181106103c6576103c6611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600260008a888151811061040957610409611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205461043c9190611794565b9050610494565b600460006002600089878151811061045d5761045d611812565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054826104919190611794565b90505b600260008785815181106104aa576104aa611812565b6020026020010151815260200190815260200160002060040154600014156105185780600260008886815181106104e3576104e3611812565b6020026020010151815260200190815260200160002060030154610507919061175a565b610511908561175a565b93506105b2565b6103e86002600088868151811061053157610531611812565b6020026020010151815260200190815260200160002060040154826105569190611794565b6105609190611772565b816002600089878151811061057757610577611812565b602002602001015181526020019081526020016000206003015461059b919061175a565b6105a5919061175a565b6105af908561175a565b93505b505080806105bf906117e1565b915050610318565b5092915050565b60606000825167ffffffffffffffff8111156105ec576105ec611828565b60405190808252806020026020018201604052801561065857816020015b6106456040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b81526020019060019003908161060a5790505b50905060005b83518110156105c7576002600085838151811061067d5761067d611812565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260040154608082015282518390839081106106ee576106ee611812565b60200260200101819052508080610704906117e1565b91505061065e565b610714611329565b61071e6000611383565b565b610728611329565b60005b825181101561077b57816002600085848151811061074b5761074b611812565b60200260200101518152602001908152602001600020600401819055508080610773906117e1565b91505061072b565b505050565b333b15801561078e57503332145b6107d75760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b6000818152600460205260409020546108235760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016107ce565b60005b82811015610a565760015433906001600160a01b0316636352211e86868581811061085357610853611812565b905060200201356040518263ffffffff1660e01b815260040161087891815260200190565b60206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c891906114e4565b6001600160a01b03161415610a44576001546001600160a01b03166323b872dd33308787868181106108fc576108fc611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b50505050426002600086868581811061098257610982611812565b9050602002013581526020019081526020016000206000018190555081600260008686858181106109b5576109b5611812565b9050602002013581526020019081526020016000206002018190555033600260008686858181106109e8576109e8611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610a3e836117e1565b91905055505b80610a4e816117e1565b915050610826565b50505050565b6001600160a01b0381166000908152600360205260408120546060919067ffffffffffffffff811115610a9157610a91611828565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b509050600060015b61058c8111610b2e576000818152600260205260409020600101546001600160a01b0386811691161415610b1c5780838381518110610b0357610b03611812565b602090810291909101015281610b18816117e1565b9250505b80610b26816117e1565b915050610ac2565b50909392505050565b6000818152600260205260408120548190610b5290426117b3565b60008481526002602081815260408084209092015483526005905281205491925090821115610bb357600084815260026020818152604080842090920154835260048152818320546005909152912054610bac9190611794565b9050610bde565b600084815260026020818152604080842090920154835260049052902054610bdb9083611794565b90505b600084815260026020526040902060040154610c1957600084815260026020526040902060030154610c1190829061175a565b949350505050565b6000848152600260205260409020600401546103e890610c399083611794565b610c439190611772565b600085815260026020526040902060030154610c6090839061175a565b610c11919061175a565b333b158015610c7857503332145b610cbc5760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064016107ce565b60005b8181101561077b573360026000858585818110610cde57610cde611812565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015610d8a5750426005600060026000878787818110610d2757610d27611812565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460026000868686818110610d6557610d65611812565b90506020020135815260200190815260200160002060000154610d88919061175a565b105b15610fc7576001546001600160a01b03166323b872dd3033868686818110610db457610db4611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110610e4457610e44611812565b905060200201356040518263ffffffff1660e01b8152600401610e6991815260200190565b60206040518083038186803b158015610e8157600080fd5b505afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb99190611686565b60026000858585818110610ecf57610ecf611812565b90506020020135815260200190815260200160002060030181905550600060026000858585818110610f0357610f03611812565b90506020020135815260200190815260200160002060000181905550600060026000858585818110610f3757610f37611812565b90506020020135815260200190815260200160002060020181905550600060026000858585818110610f6b57610f6b611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610fc1836117ca565b91905055505b80610fd1816117e1565b915050610cbf565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b9190611686565b67ffffffffffffffff81111561107357611073611828565b60405190808252806020026020018201604052801561109c578160200160208202803683370190505b509050600060015b61058c8111610b2e576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156110f157600080fd5b505afa925050508015611121575060408051601f3d908101601f1916820190925261111e918101906114e4565b60015b61112a576111e4565b506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e9060240160206040518083038186803b15801561117157600080fd5b505afa158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a991906114e4565b6001600160a01b031614156111e457808383815181106111cb576111cb611812565b6020908102919091010152816111e0816117e1565b9250505b806111ee816117e1565b9150506110a4565b6111fe611329565b6001600160a01b0381166112635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ce565b61126c81611383565b50565b611277611329565b80518251146112bd5760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016107ce565b60005b825181101561077b578181815181106112db576112db611812565b6020026020010151600260008584815181106112f9576112f9611812565b60200260200101518152602001908152602001600020600401819055508080611321906117e1565b9150506112c0565b6000546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126113e557600080fd5b50813567ffffffffffffffff8111156113fd57600080fd5b6020830191508360208260051b850101111561141857600080fd5b9250929050565b600082601f83011261143057600080fd5b8135602067ffffffffffffffff8083111561144d5761144d611828565b8260051b604051601f19603f8301168101818110848211171561147257611472611828565b6040528481528381019250868401828801850189101561149157600080fd5b600092505b858310156114b4578035845292840192600192909201918401611496565b50979650505050505050565b6000602082840312156114d257600080fd5b81356114dd8161183e565b9392505050565b6000602082840312156114f657600080fd5b81516114dd8161183e565b6000806020838503121561151457600080fd5b823567ffffffffffffffff81111561152b57600080fd5b611537858286016113d3565b90969095509350505050565b60008060006040848603121561155857600080fd5b833567ffffffffffffffff81111561156f57600080fd5b61157b868287016113d3565b909790965060209590950135949350505050565b6000602082840312156115a157600080fd5b813567ffffffffffffffff8111156115b857600080fd5b610c118482850161141f565b600080604083850312156115d757600080fd5b823567ffffffffffffffff808211156115ef57600080fd5b6115fb8683870161141f565b9350602085013591508082111561161157600080fd5b5061161e8582860161141f565b9150509250929050565b6000806040838503121561163b57600080fd5b823567ffffffffffffffff81111561165257600080fd5b61165e8582860161141f565b95602094909401359450505050565b60006020828403121561167f57600080fd5b5035919050565b60006020828403121561169857600080fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561170957815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016116bc565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561174e57835183529284019291840191600101611732565b50909695505050505050565b6000821982111561176d5761176d6117fc565b500190565b60008261178f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117ae576117ae6117fc565b500290565b6000828210156117c5576117c56117fc565b500390565b6000816117d9576117d96117fc565b506000190190565b60006000198214156117f5576117f56117fc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461126c57600080fdfea26469706673582212201b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f74153664736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063ce98c28911610071578063ce98c289146102b4578063e449f341146102c7578063ea66aeb3146102da578063f2fde38b146102ed578063f703b5eb1461030057600080fd5b80638da5cb5b146101e6578063a444319a1461020b578063c07885551461022b578063c688df85146102a157600080fd5b80636ec00232116100de5780636ec0023214610196578063715018a6146101b657806377325ebe146101c0578063857b767b146101d357600080fd5b80631e6c7bfd146101105780633d8c4584146101435780633fe3941e1461016357806364728f6d14610183575b600080fd5b61013061011e36600461166d565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101306101513660046114c0565b60036020526000908152604090205481565b61013061017136600461166d565b60056020526000908152604090205481565b61013061019136600461158f565b610313565b6101a96101a436600461158f565b6105ce565b60405161013a919061169f565b6101be61070c565b005b6101be6101ce366004611628565b610720565b6101be6101e1366004611543565b610780565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013a565b61021e6102193660046114c0565b610a5c565b60405161013a9190611716565b61027161023936600461166d565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b031692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161013a565b6001546101f3906001600160a01b031681565b6101306102c236600461166d565b610b37565b6101be6102d5366004611501565b610c6a565b61021e6102e83660046114c0565b610fd9565b6101be6102fb3660046114c0565b6111f6565b6101be61030e3660046115c4565b61126f565b600080805b83518110156105c75760006002600086848151811061033957610339611812565b60200260200101518152602001908152602001600020600001544261035e91906117b3565b90506000600560006002600089878151811061037c5761037c611812565b60200260200101518152602001908152602001600020600201548152602001908152602001600020548211156104435760046000600260008987815181106103c6576103c6611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600260008a888151811061040957610409611812565b602002602001015181526020019081526020016000206002015481526020019081526020016000205461043c9190611794565b9050610494565b600460006002600089878151811061045d5761045d611812565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054826104919190611794565b90505b600260008785815181106104aa576104aa611812565b6020026020010151815260200190815260200160002060040154600014156105185780600260008886815181106104e3576104e3611812565b6020026020010151815260200190815260200160002060030154610507919061175a565b610511908561175a565b93506105b2565b6103e86002600088868151811061053157610531611812565b6020026020010151815260200190815260200160002060040154826105569190611794565b6105609190611772565b816002600089878151811061057757610577611812565b602002602001015181526020019081526020016000206003015461059b919061175a565b6105a5919061175a565b6105af908561175a565b93505b505080806105bf906117e1565b915050610318565b5092915050565b60606000825167ffffffffffffffff8111156105ec576105ec611828565b60405190808252806020026020018201604052801561065857816020015b6106456040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b81526020019060019003908161060a5790505b50905060005b83518110156105c7576002600085838151811061067d5761067d611812565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260040154608082015282518390839081106106ee576106ee611812565b60200260200101819052508080610704906117e1565b91505061065e565b610714611329565b61071e6000611383565b565b610728611329565b60005b825181101561077b57816002600085848151811061074b5761074b611812565b60200260200101518152602001908152602001600020600401819055508080610773906117e1565b91505061072b565b505050565b333b15801561078e57503332145b6107d75760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b6000818152600460205260409020546108235760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016107ce565b60005b82811015610a565760015433906001600160a01b0316636352211e86868581811061085357610853611812565b905060200201356040518263ffffffff1660e01b815260040161087891815260200190565b60206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c891906114e4565b6001600160a01b03161415610a44576001546001600160a01b03166323b872dd33308787868181106108fc576108fc611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b50505050426002600086868581811061098257610982611812565b9050602002013581526020019081526020016000206000018190555081600260008686858181106109b5576109b5611812565b9050602002013581526020019081526020016000206002018190555033600260008686858181106109e8576109e8611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610a3e836117e1565b91905055505b80610a4e816117e1565b915050610826565b50505050565b6001600160a01b0381166000908152600360205260408120546060919067ffffffffffffffff811115610a9157610a91611828565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b509050600060015b61058c8111610b2e576000818152600260205260409020600101546001600160a01b0386811691161415610b1c5780838381518110610b0357610b03611812565b602090810291909101015281610b18816117e1565b9250505b80610b26816117e1565b915050610ac2565b50909392505050565b6000818152600260205260408120548190610b5290426117b3565b60008481526002602081815260408084209092015483526005905281205491925090821115610bb357600084815260026020818152604080842090920154835260048152818320546005909152912054610bac9190611794565b9050610bde565b600084815260026020818152604080842090920154835260049052902054610bdb9083611794565b90505b600084815260026020526040902060040154610c1957600084815260026020526040902060030154610c1190829061175a565b949350505050565b6000848152600260205260409020600401546103e890610c399083611794565b610c439190611772565b600085815260026020526040902060030154610c6090839061175a565b610c11919061175a565b333b158015610c7857503332145b610cbc5760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b60448201526064016107ce565b60005b8181101561077b573360026000858585818110610cde57610cde611812565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015610d8a5750426005600060026000878787818110610d2757610d27611812565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460026000868686818110610d6557610d65611812565b90506020020135815260200190815260200160002060000154610d88919061175a565b105b15610fc7576001546001600160a01b03166323b872dd3033868686818110610db457610db4611812565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110610e4457610e44611812565b905060200201356040518263ffffffff1660e01b8152600401610e6991815260200190565b60206040518083038186803b158015610e8157600080fd5b505afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb99190611686565b60026000858585818110610ecf57610ecf611812565b90506020020135815260200190815260200160002060030181905550600060026000858585818110610f0357610f03611812565b90506020020135815260200190815260200160002060000181905550600060026000858585818110610f3757610f37611812565b90506020020135815260200190815260200160002060020181905550600060026000858585818110610f6b57610f6b611812565b60209081029290920135835250818101929092526040908101600090812060010180546001600160a01b0319166001600160a01b03959095169490941790935533835260039091528120805491610fc1836117ca565b91905055505b80610fd1816117e1565b915050610cbf565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b15801561102357600080fd5b505afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b9190611686565b67ffffffffffffffff81111561107357611073611828565b60405190808252806020026020018201604052801561109c578160200160208202803683370190505b509050600060015b61058c8111610b2e576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156110f157600080fd5b505afa925050508015611121575060408051601f3d908101601f1916820190925261111e918101906114e4565b60015b61112a576111e4565b506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e9060240160206040518083038186803b15801561117157600080fd5b505afa158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a991906114e4565b6001600160a01b031614156111e457808383815181106111cb576111cb611812565b6020908102919091010152816111e0816117e1565b9250505b806111ee816117e1565b9150506110a4565b6111fe611329565b6001600160a01b0381166112635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ce565b61126c81611383565b50565b611277611329565b80518251146112bd5760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016107ce565b60005b825181101561077b578181815181106112db576112db611812565b6020026020010151600260008584815181106112f9576112f9611812565b60200260200101518152602001908152602001600020600401819055508080611321906117e1565b9150506112c0565b6000546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126113e557600080fd5b50813567ffffffffffffffff8111156113fd57600080fd5b6020830191508360208260051b850101111561141857600080fd5b9250929050565b600082601f83011261143057600080fd5b8135602067ffffffffffffffff8083111561144d5761144d611828565b8260051b604051601f19603f8301168101818110848211171561147257611472611828565b6040528481528381019250868401828801850189101561149157600080fd5b600092505b858310156114b4578035845292840192600192909201918401611496565b50979650505050505050565b6000602082840312156114d257600080fd5b81356114dd8161183e565b9392505050565b6000602082840312156114f657600080fd5b81516114dd8161183e565b6000806020838503121561151457600080fd5b823567ffffffffffffffff81111561152b57600080fd5b611537858286016113d3565b90969095509350505050565b60008060006040848603121561155857600080fd5b833567ffffffffffffffff81111561156f57600080fd5b61157b868287016113d3565b909790965060209590950135949350505050565b6000602082840312156115a157600080fd5b813567ffffffffffffffff8111156115b857600080fd5b610c118482850161141f565b600080604083850312156115d757600080fd5b823567ffffffffffffffff808211156115ef57600080fd5b6115fb8683870161141f565b9350602085013591508082111561161157600080fd5b5061161e8582860161141f565b9150509250929050565b6000806040838503121561163b57600080fd5b823567ffffffffffffffff81111561165257600080fd5b61165e8582860161141f565b95602094909401359450505050565b60006020828403121561167f57600080fd5b5035919050565b60006020828403121561169857600080fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561170957815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016116bc565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561174e57835183529284019291840191600101611732565b50909695505050505050565b6000821982111561176d5761176d6117fc565b500190565b60008261178f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117ae576117ae6117fc565b500290565b6000828210156117c5576117c56117fc565b500390565b6000816117d9576117d96117fc565b506000190190565b60006000198214156117f5576117f56117fc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461126c57600080fdfea26469706673582212201b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f74153664736f6c63430008070033
Deployed Bytecode Sourcemap
11469:7369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11906:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8938:25:1;;;8926:2;8911:18;11906:44:0;;;;;;;;11847:52;;;;;;:::i;:::-;;;;;;;;;;;;;;11957:44;;;;;;:::i;:::-;;;;;;;;;;;;;;15072:1331;;;;;;:::i;:::-;;:::i;17337:362::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10296:103::-;;;:::i;:::-;;14454:256;;;;;;:::i;:::-;;:::i;12672:777::-;;;;;;:::i;:::-;;:::i;9648:87::-;9694:7;9721:6;-1:-1:-1;;;;;9721:6:0;9648:87;;;-1:-1:-1;;;;;4676:32:1;;;4658:51;;4646:2;4631:18;9648:87:0;4512:203:1;18321:514:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11795:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11795:45:0;;;;;;;;;;9233:25:1;;;-1:-1:-1;;;;;9294:32:1;;;9289:2;9274:18;;9267:60;9343:18;;;9336:34;;;;9401:2;9386:18;;9379:34;9444:3;9429:19;;9422:35;9220:3;9205:19;11795:45:0;8974:489:1;11550:72:0;;;;;-1:-1:-1;;;;;11550:72:0;;;16411:918;;;;;;:::i;:::-;;:::i;13457:989::-;;;;;;:::i;:::-;;:::i;17707:606::-;;;;;;:::i;:::-;;:::i;10554:201::-;;;;;;:::i;:::-;;:::i;14718:346::-;;;;;;:::i;:::-;;:::i;15072:1331::-;15176:7;;;15238:1126;15270:8;:15;15262:5;:23;15238:1126;;;15311:18;15367:12;:29;15380:8;15389:5;15380:15;;;;;;;;:::i;:::-;;;;;;;15367:29;;;;;;;;;;;:39;;;15332:15;:74;;;;:::i;:::-;15311:95;;15423:21;15476:9;:47;15486:12;:29;15499:8;15508:5;15499:15;;;;;;;;:::i;:::-;;;;;;;15486:29;;;;;;;;;;;:36;;;15476:47;;;;;;;;;;;;15463:10;:60;15459:415;;;15652:9;:47;15662:12;:29;15675:8;15684:5;15675:15;;;;;;;;:::i;:::-;;;;;;;15662:29;;;;;;;;;;;:36;;;15652:47;;;;;;;;;;;;15581:9;:47;15591:12;:29;15604:8;15613:5;15604:15;;;;;;;;:::i;:::-;;;;;;;15591:29;;;;;;;;;;;:36;;;15581:47;;;;;;;;;;;;:118;;;;:::i;:::-;15544:155;;15459:415;;;15811:9;:47;15821:12;:29;15834:8;15843:5;15834:15;;;;;;;;:::i;:::-;;;;;;;15821:29;;;;;;;;;;;:36;;;15811:47;;;;;;;;;;;;15777:10;:81;;;;:::i;:::-;15740:118;;15459:415;15894:12;:29;15907:8;15916:5;15907:15;;;;;;;;:::i;:::-;;;;;;;15894:29;;;;;;;;;;;:35;;;15933:1;15894:40;15890:463;;;16057:13;15994:12;:29;16007:8;16016:5;16007:15;;;;;;;;:::i;:::-;;;;;;;15994:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;15955:115;;;;:::i;:::-;;;15890:463;;;16332:4;16268:12;:29;16281:8;16290:5;16281:15;;;;;;;;:::i;:::-;;;;;;;16268:29;;;;;;;;;;;:35;;;16252:13;:51;;;;:::i;:::-;16251:85;;;;:::i;:::-;16213:13;16150:12;:29;16163:8;16172:5;16163:15;;;;;;;;:::i;:::-;;;;;;;16150:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;:187;;;;:::i;:::-;16111:226;;;;:::i;:::-;;;15890:463;15296:1068;;15287:7;;;;;:::i;:::-;;;;15238:1126;;;-1:-1:-1;16381:14:0;15072:1331;-1:-1:-1;;15072:1331:0:o;17337:362::-;17435:14;17467:25;17507:6;:13;17495:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17495:26:0;;;;;;;;;;;;;;;;;17467:54;;17539:13;17534:130;17566:6;:13;17558:5;:21;17534:130;;;17625:12;:27;17638:6;17645:5;17638:13;;;;;;;;:::i;:::-;;;;;;;;;;;;17625:27;;;;;;;;;;;;;-1:-1:-1;17625:27:0;17605:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;17605:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:10;;17616:5;;17605:17;;;;;;:::i;:::-;;;;;;:47;;;;17581:7;;;;;:::i;:::-;;;;17534:130;;10296:103;9534:13;:11;:13::i;:::-;10361:30:::1;10388:1;10361:18;:30::i;:::-;10296:103::o:0;14454:256::-;9534:13;:11;:13::i;:::-;14580::::1;14575:128;14607:8;:15;14599:5;:23;14575:128;;;14686:5;14648:12;:29;14661:8;14670:5;14661:15;;;;;;;;:::i;:::-;;;;;;;14648:29;;;;;;;;;;;:35;;:43;;;;14624:7;;;;;:::i;:::-;;;;14575:128;;;;14454:256:::0;;:::o;12672:777::-;12355:10;12603:17;12648:8;;;12341:55;;-1:-1:-1;12372:10:0;12386:9;12372:23;12341:55;12319:126;;;;-1:-1:-1;;;12319:126:0;;8297:2:1;12319:126:0;;;8279:21:1;8336:2;8316:18;;;8309:30;-1:-1:-1;;;8355:18:1;;;8348:51;8416:18;;12319:126:0;;;;;;;;;12815:1:::1;12795:17:::0;;;:9:::1;:17;::::0;;;;;12787:48:::1;;;::::0;-1:-1:-1;;;12787:48:0;;7593:2:1;12787:48:0::1;::::0;::::1;7575:21:1::0;7632:2;7612:18;;;7605:30;-1:-1:-1;;;7651:18:1;;;7644:44;7705:18;;12787:48:0::1;7391:338:1::0;12787:48:0::1;12853:13;12848:594;12872:23:::0;;::::1;12848:594;;;12925:11;::::0;12965:10:::1;::::0;-1:-1:-1;;;;;12925:11:0::1;:19;12945:8:::0;;12954:5;12945:15;;::::1;;;;;:::i;:::-;;;;;;;12925:36;;;;;;;;;;;;;8938:25:1::0;;8926:2;8911:18;;8792:177;12925:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12925:50:0::1;;12921:510;;;12996:11;::::0;-1:-1:-1;;;;;12996:11:0::1;:24;13043:10;13084:4;13112:8:::0;;13121:5;13112:15;;::::1;;;;;:::i;:::-;12996:150;::::0;-1:-1:-1;;;;;;12996:150:0::1;::::0;;;;;;-1:-1:-1;;;;;4978:15:1;;;12996:150:0::1;::::0;::::1;4960:34:1::0;5030:15;;;;5010:18;;;5003:43;-1:-1:-1;13112:15:0::1;::::0;;::::1;;;5062:18:1::0;;;5055:34;4895:18;;12996:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13209:15;13167:12;:29;13180:8;;13189:5;13180:15;;;;;;;:::i;:::-;;;;;;;13167:29;;;;;;;;;;;:39;;:57;;;;13282:6;13243:12;:29;13256:8;;13265:5;13256:15;;;;;;;:::i;:::-;;;;;;;13243:29;;;;;;;;;;;:36;;:45;;;;13353:10;13307:12;:29;13320:8;;13329:5;13320:15;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;13307:29:::0;;-1:-1:-1;13307:29:0;;::::1;::::0;;;;;;;;-1:-1:-1;13307:29:0;;;:43:::1;;:56:::0;;-1:-1:-1;;;;;;13307:56:0::1;-1:-1:-1::0;;;;;13307:56:0;;;::::1;::::0;;;::::1;::::0;;;13402:10:::1;13384:29:::0;;:17:::1;:29:::0;;;;;:31;;;::::1;::::0;::::1;:::i;:::-;;;;;;12921:510;12897:7:::0;::::1;::::0;::::1;:::i;:::-;;;;12848:594;;;;12672:777:::0;;;:::o;18321:514::-;-1:-1:-1;;;;;18488:24:0;;18444:27;18488:24;;;:17;:24;;;;;;18410:16;;18444:27;18474:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18474:39:0;-1:-1:-1;18444:69:0;-1:-1:-1;18524:20:0;18582:1;18559:241;18596:4;18585:7;:15;18559:241;;18632:21;;;;:12;:21;;;;;:35;;;-1:-1:-1;;;;;18632:44:0;;;:35;;:44;18628:161;;;18732:7;18697:10;18708:12;18697:24;;;;;;;;:::i;:::-;;;;;;;;;;:43;18759:14;;;;:::i;:::-;;;;18628:161;18602:9;;;;:::i;:::-;;;;18559:241;;;-1:-1:-1;18817:10:0;;18321:514;-1:-1:-1;;;18321:514:0:o;16411:918::-;16507:7;16571:21;;;:12;:21;;;;;:31;16507:7;;16553:49;;:15;:49;:::i;:::-;16613:21;16672;;;:12;:21;;;;;;;;:28;;;;16662:39;;:9;:39;;;;;16532:70;;-1:-1:-1;16613:21:0;16649:52;;16645:351;;;16810:39;16820:21;;;:12;:21;;;;;;;;:28;;;;16810:39;;:9;:39;;;;;;16751:9;:39;;;;;;:98;;16810:39;16751:98;:::i;:::-;16718:131;;16645:351;;;16945:39;16955:21;;;:12;:21;;;;;;;;:28;;;;16945:39;;:9;:39;;;;;16915:69;;:10;:69;:::i;:::-;16882:102;;16645:351;17012:21;;;;:12;:21;;;;;:27;;;17008:314;;17068:21;;;;:12;:21;;;;;:31;;;:47;;17102:13;;17068:47;:::i;:::-;17061:54;16411:918;-1:-1:-1;;;;16411:918:0:o;17008:314::-;17274:21;;;;:12;:21;;;;;:27;;;17305:4;;17258:43;;:13;:43;:::i;:::-;17257:52;;;;:::i;:::-;17172:21;;;;:12;:21;;;;;:31;;;:64;;17223:13;;17172:64;:::i;:::-;:138;;;;:::i;13457:989::-;12355:10;12603:17;12648:8;;;12341:55;;-1:-1:-1;12372:10:0;12386:9;12372:23;12341:55;12319:126;;;;-1:-1:-1;;;12319:126:0;;8297:2:1;12319:126:0;;;8279:21:1;8336:2;8316:18;;;8309:30;-1:-1:-1;;;8355:18:1;;;8348:51;8416:18;;12319:126:0;8095:345:1;12319:126:0;13540:13:::1;13535:904;13559:23:::0;;::::1;13535:904;;;13677:10;13630:12;:29;13643:8:::0;;13652:5;13643:15;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;13630:29:::0;;-1:-1:-1;13630:29:0;::::1;::::0;;;;;;-1:-1:-1;13630:29:0;:43:::1;;::::0;-1:-1:-1;;;;;13630:43:0::1;:57;:225:::0;::::1;;;;13840:15;13772:9;:47;13782:12;:29;13795:8;;13804:5;13795:15;;;;;;;:::i;:::-;;;;;;;13782:29;;;;;;;;;;;:36;;;13772:47;;;;;;;;;;;;13709:12;:29;13722:8;;13731:5;13722:15;;;;;;;:::i;:::-;;;;;;;13709:29;;;;;;;;;;;:39;;;:110;;;;:::i;:::-;13708:147;13630:225;13608:820;;;13890:11;::::0;-1:-1:-1;;;;;13890:11:0::1;:24;13945:4;13973:10;14006:8:::0;;14015:5;14006:15;;::::1;;;;;:::i;:::-;13890:150;::::0;-1:-1:-1;;;;;;13890:150:0::1;::::0;;;;;;-1:-1:-1;;;;;4978:15:1;;;13890:150:0::1;::::0;::::1;4960:34:1::0;5030:15;;;;5010:18;;;5003:43;-1:-1:-1;14006:15:0::1;::::0;;::::1;;;5062:18:1::0;;;5055:34;4895:18;;13890:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14101:4;-1:-1:-1::0;;;;;14101:46:0::1;;14148:8;;14157:5;14148:15;;;;;;;:::i;:::-;;;;;;;14101:63;;;;;;;;;;;;;8938:25:1::0;;8926:2;8911:18;;8792:177;14101:63:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14059:12;:29;14072:8;;14081:5;14072:15;;;;;;;:::i;:::-;;;;;;;14059:29;;;;;;;;;;;:39;;:105;;;;14225:1;14183:12;:29;14196:8;;14205:5;14196:15;;;;;;;:::i;:::-;;;;;;;14183:29;;;;;;;;;;;:39;;:43;;;;14284:1;14245:12;:29;14258:8;;14267:5;14258:15;;;;;;;:::i;:::-;;;;;;;14245:29;;;;;;;;;;;:36;;:40;;;;14358:1;14304:12;:29;14317:8;;14326:5;14317:15;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;14304:29:::0;;-1:-1:-1;14304:29:0;;::::1;::::0;;;;;;;;-1:-1:-1;14304:29:0;;;:43:::1;;:56:::0;;-1:-1:-1;;;;;;14304:56:0::1;-1:-1:-1::0;;;;;14304:56:0;;;::::1;::::0;;;::::1;::::0;;;14399:10:::1;14381:29:::0;;:17:::1;:29:::0;;;;;:31;;;::::1;::::0;::::1;:::i;:::-;;;;;;13608:820;13584:7:::0;::::1;::::0;::::1;:::i;:::-;;;;13535:904;;17707:606:::0;17887:11;;:28;;-1:-1:-1;;;17887:28:0;;-1:-1:-1;;;;;4676:32:1;;;17887:28:0;;;4658:51:1;17795:16:0;;17829:27;;17887:11;;;:21;;4631:18:1;;17887:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17859:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17859:67:0;-1:-1:-1;17829:97:0;-1:-1:-1;17937:20:0;17989:1;17968:310;18001:4;17992:5;:13;17968:310;;18035:11;;:26;;-1:-1:-1;;;18035:26:0;;;;;8938:25:1;;;-1:-1:-1;;;;;18035:11:0;;;;:19;;8911:18:1;;18035:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18035:26:0;;;;;;;;-1:-1:-1;;18035:26:0;;;;;;;;;;;;:::i;:::-;;;18031:236;;;;;-1:-1:-1;18085:11:0;;:26;;-1:-1:-1;;;18085:26:0;;;;;8938:25:1;;;-1:-1:-1;;;;;18085:35:0;;;;:11;;:19;;8911:18:1;;18085:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18085:35:0;;18081:162;;;18180:5;18145:10;18156:12;18145:24;;;;;;;;:::i;:::-;;;;;;;;;;:41;18209:14;;;;:::i;:::-;;;;18081:162;18007:7;;;;:::i;:::-;;;;17968:310;;10554:201;9534:13;:11;:13::i;:::-;-1:-1:-1;;;;;10643:22:0;::::1;10635:73;;;::::0;-1:-1:-1;;;10635:73:0;;7186:2:1;10635:73:0::1;::::0;::::1;7168:21:1::0;7225:2;7205:18;;;7198:30;7264:34;7244:18;;;7237:62;-1:-1:-1;;;7315:18:1;;;7308:36;7361:19;;10635:73:0::1;6984:402:1::0;10635:73:0::1;10719:28;10738:8;10719:18;:28::i;:::-;10554:201:::0;:::o;14718:346::-;9534:13;:11;:13::i;:::-;14872:6:::1;:13;14853:8;:15;:32;14845:63;;;::::0;-1:-1:-1;;;14845:63:0;;8647:2:1;14845:63:0::1;::::0;::::1;8629:21:1::0;8686:2;8666:18;;;8659:30;-1:-1:-1;;;8705:18:1;;;8698:48;8763:18;;14845:63:0::1;8445:342:1::0;14845:63:0::1;14926:13;14921:136;14953:8;:15;14945:5;:23;14921:136;;;15032:6;15039:5;15032:13;;;;;;;;:::i;:::-;;;;;;;14994:12;:29;15007:8;15016:5;15007:15;;;;;;;;:::i;:::-;;;;;;;14994:29;;;;;;;;;;;:35;;:51;;;;14970:7;;;;;:::i;:::-;;;;14921:136;;9813:132:::0;9694:7;9721:6;-1:-1:-1;;;;;9721:6:0;8279:10;9877:23;9869:68;;;;-1:-1:-1;;;9869:68:0;;7936:2:1;9869:68:0;;;7918:21:1;;;7955:18;;;7948:30;8014:34;7994:18;;;7987:62;8066:18;;9869:68:0;7734:356:1;10915:191:0;10989:16;11008:6;;-1:-1:-1;;;;;11025:17:0;;;-1:-1:-1;;;;;;11025:17:0;;;;;;11058:40;;11008:6;;;;;;;11058:40;;10989:16;11058:40;10978:128;10915:191;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:913::-;440:5;493:3;486:4;478:6;474:17;470:27;460:55;;511:1;508;501:12;460:55;547:6;534:20;573:4;596:18;633:2;629;626:10;623:36;;;639:18;;:::i;:::-;685:2;682:1;678:10;717:2;711:9;780:2;776:7;771:2;767;763:11;759:25;751:6;747:38;835:6;823:10;820:22;815:2;803:10;800:18;797:46;794:72;;;846:18;;:::i;:::-;882:2;875:22;932:18;;;966:15;;;;-1:-1:-1;1001:15:1;;;1035;;;1031:24;;1028:33;-1:-1:-1;1025:53:1;;;1074:1;1071;1064:12;1025:53;1096:1;1087:10;;1106:163;1120:2;1117:1;1114:9;1106:163;;;1177:17;;1165:30;;1215:12;;;;1138:1;1131:9;;;;;1247:12;;1106:163;;;-1:-1:-1;1287:6:1;386:913;-1:-1:-1;;;;;;;386:913:1:o;1304:247::-;1363:6;1416:2;1404:9;1395:7;1391:23;1387:32;1384:52;;;1432:1;1429;1422:12;1384:52;1471:9;1458:23;1490:31;1515:5;1490:31;:::i;:::-;1540:5;1304:247;-1:-1:-1;;;1304:247:1:o;1556:251::-;1626:6;1679:2;1667:9;1658:7;1654:23;1650:32;1647:52;;;1695:1;1692;1685:12;1647:52;1727:9;1721:16;1746:31;1771:5;1746:31;:::i;1812:437::-;1898:6;1906;1959:2;1947:9;1938:7;1934:23;1930:32;1927:52;;;1975:1;1972;1965:12;1927:52;2015:9;2002:23;2048:18;2040:6;2037:30;2034:50;;;2080:1;2077;2070:12;2034:50;2119:70;2181:7;2172:6;2161:9;2157:22;2119:70;:::i;:::-;2208:8;;2093:96;;-1:-1:-1;1812:437:1;-1:-1:-1;;;;1812:437:1:o;2254:505::-;2349:6;2357;2365;2418:2;2406:9;2397:7;2393:23;2389:32;2386:52;;;2434:1;2431;2424:12;2386:52;2474:9;2461:23;2507:18;2499:6;2496:30;2493:50;;;2539:1;2536;2529:12;2493:50;2578:70;2640:7;2631:6;2620:9;2616:22;2578:70;:::i;:::-;2667:8;;2552:96;;-1:-1:-1;2749:2:1;2734:18;;;;2721:32;;2254:505;-1:-1:-1;;;;2254:505:1:o;2764:348::-;2848:6;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2957:9;2944:23;2990:18;2982:6;2979:30;2976:50;;;3022:1;3019;3012:12;2976:50;3045:61;3098:7;3089:6;3078:9;3074:22;3045:61;:::i;3117:595::-;3235:6;3243;3296:2;3284:9;3275:7;3271:23;3267:32;3264:52;;;3312:1;3309;3302:12;3264:52;3352:9;3339:23;3381:18;3422:2;3414:6;3411:14;3408:34;;;3438:1;3435;3428:12;3408:34;3461:61;3514:7;3505:6;3494:9;3490:22;3461:61;:::i;:::-;3451:71;;3575:2;3564:9;3560:18;3547:32;3531:48;;3604:2;3594:8;3591:16;3588:36;;;3620:1;3617;3610:12;3588:36;;3643:63;3698:7;3687:8;3676:9;3672:24;3643:63;:::i;:::-;3633:73;;;3117:595;;;;;:::o;3717:416::-;3810:6;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3927:9;3914:23;3960:18;3952:6;3949:30;3946:50;;;3992:1;3989;3982:12;3946:50;4015:61;4068:7;4059:6;4048:9;4044:22;4015:61;:::i;:::-;4005:71;4123:2;4108:18;;;;4095:32;;-1:-1:-1;;;;3717:416:1:o;4138:180::-;4197:6;4250:2;4238:9;4229:7;4225:23;4221:32;4218:52;;;4266:1;4263;4256:12;4218:52;-1:-1:-1;4289:23:1;;4138:180;-1:-1:-1;4138:180:1:o;4323:184::-;4393:6;4446:2;4434:9;4425:7;4421:23;4417:32;4414:52;;;4462:1;4459;4452:12;4414:52;-1:-1:-1;4485:16:1;;4323:184;-1:-1:-1;4323:184:1:o;5100:1023::-;5315:2;5367:21;;;5437:13;;5340:18;;;5459:22;;;5286:4;;5315:2;5500;;5518:18;;;;5559:15;;;5286:4;5602:495;5616:6;5613:1;5610:13;5602:495;;;5675:13;;5713:9;;5701:22;;5767:11;;;5761:18;-1:-1:-1;;;;;5757:44:1;5743:12;;;5736:66;5842:11;;;5836:18;5822:12;;;5815:40;5878:4;5922:11;;;5916:18;5902:12;;;5895:40;5958:4;6002:11;;;5996:18;5982:12;;;5975:40;5789:3;6035:14;;;;6072:15;;;;5798:1;5631:9;5602:495;;;-1:-1:-1;6114:3:1;;5100:1023;-1:-1:-1;;;;;;;5100:1023:1:o;6128:632::-;6299:2;6351:21;;;6421:13;;6324:18;;;6443:22;;;6270:4;;6299:2;6522:15;;;;6496:2;6481:18;;;6270:4;6565:169;6579:6;6576:1;6573:13;6565:169;;;6640:13;;6628:26;;6709:15;;;;6674:12;;;;6601:1;6594:9;6565:169;;;-1:-1:-1;6751:3:1;;6128:632;-1:-1:-1;;;;;;6128:632:1:o;9468:128::-;9508:3;9539:1;9535:6;9532:1;9529:13;9526:39;;;9545:18;;:::i;:::-;-1:-1:-1;9581:9:1;;9468:128::o;9601:217::-;9641:1;9667;9657:132;;9711:10;9706:3;9702:20;9699:1;9692:31;9746:4;9743:1;9736:15;9774:4;9771:1;9764:15;9657:132;-1:-1:-1;9803:9:1;;9601:217::o;9823:168::-;9863:7;9929:1;9925;9921:6;9917:14;9914:1;9911:21;9906:1;9899:9;9892:17;9888:45;9885:71;;;9936:18;;:::i;:::-;-1:-1:-1;9976:9:1;;9823:168::o;9996:125::-;10036:4;10064:1;10061;10058:8;10055:34;;;10069:18;;:::i;:::-;-1:-1:-1;10106:9:1;;9996:125::o;10126:136::-;10165:3;10193:5;10183:39;;10202:18;;:::i;:::-;-1:-1:-1;;;10238:18:1;;10126:136::o;10267:135::-;10306:3;-1:-1:-1;;10327:17:1;;10324:43;;;10347:18;;:::i;:::-;-1:-1:-1;10394:1:1;10383:13;;10267:135::o;10407:127::-;10468:10;10463:3;10459:20;10456:1;10449:31;10499:4;10496:1;10489:15;10523:4;10520:1;10513:15;10539:127;10600:10;10595:3;10591:20;10588:1;10581:31;10631:4;10628:1;10621:15;10655:4;10652:1;10645:15;10671:127;10732:10;10727:3;10723:20;10720:1;10713:31;10763:4;10760:1;10753:15;10787:4;10784:1;10777:15;10803:131;-1:-1:-1;;;;;10878:31:1;;10868:42;;10858:70;;10924:1;10921;10914:12
Swarm Source
ipfs://1b63fe9a49747f531de0b56006f5ae939fa481df82e833d912d46eff0f741536
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.