More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 876 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 20567583 | 6 days ago | IN | 0 ETH | 0.00006952 | ||||
Unstake | 20549600 | 9 days ago | IN | 0 ETH | 0.00009834 | ||||
Unstake | 20500232 | 15 days ago | IN | 0 ETH | 0.00017907 | ||||
Unstake | 20496626 | 16 days ago | IN | 0 ETH | 0.00007614 | ||||
Stake | 20495591 | 16 days ago | IN | 0 ETH | 0.0001304 | ||||
Stake | 20495547 | 16 days ago | IN | 0 ETH | 0.00020408 | ||||
Change Stakers A... | 20466068 | 20 days ago | IN | 0 ETH | 0.00021253 | ||||
Change Stakers A... | 20466065 | 20 days ago | IN | 0 ETH | 0.00020098 | ||||
Unstake | 20436689 | 24 days ago | IN | 0 ETH | 0.00059822 | ||||
Unstake | 20390262 | 31 days ago | IN | 0 ETH | 0.0014193 | ||||
Unstake | 20386471 | 31 days ago | IN | 0 ETH | 0.00016256 | ||||
Stake | 20357224 | 35 days ago | IN | 0 ETH | 0.0021489 | ||||
Change Stakers A... | 20348228 | 37 days ago | IN | 0 ETH | 0.0004548 | ||||
Change Stakers A... | 20348226 | 37 days ago | IN | 0 ETH | 0.00044734 | ||||
Change Stakers A... | 20348223 | 37 days ago | IN | 0 ETH | 0.00044415 | ||||
Change Stakers A... | 20348220 | 37 days ago | IN | 0 ETH | 0.00045771 | ||||
Change Stakers A... | 20348217 | 37 days ago | IN | 0 ETH | 0.00044742 | ||||
Change Stakers A... | 20348213 | 37 days ago | IN | 0 ETH | 0.00043969 | ||||
Change Stakers A... | 20348206 | 37 days ago | IN | 0 ETH | 0.00041591 | ||||
Unstake | 20284653 | 46 days ago | IN | 0 ETH | 0.00079172 | ||||
Change Stakers A... | 20212885 | 56 days ago | IN | 0 ETH | 0.00025508 | ||||
Unstake | 20209054 | 56 days ago | IN | 0 ETH | 0.00009592 | ||||
Change Stakers A... | 20190572 | 59 days ago | IN | 0 ETH | 0.00021675 | ||||
Unstake | 20185728 | 59 days ago | IN | 0 ETH | 0.00042765 | ||||
Unstake | 20181214 | 60 days ago | IN | 0 ETH | 0.00012864 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EarlyBirds_Staking
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-01 */ // SPDX-License-Identifier: MIT /* ______ _ ____ _ _ | ____| | | | _ \(_) | | | |__ __ _ _ __| |_ _ | |_) |_ _ __ __| |___ | __| / _` | '__| | | | | | _ <| | '__/ _` / __| | |___| (_| | | | | |_| | | |_) | | | | (_| \__ \ |______\__,_|_| |_|\__, | |____/|_|_| \__,_|___/ __/ | |___/ By Devko.dev#7286 */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.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.9.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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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.18; 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); } interface ISC { struct token { uint256 stakeDate; address stakerAddress; uint256 tierId; uint256 collected; uint256 boost; } function tokensDetails( uint256[] memory tokens ) external view returns (token[] memory); } contract EarlyBirds_Staking is Ownable { using SafeMath for uint256; IEB public EB_Contract = IEB(0x3D84cbDC126B1d9DCA50bfFe0c7bb1940A4D029D); ISC public oldSC = ISC(0x8e9A7F848eaf0deE5d89ba9d22f6eED56f778e53); struct token { uint256 stakeDate; address stakerAddress; uint256 tierId; uint256 collected; uint256 boost; } mapping(uint256 => token) public stakedTokens; mapping(uint256 => uint256) public tiersRate; mapping(uint256 => uint256) public tiersDays; bool private allowEditing = true; bool private allowTransfers = true; constructor() {} modifier editingAllowed() { require((allowEditing), "EDITING_NOT_ALLOWED"); _; } modifier transfersAllowed() { require((allowTransfers), "TRANSFERS_NOT_ALLOWED"); _; } 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; } // THIS CAN BE DISABLED function transferOwnershipOfTokens( uint256[] memory tokenIds, address newOwner ) external notContract transfersAllowed { for (uint256 index = 0; index < tokenIds.length; index++) { if (stakedTokens[tokenIds[index]].stakerAddress == msg.sender) { stakedTokens[tokenIds[index]].stakerAddress = newOwner; } } } function toggleTransfers() external onlyOwner { allowTransfers = !allowTransfers; } function disableEditing() external onlyOwner { allowEditing = false; } // THIS CAN BE DISABLED function changeStakersAddresses( uint256[] memory tokenIds, address[] memory newStakers ) external onlyOwner editingAllowed { for (uint256 index = 0; index < tokenIds.length; index++) { stakedTokens[tokenIds[index]].stakerAddress = newStakers[index]; } } // THIS CAN BE DISABLED function changeStakingDetails( token[] memory tokensAdded, uint256[] memory tokenIds ) external onlyOwner editingAllowed { for (uint256 index = 0; index < tokenIds.length; index++) { stakedTokens[tokenIds[index]].stakeDate = tokensAdded[index] .stakeDate; stakedTokens[tokenIds[index]].stakerAddress = tokensAdded[index] .stakerAddress; stakedTokens[tokenIds[index]].tierId = tokensAdded[index].tierId; stakedTokens[tokenIds[index]].collected = tokensAdded[index] .collected; stakedTokens[tokenIds[index]].boost = tokensAdded[index].boost; } } // THIS CAN BE DISABLED function changeMainContract( address newContract ) external onlyOwner editingAllowed { EB_Contract = IEB(newContract); } // THIS CAN BE DISABLED function clone( uint256 idFrom, uint256 count ) external onlyOwner editingAllowed { uint256[] memory tokendIds = new uint256[](count); for (uint256 index = 0; index < count; index++) { tokendIds[index] = idFrom + index; } ISC.token[] memory tokenDetails = oldSC.tokensDetails(tokendIds); for (uint256 index = 0; index < tokenDetails.length; index++) { stakedTokens[idFrom + index].stakeDate = tokenDetails[index] .stakeDate; stakedTokens[idFrom + index].stakerAddress = tokenDetails[index] .stakerAddress; stakedTokens[idFrom + index].tierId = tokenDetails[index].tierId; stakedTokens[idFrom + index].collected = tokenDetails[index] .collected; stakedTokens[idFrom + index].boost = tokenDetails[index].boost; } } function changeTierRate( uint256 tierId, uint256 newRate ) external onlyOwner { tiersRate[tierId] = newRate; } function changeTierDays( uint256 tierId, uint256 newDaysCount ) external onlyOwner { tiersDays[tierId] = newDaysCount; } 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; } } } 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); } } } function restake( uint256[] calldata tokenIds, uint256 tierId ) 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 ) { stakedTokens[tokenIds[index]].collected = this .claimableWormsForId(tokenIds[index]); stakedTokens[tokenIds[index]].stakeDate = block.timestamp; stakedTokens[tokenIds[index]].tierId = tierId; } } } 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 balanceOf(address owner) external view returns (uint256) { return EB_Contract.balanceOf(owner) + this.totalStakedBy(owner); } 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 totalStakedBy(address owner) external view returns (uint256) { uint256 total = 0; for (uint256 tokenId = 1; tokenId < 1000; tokenId++) { if (stakedTokens[tokenId].stakerAddress == owner) { total++; } } return total; } function tokensHeldBy( address owner ) external view returns (uint256[] memory) { uint256[] memory tokensList = new uint256[]( EB_Contract.balanceOf(owner) + this.totalStakedBy(owner) ); uint256 currentIndex; for (uint256 tokenId = 1; tokenId < 1000; tokenId++) { try EB_Contract.ownerOf(tokenId) { if (EB_Contract.ownerOf(tokenId) == owner) { tokensList[currentIndex] = uint256(tokenId); currentIndex++; } } catch {} if (stakedTokens[tokenId].stakerAddress == owner) { tokensList[currentIndex] = uint256(tokenId); currentIndex++; } } 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 < 1000; 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[](this.totalStakedBy(owner)); uint256 currentIndex = 0; for (uint256 tokenId = 1; tokenId < 1000; 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":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"newContract","type":"address"}],"name":"changeMainContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address[]","name":"newStakers","type":"address[]"}],"name":"changeStakersAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"tokensAdded","type":"tuple[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"changeStakingDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"newDaysCount","type":"uint256"}],"name":"changeTierDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"changeTierRate","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":[{"internalType":"uint256","name":"idFrom","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"clone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableEditing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oldSC","outputs":[{"internalType":"contract ISC","name":"","type":"address"}],"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":"restake","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":"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":[],"name":"toggleTransfers","outputs":[],"stateMutability":"nonpayable","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":"tokensHeldBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":"owner","type":"address"}],"name":"totalStakedBy","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[]"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnershipOfTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600180546001600160a01b0319908116733d84cbdc126b1d9dca50bffe0c7bb1940a4d029d1790915560028054909116738e9a7f848eaf0dee5d89ba9d22f6eed56f778e531790556006805461010161ffff1990911617905534801561006957600080fd5b5061007333610078565b6100c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612a95806100d76000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063ce98c289116100a2578063ea66aeb311610071578063ea66aeb31461046c578063f2fde38b1461047f578063f703b5eb14610492578063fdd629fc146104a557600080fd5b8063ce98c2891461042b578063d42ccb501461043e578063df9e3baf14610446578063e449f3411461045957600080fd5b8063a915d5c0116100de578063a915d5c01461037a578063aebfc55b1461038d578063c0788555146103a0578063c688df851461041857600080fd5b80638da5cb5b1461032f578063928989f914610354578063a444319a1461036757600080fd5b806364728f6d1161017c578063715018a61161014b578063715018a6146102ee57806377325ebe146102f6578063857b767b14610309578063878c6dad1461031c57600080fd5b806364728f6d146102885780636cb71b0d1461029b5780636ec00232146102bb57806370a08231146102db57600080fd5b806336908fac116101b857806336908fac1461023a5780633e5ac28f1461024d5780633fe3941e14610255578063442dbdc31461027557600080fd5b806316a461a0146101df5780631e6c7bfd146101f4578063297bd9c514610227575b600080fd5b6101f26101ed3660046122b1565b6104b8565b005b6102146102023660046122fc565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101f2610235366004612426565b6106ed565b6101f2610248366004612477565b61082a565b6101f2610a28565b6102146102633660046122fc565b60056020526000908152604090205481565b6101f2610283366004612579565b610a4d565b61021461029636600461259b565b610d0b565b6102ae6102a93660046125cf565b610fc5565b60405161021e91906125f3565b6102ce6102c936600461259b565b61127c565b60405161021e9190612637565b6102146102e93660046125cf565b6113b9565b6101f26114a2565b6101f26103043660046126ae565b6114b6565b6101f26103173660046122b1565b611511565b61021461032a3660046125cf565b61178b565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161021e565b60025461033c906001600160a01b031681565b6102ae6103753660046125cf565b6117df565b6101f2610388366004612579565b611901565b6101f261039b3660046125cf565b61191b565b6103e86103ae3660046122fc565b60036020819052600091825260409091208054600182015460028301549383015460049093015491936001600160a01b0390911692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161021e565b60015461033c906001600160a01b031681565b6102146104393660046122fc565b611967565b6101f2611aa1565b6101f26104543660046126f2565b611ab5565b6101f26104673660046127b5565b611b6b565b6102ae61047a3660046125cf565b611e84565b6101f261048d3660046125cf565b61206f565b6101f26104a03660046127f6565b6120e8565b6101f26104b3366004612579565b6121a2565b333b1580156104c657503332145b6104eb5760405162461bcd60e51b81526004016104e29061284f565b60405180910390fd5b60005b828110156106e757336003600086868581811061050d5761050d61287e565b60209081029290920135835250810191909152604001600020600101546001600160a01b03161480156105b957504260056000600360008888878181106105565761055661287e565b90506020020135815260200190815260200160002060020154815260200190815260200160002054600360008787868181106105945761059461287e565b905060200201358152602001908152602001600020600001546105b791906128aa565b105b156106d5573063ce98c2898585848181106105d6576105d661287e565b905060200201356040518263ffffffff1660e01b81526004016105fb91815260200190565b602060405180830381865afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c91906128bd565b600360008686858181106106525761065261287e565b9050602002013581526020019081526020016000206003018190555042600360008686858181106106855761068561287e565b9050602002013581526020019081526020016000206000018190555081600360008686858181106106b8576106b861287e565b905060200201358152602001908152602001600020600201819055505b806106df816128d6565b9150506104ee565b50505050565b333b1580156106fb57503332145b6107175760405162461bcd60e51b81526004016104e29061284f565b600654610100900460ff166107665760405162461bcd60e51b81526020600482015260156024820152741514905394d1915494d7d393d517d0531313d5d151605a1b60448201526064016104e2565b60005b825181101561082557336001600160a01b0316600360008584815181106107925761079261287e565b6020908102919091018101518252810191909152604001600020600101546001600160a01b0316036108135781600360008584815181106107d5576107d561287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061081d816128d6565b915050610769565b505050565b6108326121bc565b60065460ff166108545760405162461bcd60e51b81526004016104e2906128ef565b60005b8151811015610825578281815181106108725761087261287e565b602002602001015160000151600360008484815181106108945761089461287e565b60200260200101518152602001908152602001600020600001819055508281815181106108c3576108c361287e565b602002602001015160200151600360008484815181106108e5576108e561287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106109345761093461287e565b602002602001015160400151600360008484815181106109565761095661287e565b60200260200101518152602001908152602001600020600201819055508281815181106109855761098561287e565b602002602001015160600151600360008484815181106109a7576109a761287e565b60200260200101518152602001908152602001600020600301819055508281815181106109d6576109d661287e565b602002602001015160800151600360008484815181106109f8576109f861287e565b60200260200101518152602001908152602001600020600401819055508080610a20906128d6565b915050610857565b610a306121bc565b6006805461ff001981166101009182900460ff1615909102179055565b610a556121bc565b60065460ff16610a775760405162461bcd60e51b81526004016104e2906128ef565b6000816001600160401b03811115610a9157610a91612315565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b50905060005b82811015610b0157610ad281856128aa565b828281518110610ae457610ae461287e565b602090810291909101015280610af9816128d6565b915050610ac0565b50600254604051633760011960e11b81526000916001600160a01b031690636ec0023290610b339085906004016125f3565b600060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b78919081019061291c565b905060005b8151811015610d0457818181518110610b9857610b9861287e565b602002602001015160000151600360008388610bb491906128aa565b81526020810191909152604001600020558151829082908110610bd957610bd961287e565b602002602001015160200151600360008388610bf591906128aa565b815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110610c3c57610c3c61287e565b602002602001015160400151600360008388610c5891906128aa565b815260200190815260200160002060020181905550818181518110610c7f57610c7f61287e565b602002602001015160600151600360008388610c9b91906128aa565b815260200190815260200160002060030181905550818181518110610cc257610cc261287e565b602002602001015160800151600360008388610cde91906128aa565b815260208101919091526040016000206004015580610cfc816128d6565b915050610b7d565b5050505050565b600080805b8351811015610fbe57600060036000868481518110610d3157610d3161287e565b602002602001015181526020019081526020016000206000015442610d5691906129f6565b905060006005600060036000898781518110610d7457610d7461287e565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054821115610e3b576004600060036000898781518110610dbe57610dbe61287e565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600360008a8881518110610e0157610e0161287e565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054610e349190612a09565b9050610e8c565b6004600060036000898781518110610e5557610e5561287e565b602002602001015181526020019081526020016000206002015481526020019081526020016000205482610e899190612a09565b90505b60036000878581518110610ea257610ea261287e565b6020026020010151815260200190815260200160002060040154600003610f0f578060036000888681518110610eda57610eda61287e565b6020026020010151815260200190815260200160002060030154610efe91906128aa565b610f0890856128aa565b9350610fa9565b6103e860036000888681518110610f2857610f2861287e565b602002602001015181526020019081526020016000206004015482610f4d9190612a09565b610f579190612a20565b8160036000898781518110610f6e57610f6e61287e565b6020026020010151815260200190815260200160002060030154610f9291906128aa565b610f9c91906128aa565b610fa690856128aa565b93505b50508080610fb6906128d6565b915050610d10565b5092915050565b60405163878c6dad60e01b81526001600160a01b0382166004820152606090600090309063878c6dad90602401602060405180830381865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103391906128bd565b6001546040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a191906128bd565b6110ab91906128aa565b6001600160401b038111156110c2576110c2612315565b6040519080825280602002602001820160405280156110eb578160200160208202803683370190505b509050600060015b6103e8811015611273576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa925050508015611162575060408051601f3d908101601f1916820190925261115f91810190612a42565b60015b1561121157506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e90602401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190612a42565b6001600160a01b03160361121157808383815181106111f8576111f861287e565b60209081029190910101528161120d816128d6565b9250505b6000818152600360205260409020600101546001600160a01b0380871691160361126157808383815181106112485761124861287e565b60209081029190910101528161125d816128d6565b9250505b8061126b816128d6565b9150506110f3565b50909392505050565b6060600082516001600160401b0381111561129957611299612315565b60405190808252806020026020018201604052801561130557816020015b6112f26040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b8152602001906001900390816112b75790505b50905060005b8351811015610fbe576003600085838151811061132a5761132a61287e565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b03169381019390935260028101549183019190915260038101546060830152600401546080820152825183908390811061139b5761139b61287e565b602002602001018190525080806113b1906128d6565b91505061130b565b60405163878c6dad60e01b81526001600160a01b0382166004820152600090309063878c6dad90602401602060405180830381865afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142491906128bd565b6001546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149291906128bd565b61149c91906128aa565b92915050565b6114aa6121bc565b6114b46000612216565b565b6114be6121bc565b60005b82518110156108255781600360008584815181106114e1576114e161287e565b60200260200101518152602001908152602001600020600401819055508080611509906128d6565b9150506114c1565b333b15801561151f57503332145b61153b5760405162461bcd60e51b81526004016104e29061284f565b6000818152600460205260409020546115875760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016104e2565b60005b828110156106e75760015433906001600160a01b0316636352211e8686858181106115b7576115b761287e565b905060200201356040518263ffffffff1660e01b81526004016115dc91815260200190565b602060405180830381865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190612a42565b6001600160a01b031603611779576001546001600160a01b03166323b872dd33308787868181106116505761165061287e565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156116a757600080fd5b505af11580156116bb573d6000803e3d6000fd5b5050505042600360008686858181106116d6576116d661287e565b9050602002013581526020019081526020016000206000018190555081600360008686858181106117095761170961287e565b90506020020135815260200190815260200160002060020181905550336003600086868581811061173c5761173c61287e565b90506020020135815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611783816128d6565b91505061158a565b60008060015b6103e8811015610fbe576000818152600360205260409020600101546001600160a01b038086169116036117cd57816117c9816128d6565b9250505b806117d7816128d6565b915050611791565b60405163878c6dad60e01b81526001600160a01b0382166004820152606090600090309063878c6dad90602401602060405180830381865afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d91906128bd565b6001600160401b0381111561186457611864612315565b60405190808252806020026020018201604052801561188d578160200160208202803683370190505b509050600060015b6103e8811015611273576000818152600360205260409020600101546001600160a01b038087169116036118ef57808383815181106118d6576118d661287e565b6020908102919091010152816118eb816128d6565b9250505b806118f9816128d6565b915050611895565b6119096121bc565b60009182526004602052604090912055565b6119236121bc565b60065460ff166119455760405162461bcd60e51b81526004016104e2906128ef565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260036020526040812054819061198290426129f6565b60008481526003602090815260408083206002015483526005909152812054919250908211156119e557600084815260036020908152604080832060020154835260048252808320546005909252909120546119de9190612a09565b9050611a11565b60008481526003602090815260408083206002015483526004909152902054611a0e9083612a09565b90505b6000848152600360205260408120600401549003611a4f5760008481526003602081905260409091200154611a479082906128aa565b949350505050565b6000848152600360205260409020600401546103e890611a6f9083612a09565b611a799190612a20565b60008581526003602081905260409091200154611a979083906128aa565b611a4791906128aa565b611aa96121bc565b6006805460ff19169055565b611abd6121bc565b60065460ff16611adf5760405162461bcd60e51b81526004016104e2906128ef565b60005b825181101561082557818181518110611afd57611afd61287e565b602002602001015160036000858481518110611b1b57611b1b61287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508080611b63906128d6565b915050611ae2565b333b158015611b7957503332145b611b955760405162461bcd60e51b81526004016104e29061284f565b60005b81811015610825573360036000858585818110611bb757611bb761287e565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015611c635750426005600060036000878787818110611c0057611c0061287e565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460036000868686818110611c3e57611c3e61287e565b90506020020135815260200190815260200160002060000154611c6191906128aa565b105b15611e72576001546001600160a01b03166323b872dd3033868686818110611c8d57611c8d61287e565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015611ce457600080fd5b505af1158015611cf8573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110611d1d57611d1d61287e565b905060200201356040518263ffffffff1660e01b8152600401611d4291815260200190565b602060405180830381865afa158015611d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8391906128bd565b60036000858585818110611d9957611d9961287e565b90506020020135815260200190815260200160002060030181905550600060036000858585818110611dcd57611dcd61287e565b90506020020135815260200190815260200160002060000181905550600060036000858585818110611e0157611e0161287e565b90506020020135815260200190815260200160002060020181905550600060036000858585818110611e3557611e3561287e565b90506020020135815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611e7c816128d6565b915050611b98565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a0823190602401602060405180830381865afa158015611ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef791906128bd565b6001600160401b03811115611f0e57611f0e612315565b604051908082528060200260200182016040528015611f37578160200160208202803683370190505b509050600060015b6103e8811015611273576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa925050508015611fae575060408051601f3d908101601f19168201909252611fab91810190612a42565b60015b1561205d57506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e90602401602060405180830381865afa158015611fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120239190612a42565b6001600160a01b03160361205d57808383815181106120445761204461287e565b602090810291909101015281612059816128d6565b9250505b80612067816128d6565b915050611f3f565b6120776121bc565b6001600160a01b0381166120dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e2565b6120e581612216565b50565b6120f06121bc565b80518251146121365760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016104e2565b60005b8251811015610825578181815181106121545761215461287e565b6020026020010151600360008584815181106121725761217261287e565b6020026020010151815260200190815260200160002060040181905550808061219a906128d6565b915050612139565b6121aa6121bc565b60009182526005602052604090912055565b6000546001600160a01b031633146114b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261227857600080fd5b5081356001600160401b0381111561228f57600080fd5b6020830191508360208260051b85010111156122aa57600080fd5b9250929050565b6000806000604084860312156122c657600080fd5b83356001600160401b038111156122dc57600080fd5b6122e886828701612266565b909790965060209590950135949350505050565b60006020828403121561230e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561234d5761234d612315565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237b5761237b612315565b604052919050565b60006001600160401b0382111561239c5761239c612315565b5060051b60200190565b600082601f8301126123b757600080fd5b813560206123cc6123c783612383565b612353565b82815260059290921b840181019181810190868411156123eb57600080fd5b8286015b8481101561240657803583529183019183016123ef565b509695505050505050565b6001600160a01b03811681146120e557600080fd5b6000806040838503121561243957600080fd5b82356001600160401b0381111561244f57600080fd5b61245b858286016123a6565b925050602083013561246c81612411565b809150509250929050565b600080604080848603121561248b57600080fd5b83356001600160401b03808211156124a257600080fd5b818601915086601f8301126124b657600080fd5b813560206124c66123c783612383565b82815260a0928302850182019282820191908b8511156124e557600080fd5b958301955b8487101561254a5780878d0312156125025760008081fd5b61250a61232b565b873581528488013561251b81612411565b8186015287890135898201526060808901359082015260808089013590820152835295860195918301916124ea565b509750508701359350508083111561256157600080fd5b505061256f858286016123a6565b9150509250929050565b6000806040838503121561258c57600080fd5b50508035926020909101359150565b6000602082840312156125ad57600080fd5b81356001600160401b038111156125c357600080fd5b611a47848285016123a6565b6000602082840312156125e157600080fd5b81356125ec81612411565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561262b5783518352928401929184019160010161260f565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156126a157815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612654565b5091979650505050505050565b600080604083850312156126c157600080fd5b82356001600160401b038111156126d757600080fd5b6126e3858286016123a6565b95602094909401359450505050565b6000806040838503121561270557600080fd5b82356001600160401b038082111561271c57600080fd5b612728868387016123a6565b935060209150818501358181111561273f57600080fd5b85019050601f8101861361275257600080fd5b80356127606123c782612383565b81815260059190911b8201830190838101908883111561277f57600080fd5b928401925b828410156127a657833561279781612411565b82529284019290840190612784565b80955050505050509250929050565b600080602083850312156127c857600080fd5b82356001600160401b038111156127de57600080fd5b6127ea85828601612266565b90969095509350505050565b6000806040838503121561280957600080fd5b82356001600160401b038082111561282057600080fd5b61282c868387016123a6565b9350602085013591508082111561284257600080fd5b5061256f858286016123a6565b60208082526015908201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561149c5761149c612894565b6000602082840312156128cf57600080fd5b5051919050565b6000600182016128e8576128e8612894565b5060010190565b60208082526013908201527211511255125391d7d393d517d0531313d5d151606a1b604082015260600190565b6000602080838503121561292f57600080fd5b82516001600160401b0381111561294557600080fd5b8301601f8101851361295657600080fd5b80516129646123c782612383565b81815260a0918202830184019184820191908884111561298357600080fd5b938501935b838510156129ea5780858a0312156129a05760008081fd5b6129a861232b565b85518152868601516129b981612411565b8188015260408681015190820152606080870151908201526080808701519082015283529384019391850191612988565b50979650505050505050565b8181038181111561149c5761149c612894565b808202811582820484141761149c5761149c612894565b600082612a3d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a5457600080fd5b81516125ec8161241156fea264697066735822122078d8020533247b1f4d7190c01170cf98b7c119f8559be2e457e937d8cf4287eb64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063ce98c289116100a2578063ea66aeb311610071578063ea66aeb31461046c578063f2fde38b1461047f578063f703b5eb14610492578063fdd629fc146104a557600080fd5b8063ce98c2891461042b578063d42ccb501461043e578063df9e3baf14610446578063e449f3411461045957600080fd5b8063a915d5c0116100de578063a915d5c01461037a578063aebfc55b1461038d578063c0788555146103a0578063c688df851461041857600080fd5b80638da5cb5b1461032f578063928989f914610354578063a444319a1461036757600080fd5b806364728f6d1161017c578063715018a61161014b578063715018a6146102ee57806377325ebe146102f6578063857b767b14610309578063878c6dad1461031c57600080fd5b806364728f6d146102885780636cb71b0d1461029b5780636ec00232146102bb57806370a08231146102db57600080fd5b806336908fac116101b857806336908fac1461023a5780633e5ac28f1461024d5780633fe3941e14610255578063442dbdc31461027557600080fd5b806316a461a0146101df5780631e6c7bfd146101f4578063297bd9c514610227575b600080fd5b6101f26101ed3660046122b1565b6104b8565b005b6102146102023660046122fc565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b6101f2610235366004612426565b6106ed565b6101f2610248366004612477565b61082a565b6101f2610a28565b6102146102633660046122fc565b60056020526000908152604090205481565b6101f2610283366004612579565b610a4d565b61021461029636600461259b565b610d0b565b6102ae6102a93660046125cf565b610fc5565b60405161021e91906125f3565b6102ce6102c936600461259b565b61127c565b60405161021e9190612637565b6102146102e93660046125cf565b6113b9565b6101f26114a2565b6101f26103043660046126ae565b6114b6565b6101f26103173660046122b1565b611511565b61021461032a3660046125cf565b61178b565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161021e565b60025461033c906001600160a01b031681565b6102ae6103753660046125cf565b6117df565b6101f2610388366004612579565b611901565b6101f261039b3660046125cf565b61191b565b6103e86103ae3660046122fc565b60036020819052600091825260409091208054600182015460028301549383015460049093015491936001600160a01b0390911692909185565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a00161021e565b60015461033c906001600160a01b031681565b6102146104393660046122fc565b611967565b6101f2611aa1565b6101f26104543660046126f2565b611ab5565b6101f26104673660046127b5565b611b6b565b6102ae61047a3660046125cf565b611e84565b6101f261048d3660046125cf565b61206f565b6101f26104a03660046127f6565b6120e8565b6101f26104b3366004612579565b6121a2565b333b1580156104c657503332145b6104eb5760405162461bcd60e51b81526004016104e29061284f565b60405180910390fd5b60005b828110156106e757336003600086868581811061050d5761050d61287e565b60209081029290920135835250810191909152604001600020600101546001600160a01b03161480156105b957504260056000600360008888878181106105565761055661287e565b90506020020135815260200190815260200160002060020154815260200190815260200160002054600360008787868181106105945761059461287e565b905060200201358152602001908152602001600020600001546105b791906128aa565b105b156106d5573063ce98c2898585848181106105d6576105d661287e565b905060200201356040518263ffffffff1660e01b81526004016105fb91815260200190565b602060405180830381865afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c91906128bd565b600360008686858181106106525761065261287e565b9050602002013581526020019081526020016000206003018190555042600360008686858181106106855761068561287e565b9050602002013581526020019081526020016000206000018190555081600360008686858181106106b8576106b861287e565b905060200201358152602001908152602001600020600201819055505b806106df816128d6565b9150506104ee565b50505050565b333b1580156106fb57503332145b6107175760405162461bcd60e51b81526004016104e29061284f565b600654610100900460ff166107665760405162461bcd60e51b81526020600482015260156024820152741514905394d1915494d7d393d517d0531313d5d151605a1b60448201526064016104e2565b60005b825181101561082557336001600160a01b0316600360008584815181106107925761079261287e565b6020908102919091018101518252810191909152604001600020600101546001600160a01b0316036108135781600360008584815181106107d5576107d561287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061081d816128d6565b915050610769565b505050565b6108326121bc565b60065460ff166108545760405162461bcd60e51b81526004016104e2906128ef565b60005b8151811015610825578281815181106108725761087261287e565b602002602001015160000151600360008484815181106108945761089461287e565b60200260200101518152602001908152602001600020600001819055508281815181106108c3576108c361287e565b602002602001015160200151600360008484815181106108e5576108e561287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106109345761093461287e565b602002602001015160400151600360008484815181106109565761095661287e565b60200260200101518152602001908152602001600020600201819055508281815181106109855761098561287e565b602002602001015160600151600360008484815181106109a7576109a761287e565b60200260200101518152602001908152602001600020600301819055508281815181106109d6576109d661287e565b602002602001015160800151600360008484815181106109f8576109f861287e565b60200260200101518152602001908152602001600020600401819055508080610a20906128d6565b915050610857565b610a306121bc565b6006805461ff001981166101009182900460ff1615909102179055565b610a556121bc565b60065460ff16610a775760405162461bcd60e51b81526004016104e2906128ef565b6000816001600160401b03811115610a9157610a91612315565b604051908082528060200260200182016040528015610aba578160200160208202803683370190505b50905060005b82811015610b0157610ad281856128aa565b828281518110610ae457610ae461287e565b602090810291909101015280610af9816128d6565b915050610ac0565b50600254604051633760011960e11b81526000916001600160a01b031690636ec0023290610b339085906004016125f3565b600060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b78919081019061291c565b905060005b8151811015610d0457818181518110610b9857610b9861287e565b602002602001015160000151600360008388610bb491906128aa565b81526020810191909152604001600020558151829082908110610bd957610bd961287e565b602002602001015160200151600360008388610bf591906128aa565b815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110610c3c57610c3c61287e565b602002602001015160400151600360008388610c5891906128aa565b815260200190815260200160002060020181905550818181518110610c7f57610c7f61287e565b602002602001015160600151600360008388610c9b91906128aa565b815260200190815260200160002060030181905550818181518110610cc257610cc261287e565b602002602001015160800151600360008388610cde91906128aa565b815260208101919091526040016000206004015580610cfc816128d6565b915050610b7d565b5050505050565b600080805b8351811015610fbe57600060036000868481518110610d3157610d3161287e565b602002602001015181526020019081526020016000206000015442610d5691906129f6565b905060006005600060036000898781518110610d7457610d7461287e565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054821115610e3b576004600060036000898781518110610dbe57610dbe61287e565b602002602001015181526020019081526020016000206002015481526020019081526020016000205460056000600360008a8881518110610e0157610e0161287e565b6020026020010151815260200190815260200160002060020154815260200190815260200160002054610e349190612a09565b9050610e8c565b6004600060036000898781518110610e5557610e5561287e565b602002602001015181526020019081526020016000206002015481526020019081526020016000205482610e899190612a09565b90505b60036000878581518110610ea257610ea261287e565b6020026020010151815260200190815260200160002060040154600003610f0f578060036000888681518110610eda57610eda61287e565b6020026020010151815260200190815260200160002060030154610efe91906128aa565b610f0890856128aa565b9350610fa9565b6103e860036000888681518110610f2857610f2861287e565b602002602001015181526020019081526020016000206004015482610f4d9190612a09565b610f579190612a20565b8160036000898781518110610f6e57610f6e61287e565b6020026020010151815260200190815260200160002060030154610f9291906128aa565b610f9c91906128aa565b610fa690856128aa565b93505b50508080610fb6906128d6565b915050610d10565b5092915050565b60405163878c6dad60e01b81526001600160a01b0382166004820152606090600090309063878c6dad90602401602060405180830381865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103391906128bd565b6001546040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a191906128bd565b6110ab91906128aa565b6001600160401b038111156110c2576110c2612315565b6040519080825280602002602001820160405280156110eb578160200160208202803683370190505b509050600060015b6103e8811015611273576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa925050508015611162575060408051601f3d908101601f1916820190925261115f91810190612a42565b60015b1561121157506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e90602401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190612a42565b6001600160a01b03160361121157808383815181106111f8576111f861287e565b60209081029190910101528161120d816128d6565b9250505b6000818152600360205260409020600101546001600160a01b0380871691160361126157808383815181106112485761124861287e565b60209081029190910101528161125d816128d6565b9250505b8061126b816128d6565b9150506110f3565b50909392505050565b6060600082516001600160401b0381111561129957611299612315565b60405190808252806020026020018201604052801561130557816020015b6112f26040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b8152602001906001900390816112b75790505b50905060005b8351811015610fbe576003600085838151811061132a5761132a61287e565b6020908102919091018101518252818101929092526040908101600020815160a0810183528154815260018201546001600160a01b03169381019390935260028101549183019190915260038101546060830152600401546080820152825183908390811061139b5761139b61287e565b602002602001018190525080806113b1906128d6565b91505061130b565b60405163878c6dad60e01b81526001600160a01b0382166004820152600090309063878c6dad90602401602060405180830381865afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142491906128bd565b6001546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149291906128bd565b61149c91906128aa565b92915050565b6114aa6121bc565b6114b46000612216565b565b6114be6121bc565b60005b82518110156108255781600360008584815181106114e1576114e161287e565b60200260200101518152602001908152602001600020600401819055508080611509906128d6565b9150506114c1565b333b15801561151f57503332145b61153b5760405162461bcd60e51b81526004016104e29061284f565b6000818152600460205260409020546115875760405162461bcd60e51b815260206004820152600e60248201526d1512515497d393d517d59053125160921b60448201526064016104e2565b60005b828110156106e75760015433906001600160a01b0316636352211e8686858181106115b7576115b761287e565b905060200201356040518263ffffffff1660e01b81526004016115dc91815260200190565b602060405180830381865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190612a42565b6001600160a01b031603611779576001546001600160a01b03166323b872dd33308787868181106116505761165061287e565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156116a757600080fd5b505af11580156116bb573d6000803e3d6000fd5b5050505042600360008686858181106116d6576116d661287e565b9050602002013581526020019081526020016000206000018190555081600360008686858181106117095761170961287e565b90506020020135815260200190815260200160002060020181905550336003600086868581811061173c5761173c61287e565b90506020020135815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611783816128d6565b91505061158a565b60008060015b6103e8811015610fbe576000818152600360205260409020600101546001600160a01b038086169116036117cd57816117c9816128d6565b9250505b806117d7816128d6565b915050611791565b60405163878c6dad60e01b81526001600160a01b0382166004820152606090600090309063878c6dad90602401602060405180830381865afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d91906128bd565b6001600160401b0381111561186457611864612315565b60405190808252806020026020018201604052801561188d578160200160208202803683370190505b509050600060015b6103e8811015611273576000818152600360205260409020600101546001600160a01b038087169116036118ef57808383815181106118d6576118d661287e565b6020908102919091010152816118eb816128d6565b9250505b806118f9816128d6565b915050611895565b6119096121bc565b60009182526004602052604090912055565b6119236121bc565b60065460ff166119455760405162461bcd60e51b81526004016104e2906128ef565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260036020526040812054819061198290426129f6565b60008481526003602090815260408083206002015483526005909152812054919250908211156119e557600084815260036020908152604080832060020154835260048252808320546005909252909120546119de9190612a09565b9050611a11565b60008481526003602090815260408083206002015483526004909152902054611a0e9083612a09565b90505b6000848152600360205260408120600401549003611a4f5760008481526003602081905260409091200154611a479082906128aa565b949350505050565b6000848152600360205260409020600401546103e890611a6f9083612a09565b611a799190612a20565b60008581526003602081905260409091200154611a979083906128aa565b611a4791906128aa565b611aa96121bc565b6006805460ff19169055565b611abd6121bc565b60065460ff16611adf5760405162461bcd60e51b81526004016104e2906128ef565b60005b825181101561082557818181518110611afd57611afd61287e565b602002602001015160036000858481518110611b1b57611b1b61287e565b6020026020010151815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508080611b63906128d6565b915050611ae2565b333b158015611b7957503332145b611b955760405162461bcd60e51b81526004016104e29061284f565b60005b81811015610825573360036000858585818110611bb757611bb761287e565b60209081029290920135835250810191909152604001600020600101546001600160a01b0316148015611c635750426005600060036000878787818110611c0057611c0061287e565b9050602002013581526020019081526020016000206002015481526020019081526020016000205460036000868686818110611c3e57611c3e61287e565b90506020020135815260200190815260200160002060000154611c6191906128aa565b105b15611e72576001546001600160a01b03166323b872dd3033868686818110611c8d57611c8d61287e565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015611ce457600080fd5b505af1158015611cf8573d6000803e3d6000fd5b50505050306001600160a01b031663ce98c289848484818110611d1d57611d1d61287e565b905060200201356040518263ffffffff1660e01b8152600401611d4291815260200190565b602060405180830381865afa158015611d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8391906128bd565b60036000858585818110611d9957611d9961287e565b90506020020135815260200190815260200160002060030181905550600060036000858585818110611dcd57611dcd61287e565b90506020020135815260200190815260200160002060000181905550600060036000858585818110611e0157611e0161287e565b90506020020135815260200190815260200160002060020181905550600060036000858585818110611e3557611e3561287e565b90506020020135815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611e7c816128d6565b915050611b98565b6001546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a0823190602401602060405180830381865afa158015611ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef791906128bd565b6001600160401b03811115611f0e57611f0e612315565b604051908082528060200260200182016040528015611f37578160200160208202803683370190505b509050600060015b6103e8811015611273576001546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa925050508015611fae575060408051601f3d908101601f19168201909252611fab91810190612a42565b60015b1561205d57506001546040516331a9108f60e11b8152600481018390526001600160a01b03878116921690636352211e90602401602060405180830381865afa158015611fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120239190612a42565b6001600160a01b03160361205d57808383815181106120445761204461287e565b602090810291909101015281612059816128d6565b9250505b80612067816128d6565b915050611f3f565b6120776121bc565b6001600160a01b0381166120dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e2565b6120e581612216565b50565b6120f06121bc565b80518251146121365760405162461bcd60e51b815260206004820152601260248201527113115391d51217d393d517d3505510d2115160721b60448201526064016104e2565b60005b8251811015610825578181815181106121545761215461287e565b6020026020010151600360008584815181106121725761217261287e565b6020026020010151815260200190815260200160002060040181905550808061219a906128d6565b915050612139565b6121aa6121bc565b60009182526005602052604090912055565b6000546001600160a01b031633146114b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261227857600080fd5b5081356001600160401b0381111561228f57600080fd5b6020830191508360208260051b85010111156122aa57600080fd5b9250929050565b6000806000604084860312156122c657600080fd5b83356001600160401b038111156122dc57600080fd5b6122e886828701612266565b909790965060209590950135949350505050565b60006020828403121561230e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561234d5761234d612315565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237b5761237b612315565b604052919050565b60006001600160401b0382111561239c5761239c612315565b5060051b60200190565b600082601f8301126123b757600080fd5b813560206123cc6123c783612383565b612353565b82815260059290921b840181019181810190868411156123eb57600080fd5b8286015b8481101561240657803583529183019183016123ef565b509695505050505050565b6001600160a01b03811681146120e557600080fd5b6000806040838503121561243957600080fd5b82356001600160401b0381111561244f57600080fd5b61245b858286016123a6565b925050602083013561246c81612411565b809150509250929050565b600080604080848603121561248b57600080fd5b83356001600160401b03808211156124a257600080fd5b818601915086601f8301126124b657600080fd5b813560206124c66123c783612383565b82815260a0928302850182019282820191908b8511156124e557600080fd5b958301955b8487101561254a5780878d0312156125025760008081fd5b61250a61232b565b873581528488013561251b81612411565b8186015287890135898201526060808901359082015260808089013590820152835295860195918301916124ea565b509750508701359350508083111561256157600080fd5b505061256f858286016123a6565b9150509250929050565b6000806040838503121561258c57600080fd5b50508035926020909101359150565b6000602082840312156125ad57600080fd5b81356001600160401b038111156125c357600080fd5b611a47848285016123a6565b6000602082840312156125e157600080fd5b81356125ec81612411565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561262b5783518352928401929184019160010161260f565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156126a157815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612654565b5091979650505050505050565b600080604083850312156126c157600080fd5b82356001600160401b038111156126d757600080fd5b6126e3858286016123a6565b95602094909401359450505050565b6000806040838503121561270557600080fd5b82356001600160401b038082111561271c57600080fd5b612728868387016123a6565b935060209150818501358181111561273f57600080fd5b85019050601f8101861361275257600080fd5b80356127606123c782612383565b81815260059190911b8201830190838101908883111561277f57600080fd5b928401925b828410156127a657833561279781612411565b82529284019290840190612784565b80955050505050509250929050565b600080602083850312156127c857600080fd5b82356001600160401b038111156127de57600080fd5b6127ea85828601612266565b90969095509350505050565b6000806040838503121561280957600080fd5b82356001600160401b038082111561282057600080fd5b61282c868387016123a6565b9350602085013591508082111561284257600080fd5b5061256f858286016123a6565b60208082526015908201527410dbdb9d1c9858dd1cc81b9bdd08185b1b1bddd959605a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561149c5761149c612894565b6000602082840312156128cf57600080fd5b5051919050565b6000600182016128e8576128e8612894565b5060010190565b60208082526013908201527211511255125391d7d393d517d0531313d5d151606a1b604082015260600190565b6000602080838503121561292f57600080fd5b82516001600160401b0381111561294557600080fd5b8301601f8101851361295657600080fd5b80516129646123c782612383565b81815260a0918202830184019184820191908884111561298357600080fd5b938501935b838510156129ea5780858a0312156129a05760008081fd5b6129a861232b565b85518152868601516129b981612411565b8188015260408681015190820152606080870151908201526080808701519082015283529384019391850191612988565b50979650505050505050565b8181038181111561149c5761149c612894565b808202811582820484141761149c5761149c612894565b600082612a3d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a5457600080fd5b81516125ec8161241156fea264697066735822122078d8020533247b1f4d7190c01170cf98b7c119f8559be2e457e937d8cf4287eb64736f6c63430008120033
Deployed Bytecode Sourcemap
11620:12491:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17760:753;;;;;;:::i;:::-;;:::i;:::-;;12069:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1227:25:1;;;1215:2;1200:18;12069:44:0;;;;;;;;12921:397;;;;;;:::i;:::-;;:::i;13902:705::-;;;;;;:::i;:::-;;:::i;13326:97::-;;;:::i;12120:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;14829:925;;;;;;:::i;:::-;;:::i;19143:1313::-;;;;;;:::i;:::-;;:::i;22202:803::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21530:346::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21374:148::-;;;;;;:::i;:::-;;:::i;10189:103::-;;;:::i;18521:258::-;;;;;;:::i;:::-;;:::i;16082:725::-;;;;;;:::i;:::-;;:::i;21884:310::-;;;;;;:::i;:::-;;:::i;9548:87::-;9594:7;9621:6;-1:-1:-1;;;;;9621:6:0;9548:87;;;-1:-1:-1;;;;;8326:32:1;;;8308:51;;8296:2;8281:18;9548:87:0;8162:203:1;11780:66:0;;;;;-1:-1:-1;;;;;11780:66:0;;;23610:498;;;;;;:::i;:::-;;:::i;15762:147::-;;;;;;:::i;:::-;;:::i;14644:148::-;;;;;;:::i;:::-;;:::i;12017:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12017:45:0;;;;;;;;;;;;8848:25:1;;;-1:-1:-1;;;;;8909:32:1;;;8904:2;8889:18;;8882:60;8958:18;;;8951:34;;;;9016:2;9001:18;;8994:34;9059:3;9044:19;;9037:35;8835:3;8820:19;12017:45:0;8589:489:1;11701:72:0;;;;;-1:-1:-1;;;;;11701:72:0;;;20464:902;;;;;;:::i;:::-;;:::i;13431:84::-;;;:::i;13552:313::-;;;;;;:::i;:::-;;:::i;16815:937::-;;;;;;:::i;:::-;;:::i;23013:589::-;;;;;;:::i;:::-;;:::i;10447:201::-;;;;;;:::i;:::-;;:::i;18787:348::-;;;;;;:::i;:::-;;:::i;15917:157::-;;;;;;:::i;:::-;;:::i;17760:753::-;12575:10;12823:17;12868:8;;;12561:55;;-1:-1:-1;12592:10:0;12606:9;12592:23;12561:55;12539:126;;;;-1:-1:-1;;;12539:126:0;;;;;;;:::i;:::-;;;;;;;;;17884:13:::1;17879:627;17903:23:::0;;::::1;17879:627;;;18021:10;17974:12;:29;17987:8:::0;;17996:5;17987:15;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;17974:29:::0;;-1:-1:-1;17974:29:0;::::1;::::0;;;;;;-1:-1:-1;17974:29:0;:43:::1;;::::0;-1:-1:-1;;;;;17974:43:0::1;:57;:225:::0;::::1;;;;18184:15;18116:9;:47;18126:12;:29;18139:8;;18148:5;18139:15;;;;;;;:::i;:::-;;;;;;;18126:29;;;;;;;;;;;:36;;;18116:47;;;;;;;;;;;;18053:12;:29;18066:8;;18075:5;18066:15;;;;;;;:::i;:::-;;;;;;;18053:29;;;;;;;;;;;:39;;;:110;;;;:::i;:::-;18052:147;17974:225;17952:543;;;18276:4;:46;18323:8:::0;;18332:5;18323:15;;::::1;;;;;:::i;:::-;;;;;;;18276:63;;;;;;;;;;;;;1227:25:1::0;;1215:2;1200:18;;1081:177;18276:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18234:12;:29;18247:8;;18256:5;18247:15;;;;;;;:::i;:::-;;;;;;;18234:29;;;;;;;;;;;:39;;:105;;;;18400:15;18358:12;:29;18371:8;;18380:5;18371:15;;;;;;;:::i;:::-;;;;;;;18358:29;;;;;;;;;;;:39;;:57;;;;18473:6;18434:12;:29;18447:8;;18456:5;18447:15;;;;;;;:::i;:::-;;;;;;;18434:29;;;;;;;;;;;:36;;:45;;;;17952:543;17928:7:::0;::::1;::::0;::::1;:::i;:::-;;;;17879:627;;;;17760:753:::0;;;:::o;12921:397::-;12575:10;12823:17;12868:8;;;12561:55;;-1:-1:-1;12592:10:0;12606:9;12592:23;12561:55;12539:126;;;;-1:-1:-1;;;12539:126:0;;;;;;;:::i;:::-;12436:14:::1;::::0;::::1;::::0;::::1;;;12427:50;;;::::0;-1:-1:-1;;;12427:50:0;;12837:2:1;12427:50:0::1;::::0;::::1;12819:21:1::0;12876:2;12856:18;;;12849:30;-1:-1:-1;;;12895:18:1;;;12888:51;12956:18;;12427:50:0::1;12635:345:1::0;12427:50:0::1;13080:13:::2;13075:236;13107:8;:15;13099:5;:23;13075:236;;;13199:10;-1:-1:-1::0;;;;;13152:57:0::2;:12;:29;13165:8;13174:5;13165:15;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;13152:29;;;::::2;::::0;;;;;;-1:-1:-1;13152:29:0;:43:::2;;::::0;-1:-1:-1;;;;;13152:43:0::2;:57:::0;13148:152:::2;;13276:8;13230:12;:29;13243:8;13252:5;13243:15;;;;;;;;:::i;:::-;;;;;;;13230:29;;;;;;;;;;;:43;;;:54;;;;;-1:-1:-1::0;;;;;13230:54:0::2;;;;;-1:-1:-1::0;;;;;13230:54:0::2;;;;;;13148:152;13124:7:::0;::::2;::::0;::::2;:::i;:::-;;;;13075:236;;;;12921:397:::0;;:::o;13902:705::-;9434:13;:11;:13::i;:::-;12323:12:::1;::::0;::::1;;12314:46;;;;-1:-1:-1::0;;;12314:46:0::1;;;;;;;:::i;:::-;14062:13:::2;14057:543;14089:8;:15;14081:5;:23;14057:543;;;14172:11;14184:5;14172:18;;;;;;;;:::i;:::-;;;;;;;:46;;;14130:12;:29;14143:8;14152:5;14143:15;;;;;;;;:::i;:::-;;;;;;;14130:29;;;;;;;;;;;:39;;:88;;;;14279:11;14291:5;14279:18;;;;;;;;:::i;:::-;;;;;;;:50;;;14233:12;:29;14246:8;14255:5;14246:15;;;;;;;;:::i;:::-;;;;;;;14233:29;;;;;;;;;;;:43;;;:96;;;;;-1:-1:-1::0;;;;;14233:96:0::2;;;;;-1:-1:-1::0;;;;;14233:96:0::2;;;;;;14383:11;14395:5;14383:18;;;;;;;;:::i;:::-;;;;;;;:25;;;14344:12;:29;14357:8;14366:5;14357:15;;;;;;;;:::i;:::-;;;;;;;14344:29;;;;;;;;;;;:36;;:64;;;;14465:11;14477:5;14465:18;;;;;;;;:::i;:::-;;;;;;;:46;;;14423:12;:29;14436:8;14445:5;14436:15;;;;;;;;:::i;:::-;;;;;;;14423:29;;;;;;;;;;;:39;;:88;;;;14564:11;14576:5;14564:18;;;;;;;;:::i;:::-;;;;;;;:24;;;14526:12;:29;14539:8;14548:5;14539:15;;;;;;;;:::i;:::-;;;;;;;14526:29;;;;;;;;;;;:35;;:62;;;;14106:7;;;;;:::i;:::-;;;;14057:543;;13326:97:::0;9434:13;:11;:13::i;:::-;13401:14:::1;::::0;;-1:-1:-1;;13383:32:0;::::1;13401:14;::::0;;;::::1;;;13400:15;13383:32:::0;;::::1;;::::0;;13326:97::o;14829:925::-;9434:13;:11;:13::i;:::-;12323:12:::1;::::0;::::1;;12314:46;;;;-1:-1:-1::0;;;12314:46:0::1;;;;;;;:::i;:::-;14945:26:::2;14988:5;-1:-1:-1::0;;;;;14974:20:0::2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;14974:20:0::2;;14945:49;;15010:13;15005:108;15037:5;15029;:13;15005:108;;;15087:14;15096:5:::0;15087:6;:14:::2;:::i;:::-;15068:9;15078:5;15068:16;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:33;15044:7;::::2;::::0;::::2;:::i;:::-;;;;15005:108;;;-1:-1:-1::0;15157:5:0::2;::::0;:30:::2;::::0;-1:-1:-1;;;15157:30:0;;15123:31:::2;::::0;-1:-1:-1;;;;;15157:5:0::2;::::0;:19:::2;::::0;:30:::2;::::0;15177:9;;15157:30:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;15157:30:0::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;15123:64;;15205:13;15200:547;15232:12;:19;15224:5;:27;15200:547;;;15318:12;15331:5;15318:19;;;;;;;;:::i;:::-;;;;;;;:47;;;15277:12;:28;15299:5;15290:6;:14;;;;:::i;:::-;15277:28:::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;15277:28:0;:88;15425:19;;:12;;15438:5;;15425:19;::::2;;;;;:::i;:::-;;;;;;;:51;;;15380:12;:28;15402:5;15393:6;:14;;;;:::i;:::-;15380:28;;;;;;;;;;;:42;;;:96;;;;;-1:-1:-1::0;;;;;15380:96:0::2;;;;;-1:-1:-1::0;;;;;15380:96:0::2;;;;;;15529:12;15542:5;15529:19;;;;;;;;:::i;:::-;;;;;;;:26;;;15491:12;:28;15513:5;15504:6;:14;;;;:::i;:::-;15491:28;;;;;;;;;;;:35;;:64;;;;15611:12;15624:5;15611:19;;;;;;;;:::i;:::-;;;;;;;:47;;;15570:12;:28;15592:5;15583:6;:14;;;;:::i;:::-;15570:28;;;;;;;;;;;:38;;:88;;;;15710:12;15723:5;15710:19;;;;;;;;:::i;:::-;;;;;;;:25;;;15673:12;:28;15695:5;15686:6;:14;;;;:::i;:::-;15673:28:::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;15673:28:0;:34:::2;;:62:::0;15253:7;::::2;::::0;::::2;:::i;:::-;;;;15200:547;;;;14934:820;;14829:925:::0;;:::o;19143:1313::-;19236:7;;;19293:1124;19325:8;:15;19317:5;:23;19293:1124;;;19366:18;19422:12;:29;19435:8;19444:5;19435:15;;;;;;;;:::i;:::-;;;;;;;19422:29;;;;;;;;;;;:39;;;19387:15;:74;;;;:::i;:::-;19366:95;;19476:21;19529:9;:47;19539:12;:29;19552:8;19561:5;19552:15;;;;;;;;:::i;:::-;;;;;;;19539:29;;;;;;;;;;;:36;;;19529:47;;;;;;;;;;;;19516:10;:60;19512:415;;;19705:9;:47;19715:12;:29;19728:8;19737:5;19728:15;;;;;;;;:::i;:::-;;;;;;;19715:29;;;;;;;;;;;:36;;;19705:47;;;;;;;;;;;;19634:9;:47;19644:12;:29;19657:8;19666:5;19657:15;;;;;;;;:::i;:::-;;;;;;;19644:29;;;;;;;;;;;:36;;;19634:47;;;;;;;;;;;;:118;;;;:::i;:::-;19597:155;;19512:415;;;19864:9;:47;19874:12;:29;19887:8;19896:5;19887:15;;;;;;;;:::i;:::-;;;;;;;19874:29;;;;;;;;;;;:36;;;19864:47;;;;;;;;;;;;19830:10;:81;;;;:::i;:::-;19793:118;;19512:415;19947:12;:29;19960:8;19969:5;19960:15;;;;;;;;:::i;:::-;;;;;;;19947:29;;;;;;;;;;;:35;;;19986:1;19947:40;19943:463;;20110:13;20047:12;:29;20060:8;20069:5;20060:15;;;;;;;;:::i;:::-;;;;;;;20047:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;20008:115;;;;:::i;:::-;;;19943:463;;;20385:4;20321:12;:29;20334:8;20343:5;20334:15;;;;;;;;:::i;:::-;;;;;;;20321:29;;;;;;;;;;;:35;;;20305:13;:51;;;;:::i;:::-;20304:85;;;;:::i;:::-;20266:13;20203:12;:29;20216:8;20225:5;20216:15;;;;;;;;:::i;:::-;;;;;;;20203:29;;;;;;;;;;;:39;;;:76;;;;:::i;:::-;:187;;;;:::i;:::-;20164:226;;;;:::i;:::-;;;19943:463;19351:1066;;19342:7;;;;;:::i;:::-;;;;19293:1124;;;-1:-1:-1;20434:14:0;19143:1313;-1:-1:-1;;19143:1313:0:o;22202:803::-;22396:25;;-1:-1:-1;;;22396:25:0;;-1:-1:-1;;;;;8326:32:1;;22396:25:0;;;8308:51:1;22278:16:0;;22307:27;;22396:4;;:18;;8281::1;;22396:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22365:11;;:28;;-1:-1:-1;;;22365:28:0;;-1:-1:-1;;;;;8326:32:1;;;22365:28:0;;;8308:51:1;22365:11:0;;;;:21;;8281:18:1;;22365:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;;:::i;:::-;-1:-1:-1;;;;;22337:95:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22337:95:0;-1:-1:-1;22307:125:0;-1:-1:-1;22443:20:0;22497:1;22474:496;22510:4;22500:7;:14;22474:496;;;22546:11;;:28;;-1:-1:-1;;;22546:28:0;;;;;1227:25:1;;;-1:-1:-1;;;;;22546:11:0;;;;:19;;1200:18:1;;22546:28:0;;;;;;;;;;;;;;;;;;-1:-1:-1;22546:28:0;;;;;;;;-1:-1:-1;;22546:28:0;;;;;;;;;;;;:::i;:::-;;;22542:242;;;-1:-1:-1;22598:11:0;;:28;;-1:-1:-1;;;22598:28:0;;;;;1227:25:1;;;-1:-1:-1;;;;;22598:37:0;;;;:11;;:19;;1200:18:1;;22598:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22598:37:0;;22594:166;;22695:7;22660:10;22671:12;22660:24;;;;;;;;:::i;:::-;;;;;;;;;;:43;22726:14;;;;:::i;:::-;;;;22594:166;22802:21;;;;:12;:21;;;;;:35;;;-1:-1:-1;;;;;22802:44:0;;;:35;;:44;22798:161;;22902:7;22867:10;22878:12;22867:24;;;;;;;;:::i;:::-;;;;;;;;;;:43;22929:14;;;;:::i;:::-;;;;22798:161;22516:9;;;;:::i;:::-;;;;22474:496;;;-1:-1:-1;22987:10:0;;22202:803;-1:-1:-1;;;22202:803:0:o;21530:346::-;21617:14;21644:25;21684:6;:13;-1:-1:-1;;;;;21672:26:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21672:26:0;;;;;;;;;;;;;;;;;21644:54;;21716:13;21711:130;21743:6;:13;21735:5;:21;21711:130;;;21802:12;:27;21815:6;21822:5;21815:13;;;;;;;;:::i;:::-;;;;;;;;;;;;21802:27;;;;;;;;;;;;;-1:-1:-1;21802:27:0;21782:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;21782:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:10;;21793:5;;21782:17;;;;;;:::i;:::-;;;;;;:47;;;;21758:7;;;;;:::i;:::-;;;;21711:130;;21374:148;21489:25;;-1:-1:-1;;;21489:25:0;;-1:-1:-1;;;;;8326:32:1;;21489:25:0;;;8308:51:1;21431:7:0;;21489:4;;:18;;8281::1;;21489:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21458:11;;:28;;-1:-1:-1;;;21458:28:0;;-1:-1:-1;;;;;8326:32:1;;;21458:28:0;;;8308:51:1;21458:11:0;;;;:21;;8281:18:1;;21458:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;;:::i;:::-;21451:63;21374:148;-1:-1:-1;;21374:148:0:o;10189:103::-;9434:13;:11;:13::i;:::-;10254:30:::1;10281:1;10254:18;:30::i;:::-;10189:103::o:0;18521:258::-;9434:13;:11;:13::i;:::-;18649::::1;18644:128;18676:8;:15;18668:5;:23;18644:128;;;18755:5;18717:12;:29;18730:8;18739:5;18730:15;;;;;;;;:::i;:::-;;;;;;;18717:29;;;;;;;;;;;:35;;:43;;;;18693:7;;;;;:::i;:::-;;;;18644:128;;16082:725:::0;12575:10;12823:17;12868:8;;;12561:55;;-1:-1:-1;12592:10:0;12606:9;12592:23;12561:55;12539:126;;;;-1:-1:-1;;;12539:126:0;;;;;;;:::i;:::-;16227:1:::1;16207:17:::0;;;:9:::1;:17;::::0;;;;;16199:48:::1;;;::::0;-1:-1:-1;;;16199:48:0;;15842:2:1;16199:48:0::1;::::0;::::1;15824:21:1::0;15881:2;15861:18;;;15854:30;-1:-1:-1;;;15900:18:1;;;15893:44;15954:18;;16199:48:0::1;15640:338:1::0;16199:48:0::1;16265:13;16260:540;16284:23:::0;;::::1;16260:540;;;16337:11;::::0;16377:10:::1;::::0;-1:-1:-1;;;;;16337:11:0::1;:19;16357:8:::0;;16366:5;16357:15;;::::1;;;;;:::i;:::-;;;;;;;16337:36;;;;;;;;;;;;;1227:25:1::0;;1215:2;1200:18;;1081:177;16337:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16337:50:0::1;::::0;16333:456:::1;;16408:11;::::0;-1:-1:-1;;;;;16408:11:0::1;:24;16455:10;16496:4;16524:8:::0;;16533:5;16524:15;;::::1;;;;;:::i;:::-;16408:150;::::0;-1:-1:-1;;;;;;16408:150:0::1;::::0;;;;;;-1:-1:-1;;;;;16241:15:1;;;16408:150:0::1;::::0;::::1;16223:34:1::0;16293:15;;;;16273:18;;;16266:43;-1:-1:-1;16524:15:0::1;::::0;;::::1;;;16325:18:1::0;;;16318:34;16158:18;;16408:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16619:15;16577:12;:29;16590:8;;16599:5;16590:15;;;;;;;:::i;:::-;;;;;;;16577:29;;;;;;;;;;;:39;;:57;;;;16692:6;16653:12;:29;16666:8;;16675:5;16666:15;;;;;;;:::i;:::-;;;;;;;16653:29;;;;;;;;;;;:36;;:45;;;;16763:10;16717:12;:29;16730:8;;16739:5;16730:15;;;;;;;:::i;:::-;;;;;;;16717:29;;;;;;;;;;;:43;;;:56;;;;;-1:-1:-1::0;;;;;16717:56:0::1;;;;;-1:-1:-1::0;;;;;16717:56:0::1;;;;;;16333:456;16309:7:::0;::::1;::::0;::::1;:::i;:::-;;;;16260:540;;21884:310:::0;21945:7;;22016:1;21993:171;22029:4;22019:7;:14;21993:171;;;22065:21;;;;:12;:21;;;;;:35;;;-1:-1:-1;;;;;22065:44:0;;;:35;;:44;22061:92;;22130:7;;;;:::i;:::-;;;;22061:92;22035:9;;;;:::i;:::-;;;;21993:171;;23610:498;23761:25;;-1:-1:-1;;;23761:25:0;;-1:-1:-1;;;;;8326:32:1;;23761:25:0;;;8308:51:1;23688:16:0;;23717:27;;23761:4;;:18;;8281::1;;23761:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23747:40:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23747:40:0;-1:-1:-1;23717:70:0;-1:-1:-1;23798:20:0;23856:1;23833:240;23869:4;23859:7;:14;23833:240;;;23905:21;;;;:12;:21;;;;;:35;;;-1:-1:-1;;;;;23905:44:0;;;:35;;:44;23901:161;;24005:7;23970:10;23981:12;23970:24;;;;;;;;:::i;:::-;;;;;;;;;;:43;24032:14;;;;:::i;:::-;;;;23901:161;23875:9;;;;:::i;:::-;;;;23833:240;;15762:147;9434:13;:11;:13::i;:::-;15874:17:::1;::::0;;;:9:::1;:17;::::0;;;;;:27;15762:147::o;14644:148::-;9434:13;:11;:13::i;:::-;12323:12:::1;::::0;::::1;;12314:46;;;;-1:-1:-1::0;;;12314:46:0::1;;;;;;;:::i;:::-;14754:11:::2;:30:::0;;-1:-1:-1;;;;;;14754:30:0::2;-1:-1:-1::0;;;;;14754:30:0;;;::::2;::::0;;;::::2;::::0;;14644:148::o;20464:902::-;20549:7;20608:21;;;:12;:21;;;;;:31;20549:7;;20590:49;;:15;:49;:::i;:::-;20650:21;20709;;;:12;:21;;;;;;;;:28;;;20699:39;;:9;:39;;;;;;20569:70;;-1:-1:-1;20650:21:0;20686:52;;20682:351;;;20847:39;20857:21;;;:12;:21;;;;;;;;:28;;;20847:39;;:9;:39;;;;;;20788:9;:39;;;;;;;:98;;20847:39;20788:98;:::i;:::-;20755:131;;20682:351;;;20982:39;20992:21;;;:12;:21;;;;;;;;:28;;;20982:39;;:9;:39;;;;;;20952:69;;:10;:69;:::i;:::-;20919:102;;20682:351;21049:21;;;;:12;:21;;;;;:27;;;:32;;21045:314;;21105:21;;;;:12;:21;;;;;;;;:31;;:47;;21139:13;;21105:47;:::i;:::-;21098:54;20464:902;-1:-1:-1;;;;20464:902:0:o;21045:314::-;21311:21;;;;:12;:21;;;;;:27;;;21342:4;;21295:43;;:13;:43;:::i;:::-;21294:52;;;;:::i;:::-;21209:21;;;;:12;:21;;;;;;;;:31;;:64;;21260:13;;21209:64;:::i;:::-;:138;;;;:::i;13431:84::-;9434:13;:11;:13::i;:::-;13487:12:::1;:20:::0;;-1:-1:-1;;13487:20:0::1;::::0;;13431:84::o;13552:313::-;9434:13;:11;:13::i;:::-;12323:12:::1;::::0;::::1;;12314:46;;;;-1:-1:-1::0;;;12314:46:0::1;;;;;;;:::i;:::-;13715:13:::2;13710:148;13742:8;:15;13734:5;:23;13710:148;;;13829:10;13840:5;13829:17;;;;;;;;:::i;:::-;;;;;;;13783:12;:29;13796:8;13805:5;13796:15;;;;;;;;:::i;:::-;;;;;;;13783:29;;;;;;;;;;;:43;;;:63;;;;;-1:-1:-1::0;;;;;13783:63:0::2;;;;;-1:-1:-1::0;;;;;13783:63:0::2;;;;;;13759:7;;;;;:::i;:::-;;;;13710:148;;16815:937:::0;12575:10;12823:17;12868:8;;;12561:55;;-1:-1:-1;12592:10:0;12606:9;12592:23;12561:55;12539:126;;;;-1:-1:-1;;;12539:126:0;;;;;;;:::i;:::-;16898:13:::1;16893:852;16917:23:::0;;::::1;16893:852;;;17035:10;16988:12;:29;17001:8:::0;;17010:5;17001:15;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;16988:29:::0;;-1:-1:-1;16988:29:0;::::1;::::0;;;;;;-1:-1:-1;16988:29:0;:43:::1;;::::0;-1:-1:-1;;;;;16988:43:0::1;:57;:225:::0;::::1;;;;17198:15;17130:9;:47;17140:12;:29;17153:8;;17162:5;17153:15;;;;;;;:::i;:::-;;;;;;;17140:29;;;;;;;;;;;:36;;;17130:47;;;;;;;;;;;;17067:12;:29;17080:8;;17089:5;17080:15;;;;;;;:::i;:::-;;;;;;;17067:29;;;;;;;;;;;:39;;;:110;;;;:::i;:::-;17066:147;16988:225;16966:768;;;17248:11;::::0;-1:-1:-1;;;;;17248:11:0::1;:24;17303:4;17331:10;17364:8:::0;;17373:5;17364:15;;::::1;;;;;:::i;:::-;17248:150;::::0;-1:-1:-1;;;;;;17248:150:0::1;::::0;;;;;;-1:-1:-1;;;;;16241:15:1;;;17248:150:0::1;::::0;::::1;16223:34:1::0;16293:15;;;;16273:18;;;16266:43;-1:-1:-1;17364:15:0::1;::::0;;::::1;;;16325:18:1::0;;;16318:34;16158:18;;17248:150:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17459:4;-1:-1:-1::0;;;;;17459:46:0::1;;17506:8;;17515:5;17506:15;;;;;;;:::i;:::-;;;;;;;17459:63;;;;;;;;;;;;;1227:25:1::0;;1215:2;1200:18;;1081:177;17459:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17417:12;:29;17430:8;;17439:5;17430:15;;;;;;;:::i;:::-;;;;;;;17417:29;;;;;;;;;;;:39;;:105;;;;17583:1;17541:12;:29;17554:8;;17563:5;17554:15;;;;;;;:::i;:::-;;;;;;;17541:29;;;;;;;;;;;:39;;:43;;;;17642:1;17603:12;:29;17616:8;;17625:5;17616:15;;;;;;;:::i;:::-;;;;;;;17603:29;;;;;;;;;;;:36;;:40;;;;17716:1;17662:12;:29;17675:8;;17684:5;17675:15;;;;;;;:::i;:::-;;;;;;;17662:29;;;;;;;;;;;:43;;;:56;;;;;-1:-1:-1::0;;;;;17662:56:0::1;;;;;-1:-1:-1::0;;;;;17662:56:0::1;;;;;;16966:768;16942:7:::0;::::1;::::0;::::1;:::i;:::-;;;;16893:852;;23013:589:::0;23177:11;;:28;;-1:-1:-1;;;23177:28:0;;-1:-1:-1;;;;;8326:32:1;;;23177:28:0;;;8308:51:1;23090:16:0;;23119:27;;23177:11;;;:21;;8281:18:1;;23177:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23149:67:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23149:67:0;-1:-1:-1;23119:97:0;-1:-1:-1;23227:20:0;23279:1;23258:309;23290:4;23282:5;:12;23258:309;;;23324:11;;:26;;-1:-1:-1;;;23324:26:0;;;;;1227:25:1;;;-1:-1:-1;;;;;23324:11:0;;;;:19;;1200:18:1;;23324:26:0;;;;;;;;;;;;;;;;;;-1:-1:-1;23324:26:0;;;;;;;;-1:-1:-1;;23324:26:0;;;;;;;;;;;;:::i;:::-;;;23320:236;;;-1:-1:-1;23374:11:0;;:26;;-1:-1:-1;;;23374:26:0;;;;;1227:25:1;;;-1:-1:-1;;;;;23374:35:0;;;;:11;;:19;;1200:18:1;;23374:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23374:35:0;;23370:162;;23469:5;23434:10;23445:12;23434:24;;;;;;;;:::i;:::-;;;;;;;;;;:41;23498:14;;;;:::i;:::-;;;;23370:162;23296:7;;;;:::i;:::-;;;;23258:309;;10447:201;9434:13;:11;:13::i;:::-;-1:-1:-1;;;;;10536:22:0;::::1;10528:73;;;::::0;-1:-1:-1;;;10528:73:0;;16565:2:1;10528:73:0::1;::::0;::::1;16547:21:1::0;16604:2;16584:18;;;16577:30;16643:34;16623:18;;;16616:62;-1:-1:-1;;;16694:18:1;;;16687:36;16740:19;;10528:73:0::1;16363:402:1::0;10528:73:0::1;10612:28;10631:8;10612:18;:28::i;:::-;10447:201:::0;:::o;18787:348::-;9434:13;:11;:13::i;:::-;18943:6:::1;:13;18924:8;:15;:32;18916:63;;;::::0;-1:-1:-1;;;18916:63:0;;16972:2:1;18916:63:0::1;::::0;::::1;16954:21:1::0;17011:2;16991:18;;;16984:30;-1:-1:-1;;;17030:18:1;;;17023:48;17088:18;;18916:63:0::1;16770:342:1::0;18916:63:0::1;18997:13;18992:136;19024:8;:15;19016:5;:23;18992:136;;;19103:6;19110:5;19103:13;;;;;;;;:::i;:::-;;;;;;;19065:12;:29;19078:8;19087:5;19078:15;;;;;;;;:::i;:::-;;;;;;;19065:29;;;;;;;;;;;:35;;:51;;;;19041:7;;;;;:::i;:::-;;;;18992:136;;15917:157:::0;9434:13;:11;:13::i;:::-;16034:17:::1;::::0;;;:9:::1;:17;::::0;;;;;:32;15917:157::o;9713:132::-;9594:7;9621:6;-1:-1:-1;;;;;9621:6:0;8179:10;9777:23;9769:68;;;;-1:-1:-1;;;9769:68:0;;17319:2:1;9769:68:0;;;17301:21:1;;;17338:18;;;17331:30;17397:34;17377:18;;;17370:62;17449:18;;9769:68:0;17117:356:1;10808:191:0;10882:16;10901:6;;-1:-1:-1;;;;;10918:17:0;;;-1:-1:-1;;;;;;10918:17:0;;;;;;10951:40;;10901:6;;;;;;;10951:40;;10882:16;10951:40;10871:128;10808: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;;-1:-1:-1;;;;;214:30:1;;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:505::-;481:6;489;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;606:9;593:23;-1:-1:-1;;;;;631:6:1;628:30;625:50;;;671:1;668;661:12;625:50;710:70;772:7;763:6;752:9;748:22;710:70;:::i;:::-;799:8;;684:96;;-1:-1:-1;881:2:1;866:18;;;;853:32;;386:505;-1:-1:-1;;;;386:505:1:o;896:180::-;955:6;1008:2;996:9;987:7;983:23;979:32;976:52;;;1024:1;1021;1014:12;976:52;-1:-1:-1;1047:23:1;;896:180;-1:-1:-1;896:180:1:o;1263:127::-;1324:10;1319:3;1315:20;1312:1;1305:31;1355:4;1352:1;1345:15;1379:4;1376:1;1369:15;1395:253;1467:2;1461:9;1509:4;1497:17;;-1:-1:-1;;;;;1529:34:1;;1565:22;;;1526:62;1523:88;;;1591:18;;:::i;:::-;1627:2;1620:22;1395:253;:::o;1653:275::-;1724:2;1718:9;1789:2;1770:13;;-1:-1:-1;;1766:27:1;1754:40;;-1:-1:-1;;;;;1809:34:1;;1845:22;;;1806:62;1803:88;;;1871:18;;:::i;:::-;1907:2;1900:22;1653:275;;-1:-1:-1;1653:275:1:o;1933:183::-;1993:4;-1:-1:-1;;;;;2018:6:1;2015:30;2012:56;;;2048:18;;:::i;:::-;-1:-1:-1;2093:1:1;2089:14;2105:4;2085:25;;1933:183::o;2121:662::-;2175:5;2228:3;2221:4;2213:6;2209:17;2205:27;2195:55;;2246:1;2243;2236:12;2195:55;2282:6;2269:20;2308:4;2332:60;2348:43;2388:2;2348:43;:::i;:::-;2332:60;:::i;:::-;2426:15;;;2512:1;2508:10;;;;2496:23;;2492:32;;;2457:12;;;;2536:15;;;2533:35;;;2564:1;2561;2554:12;2533:35;2600:2;2592:6;2588:15;2612:142;2628:6;2623:3;2620:15;2612:142;;;2694:17;;2682:30;;2732:12;;;;2645;;2612:142;;;-1:-1:-1;2772:5:1;2121:662;-1:-1:-1;;;;;;2121:662:1:o;2788:131::-;-1:-1:-1;;;;;2863:31:1;;2853:42;;2843:70;;2909:1;2906;2899:12;2924:483;3017:6;3025;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;3134:9;3121:23;-1:-1:-1;;;;;3159:6:1;3156:30;3153:50;;;3199:1;3196;3189:12;3153:50;3222:61;3275:7;3266:6;3255:9;3251:22;3222:61;:::i;:::-;3212:71;;;3333:2;3322:9;3318:18;3305:32;3346:31;3371:5;3346:31;:::i;:::-;3396:5;3386:15;;;2924:483;;;;;:::o;3412:1801::-;3552:6;3560;3591:2;3634;3622:9;3613:7;3609:23;3605:32;3602:52;;;3650:1;3647;3640:12;3602:52;3690:9;3677:23;-1:-1:-1;;;;;3760:2:1;3752:6;3749:14;3746:34;;;3776:1;3773;3766:12;3746:34;3814:6;3803:9;3799:22;3789:32;;3859:7;3852:4;3848:2;3844:13;3840:27;3830:55;;3881:1;3878;3871:12;3830:55;3917:2;3904:16;3939:4;3963:60;3979:43;4019:2;3979:43;:::i;3963:60::-;4057:15;;;4119:4;4158:11;;;4150:20;;4146:29;;;4088:12;;;;4045:3;4187:19;;;4184:39;;;4219:1;4216;4209:12;4184:39;4243:11;;;;4263:736;4279:6;4274:3;4271:15;4263:736;;;4359:2;4353:3;4344:7;4340:17;4336:26;4333:116;;;4403:1;4432:2;4428;4421:14;4333:116;4475:22;;:::i;:::-;4537:3;4524:17;4517:5;4510:32;4592:2;4587:3;4583:12;4570:26;4609:33;4634:7;4609:33;:::i;:::-;4662:14;;;4655:31;4735:12;;;4722:26;4706:14;;;4699:50;4772:2;4823:12;;;4810:26;4794:14;;;4787:50;4860:3;4912:12;;;4899:26;4883:14;;;4876:50;4939:18;;4296:12;;;;4977;;;;4263:736;;;-1:-1:-1;5018:5:1;-1:-1:-1;;5061:18:1;;5048:32;;-1:-1:-1;;5092:16:1;;;5089:36;;;5121:1;5118;5111:12;5089:36;;;5144:63;5199:7;5188:8;5177:9;5173:24;5144:63;:::i;:::-;5134:73;;;3412:1801;;;;;:::o;5218:248::-;5286:6;5294;5347:2;5335:9;5326:7;5322:23;5318:32;5315:52;;;5363:1;5360;5353:12;5315:52;-1:-1:-1;;5386:23:1;;;5456:2;5441:18;;;5428:32;;-1:-1:-1;5218:248:1:o;5471:348::-;5555:6;5608:2;5596:9;5587:7;5583:23;5579:32;5576:52;;;5624:1;5621;5614:12;5576:52;5664:9;5651:23;-1:-1:-1;;;;;5689:6:1;5686:30;5683:50;;;5729:1;5726;5719:12;5683:50;5752:61;5805:7;5796:6;5785:9;5781:22;5752:61;:::i;5824:247::-;5883:6;5936:2;5924:9;5915:7;5911:23;5907:32;5904:52;;;5952:1;5949;5942:12;5904:52;5991:9;5978:23;6010:31;6035:5;6010:31;:::i;:::-;6060:5;5824:247;-1:-1:-1;;;5824:247:1:o;6076:632::-;6247:2;6299:21;;;6369:13;;6272:18;;;6391:22;;;6218:4;;6247:2;6470:15;;;;6444:2;6429:18;;;6218:4;6513:169;6527:6;6524:1;6521:13;6513:169;;;6588:13;;6576:26;;6657:15;;;;6622:12;;;;6549:1;6542:9;6513:169;;;-1:-1:-1;6699:3:1;;6076:632;-1:-1:-1;;;;;;6076:632:1:o;6713:1023::-;6928:2;6980:21;;;7050:13;;6953:18;;;7072:22;;;6899:4;;6928:2;7113;;7131:18;;;;7172:15;;;6899:4;7215:495;7229:6;7226:1;7223:13;7215:495;;;7288:13;;7326:9;;7314:22;;7380:11;;;7374:18;-1:-1:-1;;;;;7370:44:1;7356:12;;;7349:66;7455:11;;;7449:18;7435:12;;;7428:40;7491:4;7535:11;;;7529:18;7515:12;;;7508:40;7571:4;7615:11;;;7609:18;7595:12;;;7588:40;7402:3;7648:14;;;;7685:15;;;;7411:1;7244:9;7215:495;;;-1:-1:-1;7727:3:1;;6713:1023;-1:-1:-1;;;;;;;6713:1023:1:o;7741:416::-;7834:6;7842;7895:2;7883:9;7874:7;7870:23;7866:32;7863:52;;;7911:1;7908;7901:12;7863:52;7951:9;7938:23;-1:-1:-1;;;;;7976:6:1;7973:30;7970:50;;;8016:1;8013;8006:12;7970:50;8039:61;8092:7;8083:6;8072:9;8068:22;8039:61;:::i;:::-;8029:71;8147:2;8132:18;;;;8119:32;;-1:-1:-1;;;;7741:416:1:o;9302:1213::-;9420:6;9428;9481:2;9469:9;9460:7;9456:23;9452:32;9449:52;;;9497:1;9494;9487:12;9449:52;9537:9;9524:23;-1:-1:-1;;;;;9607:2:1;9599:6;9596:14;9593:34;;;9623:1;9620;9613:12;9593:34;9646:61;9699:7;9690:6;9679:9;9675:22;9646:61;:::i;:::-;9636:71;;9726:2;9716:12;;9781:2;9770:9;9766:18;9753:32;9810:2;9800:8;9797:16;9794:36;;;9826:1;9823;9816:12;9794:36;9849:24;;;-1:-1:-1;9904:4:1;9896:13;;9892:27;-1:-1:-1;9882:55:1;;9933:1;9930;9923:12;9882:55;9969:2;9956:16;9992:60;10008:43;10048:2;10008:43;:::i;9992:60::-;10086:15;;;10168:1;10164:10;;;;10156:19;;10152:28;;;10117:12;;;;10192:19;;;10189:39;;;10224:1;10221;10214:12;10189:39;10248:11;;;;10268:217;10284:6;10279:3;10276:15;10268:217;;;10364:3;10351:17;10381:31;10406:5;10381:31;:::i;:::-;10425:18;;10301:12;;;;10463;;;;10268:217;;;10504:5;10494:15;;;;;;;9302:1213;;;;;:::o;10520:437::-;10606:6;10614;10667:2;10655:9;10646:7;10642:23;10638:32;10635:52;;;10683:1;10680;10673:12;10635:52;10723:9;10710:23;-1:-1:-1;;;;;10748:6:1;10745:30;10742:50;;;10788:1;10785;10778:12;10742:50;10827:70;10889:7;10880:6;10869:9;10865:22;10827:70;:::i;:::-;10916:8;;10801:96;;-1:-1:-1;10520:437:1;-1:-1:-1;;;;10520:437:1:o;10962:595::-;11080:6;11088;11141:2;11129:9;11120:7;11116:23;11112:32;11109:52;;;11157:1;11154;11147:12;11109:52;11197:9;11184:23;-1:-1:-1;;;;;11267:2:1;11259:6;11256:14;11253:34;;;11283:1;11280;11273:12;11253:34;11306:61;11359:7;11350:6;11339:9;11335:22;11306:61;:::i;:::-;11296:71;;11420:2;11409:9;11405:18;11392:32;11376:48;;11449:2;11439:8;11436:16;11433:36;;;11465:1;11462;11455:12;11433:36;;11488:63;11543:7;11532:8;11521:9;11517:24;11488:63;:::i;11562:345::-;11764:2;11746:21;;;11803:2;11783:18;;;11776:30;-1:-1:-1;;;11837:2:1;11822:18;;11815:51;11898:2;11883:18;;11562:345::o;11912:127::-;11973:10;11968:3;11964:20;11961:1;11954:31;12004:4;12001:1;11994:15;12028:4;12025:1;12018:15;12044:127;12105:10;12100:3;12096:20;12093:1;12086:31;12136:4;12133:1;12126:15;12160:4;12157:1;12150:15;12176:125;12241:9;;;12262:10;;;12259:36;;;12275:18;;:::i;12306:184::-;12376:6;12429:2;12417:9;12408:7;12404:23;12400:32;12397:52;;;12445:1;12442;12435:12;12397:52;-1:-1:-1;12468:16:1;;12306:184;-1:-1:-1;12306:184:1:o;12495:135::-;12534:3;12555:17;;;12552:43;;12575:18;;:::i;:::-;-1:-1:-1;12622:1:1;12611:13;;12495:135::o;12985:343::-;13187:2;13169:21;;;13226:2;13206:18;;;13199:30;-1:-1:-1;;;13260:2:1;13245:18;;13238:49;13319:2;13304:18;;12985:343::o;13333:1518::-;13450:6;13481:2;13524;13512:9;13503:7;13499:23;13495:32;13492:52;;;13540:1;13537;13530:12;13492:52;13573:9;13567:16;-1:-1:-1;;;;;13598:6:1;13595:30;13592:50;;;13638:1;13635;13628:12;13592:50;13661:22;;13714:4;13706:13;;13702:27;-1:-1:-1;13692:55:1;;13743:1;13740;13733:12;13692:55;13772:2;13766:9;13795:60;13811:43;13851:2;13811:43;:::i;13795:60::-;13889:15;;;13951:4;13990:11;;;13982:20;;13978:29;;;13920:12;;;;13877:3;14019:19;;;14016:39;;;14051:1;14048;14041:12;14016:39;14075:11;;;;14095:726;14111:6;14106:3;14103:15;14095:726;;;14191:2;14185:3;14176:7;14172:17;14168:26;14165:116;;;14235:1;14264:2;14260;14253:14;14165:116;14307:22;;:::i;:::-;14362:3;14356:10;14349:5;14342:25;14410:2;14405:3;14401:12;14395:19;14427:33;14452:7;14427:33;:::i;:::-;14480:14;;;14473:31;14527:2;14571:12;;;14565:19;14549:14;;;14542:43;14608:2;14652:12;;;14646:19;14630:14;;;14623:43;14689:3;14734:12;;;14728:19;14712:14;;;14705:43;14761:18;;14128:12;;;;14799;;;;14095:726;;;-1:-1:-1;14840:5:1;13333:1518;-1:-1:-1;;;;;;;13333:1518:1:o;14856:128::-;14923:9;;;14944:11;;;14941:37;;;14958:18;;:::i;14989:168::-;15062:9;;;15093;;15110:15;;;15104:22;;15090:37;15080:71;;15131:18;;:::i;15162:217::-;15202:1;15228;15218:132;;15272:10;15267:3;15263:20;15260:1;15253:31;15307:4;15304:1;15297:15;15335:4;15332:1;15325:15;15218:132;-1:-1:-1;15364:9:1;;15162:217::o;15384:251::-;15454:6;15507:2;15495:9;15486:7;15482:23;15478:32;15475:52;;;15523:1;15520;15513:12;15475:52;15555:9;15549:16;15574:31;15599:5;15574:31;:::i
Swarm Source
ipfs://78d8020533247b1f4d7190c01170cf98b7c119f8559be2e457e937d8cf4287eb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.