Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 419 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Any ERC... | 15158384 | 953 days ago | IN | 0 ETH | 0.00058213 | ||||
Stake | 12985351 | 1296 days ago | IN | 0 ETH | 0.02365864 | ||||
Stake FD | 12985351 | 1296 days ago | IN | 0 ETH | 0.01207112 | ||||
Claim | 12973034 | 1297 days ago | IN | 0 ETH | 0.00458814 | ||||
Claim | 12826959 | 1320 days ago | IN | 0 ETH | 0.00245228 | ||||
Claim | 12781531 | 1328 days ago | IN | 0 ETH | 0.00284781 | ||||
Unstake | 12713396 | 1338 days ago | IN | 0 ETH | 0.00087718 | ||||
Claim | 12677479 | 1344 days ago | IN | 0 ETH | 0.0040344 | ||||
Claim | 12649773 | 1348 days ago | IN | 0 ETH | 0.00125067 | ||||
Unstake | 12505011 | 1370 days ago | IN | 0 ETH | 0.00501248 | ||||
Claim | 12505004 | 1370 days ago | IN | 0 ETH | 0.00632848 | ||||
Claim | 12460119 | 1377 days ago | IN | 0 ETH | 0.00250064 | ||||
Claim | 12460119 | 1377 days ago | IN | 0 ETH | 0.00632848 | ||||
Stake FD | 12314811 | 1400 days ago | IN | 0 ETH | 0.01044008 | ||||
Stake | 12304164 | 1402 days ago | IN | 0 ETH | 0.00571528 | ||||
Stake | 12297560 | 1403 days ago | IN | 0 ETH | 0.02365872 | ||||
Stake | 12297128 | 1403 days ago | IN | 0 ETH | 0.02365872 | ||||
Claim | 12297120 | 1403 days ago | IN | 0 ETH | 0.00632848 | ||||
Claim | 12292852 | 1403 days ago | IN | 0 ETH | 0.00496048 | ||||
Claim | 12246830 | 1410 days ago | IN | 0 ETH | 0.00682066 | ||||
Claim | 12234460 | 1412 days ago | IN | 0 ETH | 0.00219664 | ||||
Claim | 12234460 | 1412 days ago | IN | 0 ETH | 0.00497648 | ||||
Claim | 12215120 | 1415 days ago | IN | 0 ETH | 0.00645442 | ||||
Claim | 12202722 | 1417 days ago | IN | 0 ETH | 0.00497648 | ||||
Claim | 12202548 | 1417 days ago | IN | 0 ETH | 0.00219664 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Staking
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-09 */ pragma solidity 0.6.12; // SPDX-License-Identifier: BSD-3-Clause /** * YFOX Dual Staking * Regular Staking APR: * - Yearly: 360 days = 200% * - Monthly: 30 days = 16.66% * - Weekly: 7 Days = 3.88% * - Daily: 24 Hours = 0.55% * - Hourly: 60 Minutes = 0.02% * * FD (Fixed Deposit Staking) APR: * - Yearly: 360 days = 250% * Interest on fixed deposit staking is added at a daily rate of 0.69% * * Staking ends after 12 months * Stakers can still unstake for 1 month after staking has ended * After 13 months admin has the right to claim remaining YFOX from the smart contract * * */ /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256` * (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } interface Token { function transferFrom(address, address, uint) external returns (bool); function transfer(address, uint) external returns (bool); } contract Staking is Ownable { using SafeMath for uint; using EnumerableSet for EnumerableSet.AddressSet; event RewardsTransferred(address holder, uint amount); // reward token contract address address public constant tokenAddress = 0x706CB9E741CBFee00Ad5b3f5ACc8bd44D1644a74; // reward rate 200.00% per year uint public constant rewardRate = 20000; // FD reward rate 250.00% per year uint public constant rewardRateFD = 25000; uint public constant rewardInterval = 360 days; uint public constant adminCanClaimAfter = 30 days; // No fee for FD // staking fee 1.00 percent uint public constant stakingFeeRate = 100; // unstaking fee 0.50 percent uint public constant unstakingFeeRate = 50; // unstaking possible after 48 hours uint public constant cliffTime = 48 hours; uint public totalClaimedRewards = 0; EnumerableSet.AddressSet private holders; EnumerableSet.AddressSet private holdersFD; mapping (address => uint) public depositedTokens; mapping (address => uint) public stakingTime; mapping (address => uint) public lastClaimedTime; mapping (address => uint) public depositedTokensFD; mapping (address => uint) public stakingTimeFD; mapping (address => uint) public lastClaimedTimeFD; mapping (address => uint) public totalEarnedTokens; mapping (address => uint) public totalEarnedTokensFD; uint public stakingDeployTime; uint public stakingEndTime; uint public adminClaimableTime; constructor() public { uint _now = now; stakingDeployTime = _now; stakingEndTime = stakingDeployTime.add(rewardInterval); adminClaimableTime = stakingEndTime.add(adminCanClaimAfter); } function updateAccount(address account) private { uint pendingDivs = getPendingDivs(account); if (pendingDivs > 0) { require(Token(tokenAddress).transfer(account, pendingDivs), "Could not transfer tokens."); totalEarnedTokens[account] = totalEarnedTokens[account].add(pendingDivs); totalClaimedRewards = totalClaimedRewards.add(pendingDivs); emit RewardsTransferred(account, pendingDivs); } lastClaimedTime[account] = now; } function updateAccountFD(address account) private { uint pendingDivs = getPendingDivsFD(account); if (pendingDivs > 0) { require(Token(tokenAddress).transfer(account, pendingDivs), "Could not transfer tokens."); totalEarnedTokensFD[account] = totalEarnedTokensFD[account].add(pendingDivs); totalClaimedRewards = totalClaimedRewards.add(pendingDivs); emit RewardsTransferred(account, pendingDivs); } lastClaimedTimeFD[account] = now; } function getPendingDivs(address _holder) public view returns (uint) { if (!holders.contains(_holder)) return 0; if (depositedTokens[_holder] == 0) return 0; uint timeDiff; uint _now = now; if (_now > stakingEndTime) { _now = stakingEndTime; } if (lastClaimedTime[_holder] >= _now) { timeDiff = 0; } else { timeDiff = _now.sub(lastClaimedTime[_holder]); } uint stakedAmount = depositedTokens[_holder]; uint pendingDivs = stakedAmount .mul(rewardRate) .mul(timeDiff) .div(rewardInterval) .div(1e4); return pendingDivs; } function getPendingDivsFD(address _holder) public view returns (uint) { if (!holdersFD.contains(_holder)) return 0; if (depositedTokensFD[_holder] == 0) return 0; uint timeDiff; uint _now = now; if (_now > stakingEndTime) { _now = stakingEndTime; } if (lastClaimedTimeFD[_holder] >= _now) { timeDiff = 0; } else { timeDiff = _now.sub(lastClaimedTimeFD[_holder]); } uint stakedAmount = depositedTokensFD[_holder]; uint pendingDivs = stakedAmount .mul(rewardRateFD) .mul(timeDiff) .div(rewardInterval) .div(1e4); return pendingDivs; } function getNumberOfHolders() public view returns (uint) { return holders.length(); } function getNumberOfHoldersFD() public view returns (uint) { return holdersFD.length(); } function stake(uint amountToStake) public { require(amountToStake > 0, "Cannot deposit 0 Tokens"); require(Token(tokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance"); updateAccount(msg.sender); uint fee = amountToStake.mul(stakingFeeRate).div(1e4); uint amountAfterFee = amountToStake.sub(fee); require(Token(tokenAddress).transfer(owner, fee), "Could not transfer deposit fee."); depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountAfterFee); if (!holders.contains(msg.sender)) { holders.add(msg.sender); stakingTime[msg.sender] = now; } } function stakeFD(uint amountToStake) public { require(amountToStake > 0, "Cannot deposit 0 Tokens"); require(Token(tokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance"); updateAccountFD(msg.sender); depositedTokensFD[msg.sender] = depositedTokensFD[msg.sender].add(amountToStake); if (!holdersFD.contains(msg.sender)) { holdersFD.add(msg.sender); stakingTimeFD[msg.sender] = now; } } function unstake(uint amountToWithdraw) public { require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); require(now.sub(stakingTime[msg.sender]) > cliffTime, "You recently staked, please wait before withdrawing."); updateAccount(msg.sender); uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4); uint amountAfterFee = amountToWithdraw.sub(fee); require(Token(tokenAddress).transfer(owner, fee), "Could not transfer withdraw fee."); require(Token(tokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens."); depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw); if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) { holders.remove(msg.sender); } } function unstakeFD(uint amountToWithdraw) public { require(depositedTokensFD[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); require(now > stakingEndTime, "Cannot unstake FD before staking ends."); updateAccountFD(msg.sender); require(Token(tokenAddress).transfer(msg.sender, amountToWithdraw), "Could not transfer tokens."); depositedTokensFD[msg.sender] = depositedTokensFD[msg.sender].sub(amountToWithdraw); if (holdersFD.contains(msg.sender) && depositedTokensFD[msg.sender] == 0) { holdersFD.remove(msg.sender); } } function claim() public { updateAccount(msg.sender); } function claimFD() public { updateAccountFD(msg.sender); } function getStakersList(uint startIndex, uint endIndex) public view returns (address[] memory stakers, uint[] memory stakingTimestamps, uint[] memory lastClaimedTimeStamps, uint[] memory stakedTokens) { require (startIndex < endIndex); uint length = endIndex.sub(startIndex); address[] memory _stakers = new address[](length); uint[] memory _stakingTimestamps = new uint[](length); uint[] memory _lastClaimedTimeStamps = new uint[](length); uint[] memory _stakedTokens = new uint[](length); for (uint i = startIndex; i < endIndex; i = i.add(1)) { address staker = holders.at(i); uint listIndex = i.sub(startIndex); _stakers[listIndex] = staker; _stakingTimestamps[listIndex] = stakingTime[staker]; _lastClaimedTimeStamps[listIndex] = lastClaimedTime[staker]; _stakedTokens[listIndex] = depositedTokens[staker]; } return (_stakers, _stakingTimestamps, _lastClaimedTimeStamps, _stakedTokens); } function getStakersListFD(uint startIndex, uint endIndex) public view returns (address[] memory stakers, uint[] memory stakingTimestamps, uint[] memory lastClaimedTimeStamps, uint[] memory stakedTokens) { require (startIndex < endIndex); uint length = endIndex.sub(startIndex); address[] memory _stakers = new address[](length); uint[] memory _stakingTimestamps = new uint[](length); uint[] memory _lastClaimedTimeStamps = new uint[](length); uint[] memory _stakedTokens = new uint[](length); for (uint i = startIndex; i < endIndex; i = i.add(1)) { address staker = holdersFD.at(i); uint listIndex = i.sub(startIndex); _stakers[listIndex] = staker; _stakingTimestamps[listIndex] = stakingTimeFD[staker]; _lastClaimedTimeStamps[listIndex] = lastClaimedTimeFD[staker]; _stakedTokens[listIndex] = depositedTokensFD[staker]; } return (_stakers, _stakingTimestamps, _lastClaimedTimeStamps, _stakedTokens); } uint private constant stakingAndDaoTokens = 6900e6; function getStakingAndDaoAmount() public view returns (uint) { if (totalClaimedRewards >= stakingAndDaoTokens) { return 0; } uint remaining = stakingAndDaoTokens.sub(totalClaimedRewards); return remaining; } // function to allow admin to claim *other* ERC20 tokens sent to this contract (by mistake) // Admin cannot transfer out YFOX from this smart contract till 1 month after staking ends function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { require((_tokenAddr != tokenAddress) || (now > adminClaimableTime), "Cannot Transfer Out YFOX till 13 months of launch!"); Token(_tokenAddr).transfer(_to, _amount); } }
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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsTransferred","type":"event"},{"inputs":[],"name":"adminCanClaimAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminClaimableTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cliffTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokensFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHoldersFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivsFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getStakersList","outputs":[{"internalType":"address[]","name":"stakers","type":"address[]"},{"internalType":"uint256[]","name":"stakingTimestamps","type":"uint256[]"},{"internalType":"uint256[]","name":"lastClaimedTimeStamps","type":"uint256[]"},{"internalType":"uint256[]","name":"stakedTokens","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getStakersListFD","outputs":[{"internalType":"address[]","name":"stakers","type":"address[]"},{"internalType":"uint256[]","name":"stakingTimestamps","type":"uint256[]"},{"internalType":"uint256[]","name":"lastClaimedTimeStamps","type":"uint256[]"},{"internalType":"uint256[]","name":"stakedTokens","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakingAndDaoAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTimeFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRateFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"stakeFD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingDeployTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTimeFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokensFD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"unstakeFD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006001553480156200001657600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600042905080600e81905550620000836301da9c00600e54620000b560201b62002a5e1790919060201c565b600f81905550620000a862278d00600f54620000b560201b62002a5e1790919060201c565b60108190555050620000d2565b600080828401905083811015620000c857fe5b8091505092915050565b6133b780620000e26000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80638ac3348711610125578063b5528f27116100ad578063d578ceab1161007c578063d578ceab14610aef578063d7130e1414610b0d578063d816c7d514610b2b578063f2fde38b14610b49578063f3f91fa014610b8d5761021c565b8063b5528f2714610a03578063bec4de3f14610a5b578063c326bf4f14610a79578063ca7e083514610ad15761021c565b806398896d10116100f457806398896d10146108995780639d76ea58146108f1578063a2c185a714610925578063a694fc3a1461097d578063b0b15556146109ab5761021c565b80638ac33487146107d15780638da5cb5b146107ef5780638f4dc57e14610823578063965554b41461087b5761021c565b806347320945116101a8578063583d42fd11610177578063583d42fd146106775780635ef057be146106cf5780636270cd18146106ed5780636a395ccb146107455780637b0a47ee146107b35761021c565b806347320945146106175780634e71d92d146106455780634f159a8c1461064f57806355283d2c1461066d5761021c565b80632729d6a9116101ef5780632729d6a91461041a5780632e17de781461057f5780632fb1b835146105ad578063308feec3146105db5780633b3ecc96146105f95761021c565b80630cb4c17a146102215780630f1a6444146102795780631911cf4a14610297578063268cab49146103fc575b600080fd5b6102636004803603602081101561023757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b6040518082815260200191505060405180910390f35b610281610db9565b6040518082815260200191505060405180910390f35b6102cd600480360360408110156102ad57600080fd5b810190808035906020019092919080359060200190929190505050610dc0565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561031c578082015181840152602081019050610301565b50505050905001858103845288818151815260200191508051906020019060200280838360005b8381101561035e578082015181840152602081019050610343565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103a0578082015181840152602081019050610385565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156103e25780820151818401526020810190506103c7565b505050509050019850505050505050505060405180910390f35b6104046110d9565b6040518082815260200191505060405180910390f35b6104506004803603604081101561043057600080fd5b810190808035906020019092919080359060200190929190505050611118565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561049f578082015181840152602081019050610484565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156104e15780820151818401526020810190506104c6565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015610523578082015181840152602081019050610508565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561056557808201518184015260208101905061054a565b505050509050019850505050505050505060405180910390f35b6105ab6004803603602081101561059557600080fd5b8101908080359060200190929190505050611431565b005b6105d9600480360360208110156105c357600080fd5b8101908080359060200190929190505050611976565b005b6105e3611c4f565b6040518082815260200191505060405180910390f35b610601611c60565b6040518082815260200191505060405180910390f35b6106436004803603602081101561062d57600080fd5b8101908080359060200190929190505050611c66565b005b61064d611fc2565b005b610657611fcd565b6040518082815260200191505060405180910390f35b610675611fde565b005b6106b96004803603602081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe9565b6040518082815260200191505060405180910390f35b6106d7612001565b6040518082815260200191505060405180910390f35b61072f6004803603602081101561070357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612006565b6040518082815260200191505060405180910390f35b6107b16004803603606081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061201e565b005b6107bb6121cd565b6040518082815260200191505060405180910390f35b6107d96121d3565b6040518082815260200191505060405180910390f35b6107f76121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108656004803603602081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fd565b6040518082815260200191505060405180910390f35b610883612215565b6040518082815260200191505060405180910390f35b6108db600480360360208110156108af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061221b565b6040518082815260200191505060405180910390f35b6108f96123ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109676004803603602081101561093b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612407565b6040518082815260200191505060405180910390f35b6109a96004803603602081101561099357600080fd5b810190808035906020019092919050505061241f565b005b6109ed600480360360208110156109c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061288f565b6040518082815260200191505060405180910390f35b610a4560048036036020811015610a1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a7565b6040518082815260200191505060405180910390f35b610a636128bf565b6040518082815260200191505060405180910390f35b610abb60048036036020811015610a8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c7565b6040518082815260200191505060405180910390f35b610ad96128df565b6040518082815260200191505060405180910390f35b610af76128e5565b6040518082815260200191505060405180910390f35b610b156128eb565b6040518082815260200191505060405180910390f35b610b336128f2565b6040518082815260200191505060405180910390f35b610b8b60048036036020811015610b5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f7565b005b610bcf60048036036020811015610ba357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a46565b6040518082815260200191505060405180910390f35b6000610bfb826004612a7a90919063ffffffff16565b610c085760009050610db4565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c595760009050610db4565b600080429050600f54811115610c6f57600f5490505b80600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610cbe5760009150610d13565b610d10600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612aaa90919063ffffffff16565b91505b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610daa612710610d9c6301da9c00610d8e88610d806161a889612ac190919063ffffffff16565b612ac190919063ffffffff16565b612af090919063ffffffff16565b612af090919063ffffffff16565b9050809450505050505b919050565b6202a30081565b606080606080848610610dd257600080fd5b6000610de78787612aaa90919063ffffffff16565b905060608167ffffffffffffffff81118015610e0257600080fd5b50604051908082528060200260200182016040528015610e315781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610e4d57600080fd5b50604051908082528060200260200182016040528015610e7c5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610e9857600080fd5b50604051908082528060200260200182016040528015610ec75781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610ee357600080fd5b50604051908082528060200260200182016040528015610f125781602001602082028036833780820191505090505b50905060008b90505b8a8110156110be576000610f39826002612b0990919063ffffffff16565b90506000610f508e84612aaa90919063ffffffff16565b905081878281518110610f5f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610fe557fe5b602002602001018181525050600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485828151811061103d57fe5b602002602001018181525050600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484828151811061109557fe5b60200260200101818152505050506110b7600182612a5e90919063ffffffff16565b9050610f1b565b50838383839850985098509850505050505092959194509250565b600064019b45a500600154106110f25760009050611115565b600061110e60015464019b45a500612aaa90919063ffffffff16565b9050809150505b90565b60608060608084861061112a57600080fd5b600061113f8787612aaa90919063ffffffff16565b905060608167ffffffffffffffff8111801561115a57600080fd5b506040519080825280602002602001820160405280156111895781602001602082028036833780820191505090505b50905060608267ffffffffffffffff811180156111a557600080fd5b506040519080825280602002602001820160405280156111d45781602001602082028036833780820191505090505b50905060608367ffffffffffffffff811180156111f057600080fd5b5060405190808252806020026020018201604052801561121f5781602001602082028036833780820191505090505b50905060608467ffffffffffffffff8111801561123b57600080fd5b5060405190808252806020026020018201604052801561126a5781602001602082028036833780820191505090505b50905060008b90505b8a811015611416576000611291826004612b0990919063ffffffff16565b905060006112a88e84612aaa90919063ffffffff16565b9050818782815181106112b757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486828151811061133d57fe5b602002602001018181525050600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485828151811061139557fe5b602002602001018181525050600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548482815181106113ed57fe5b602002602001018181525050505061140f600182612a5e90919063ffffffff16565b9050611273565b50838383839850985098509850505050505092959194509250565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156114e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6202a30061153c600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612aaa90919063ffffffff16565b11611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061331c6034913960400191505060405180910390fd5b61159b33612b23565b60006115c56127106115b7603285612ac190919063ffffffff16565b612af090919063ffffffff16565b905060006115dc8284612aaa90919063ffffffff16565b905073706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505050506040513d60208110156116ad57600080fd5b8101908080519060200190929190505050611730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117b557600080fd5b505af11580156117c9573d6000803e3d6000fd5b505050506040513d60208110156117df57600080fd5b8101908080519060200190929190505050611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6118b483600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aaa90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061190b336002612a7a90919063ffffffff16565b801561195657506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156119715761196f336002612db990919063ffffffff16565b505b505050565b600081116119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a8f57600080fd5b505af1158015611aa3573d6000803e3d6000fd5b505050506040513d6020811015611ab957600080fd5b8101908080519060200190929190505050611b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611b4533612de9565b611b9781600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bee336004612a7a90919063ffffffff16565b611c4c57611c0633600461307f90919063ffffffff16565b5042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000611c5b60026130af565b905090565b6161a881565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b600f544211611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132f66026913960400191505060405180910390fd5b611d7e33612de9565b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b505050506040513d6020811015611e2d57600080fd5b8101908080519060200190929190505050611eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b611f0281600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aaa90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f59336004612a7a90919063ffffffff16565b8015611fa457506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611fbf57611fbd336004612db990919063ffffffff16565b505b50565b611fcb33612b23565b565b6000611fd960046130af565b905090565b611fe733612de9565b565b60076020528060005260406000206000915090505481565b606481565b600c6020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461207657600080fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806120c6575060105442115b61211b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133506032913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b505050506040513d60208110156121b657600080fd5b810190808051906020019092919050505050505050565b614e2081565b600f5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b600e5481565b6000612231826002612a7a90919063ffffffff16565b61223e57600090506123ea565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561228f57600090506123ea565b600080429050600f548111156122a557600f5490505b80600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106122f45760009150612349565b612346600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612aaa90919063ffffffff16565b91505b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006123e06127106123d26301da9c006123c4886123b6614e2089612ac190919063ffffffff16565b612ac190919063ffffffff16565b612af090919063ffffffff16565b612af090919063ffffffff16565b9050809450505050505b919050565b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7481565b600b6020528060005260406000206000915090505481565b60008111612495576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561253857600080fd5b505af115801561254c573d6000803e3d6000fd5b505050506040513d602081101561256257600080fd5b81019080805190602001909291905050506125e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b6125ee33612b23565b600061261861271061260a606485612ac190919063ffffffff16565b612af090919063ffffffff16565b9050600061262f8284612aaa90919063ffffffff16565b905073706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156126d657600080fd5b505af11580156126ea573d6000803e3d6000fd5b505050506040513d602081101561270057600080fd5b8101908080519060200190929190505050612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b6127d581600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061282c336002612a7a90919063ffffffff16565b61288a5761284433600261307f90919063ffffffff16565b5042600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b60096020528060005260406000206000915090505481565b600d6020528060005260406000206000915090505481565b6301da9c0081565b60066020528060005260406000206000915090505481565b60105481565b60015481565b62278d0081565b603281565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461294f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561298957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915090505481565b600080828401905083811015612a7057fe5b8091505092915050565b6000612aa2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6130c4565b905092915050565b600082821115612ab657fe5b818303905092915050565b60008082840290506000841480612ae0575082848281612add57fe5b04145b612ae657fe5b8091505092915050565b600080828481612afc57fe5b0490508091505092915050565b6000612b1883600001836130e7565b60001c905092915050565b6000612b2e8261221b565b90506000811115612d715773706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050506040513d6020811015612be857600080fd5b8101908080519060200190929190505050612c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b612cbd81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d1581600154612a5e90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000612de1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61316a565b905092915050565b6000612df482610be5565b905060008111156130375773706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612e8457600080fd5b505af1158015612e98573d6000803e3d6000fd5b505050506040513d6020811015612eae57600080fd5b8101908080519060200190929190505050612f31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b612f8381600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fdb81600154612a5e90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006130a7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613252565b905092915050565b60006130bd826000016132c2565b9050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600081836000018054905011613148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132d46022913960400191505060405180910390fd5b82600001828154811061315757fe5b9060005260206000200154905092915050565b6000808360010160008481526020019081526020016000205490506000811461324657600060018203905060006001866000018054905003905060008660000182815481106131b557fe5b90600052602060002001549050808760000184815481106131d257fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061320a57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061324c565b60009150505b92915050565b600061325e83836130c4565b6132b75782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506132bc565b600090505b92915050565b60008160000180549050905091905056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647343616e6e6f7420756e7374616b65204644206265666f7265207374616b696e6720656e64732e596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672e43616e6e6f74205472616e73666572204f75742059464f582074696c6c203133206d6f6e746873206f66206c61756e636821a264697066735822122092e94f4da2b1612acc242a877391dfb9082dad48cd93701001345f13a8bb10fa64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80638ac3348711610125578063b5528f27116100ad578063d578ceab1161007c578063d578ceab14610aef578063d7130e1414610b0d578063d816c7d514610b2b578063f2fde38b14610b49578063f3f91fa014610b8d5761021c565b8063b5528f2714610a03578063bec4de3f14610a5b578063c326bf4f14610a79578063ca7e083514610ad15761021c565b806398896d10116100f457806398896d10146108995780639d76ea58146108f1578063a2c185a714610925578063a694fc3a1461097d578063b0b15556146109ab5761021c565b80638ac33487146107d15780638da5cb5b146107ef5780638f4dc57e14610823578063965554b41461087b5761021c565b806347320945116101a8578063583d42fd11610177578063583d42fd146106775780635ef057be146106cf5780636270cd18146106ed5780636a395ccb146107455780637b0a47ee146107b35761021c565b806347320945146106175780634e71d92d146106455780634f159a8c1461064f57806355283d2c1461066d5761021c565b80632729d6a9116101ef5780632729d6a91461041a5780632e17de781461057f5780632fb1b835146105ad578063308feec3146105db5780633b3ecc96146105f95761021c565b80630cb4c17a146102215780630f1a6444146102795780631911cf4a14610297578063268cab49146103fc575b600080fd5b6102636004803603602081101561023757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b6040518082815260200191505060405180910390f35b610281610db9565b6040518082815260200191505060405180910390f35b6102cd600480360360408110156102ad57600080fd5b810190808035906020019092919080359060200190929190505050610dc0565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561031c578082015181840152602081019050610301565b50505050905001858103845288818151815260200191508051906020019060200280838360005b8381101561035e578082015181840152602081019050610343565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103a0578082015181840152602081019050610385565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156103e25780820151818401526020810190506103c7565b505050509050019850505050505050505060405180910390f35b6104046110d9565b6040518082815260200191505060405180910390f35b6104506004803603604081101561043057600080fd5b810190808035906020019092919080359060200190929190505050611118565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561049f578082015181840152602081019050610484565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156104e15780820151818401526020810190506104c6565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015610523578082015181840152602081019050610508565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561056557808201518184015260208101905061054a565b505050509050019850505050505050505060405180910390f35b6105ab6004803603602081101561059557600080fd5b8101908080359060200190929190505050611431565b005b6105d9600480360360208110156105c357600080fd5b8101908080359060200190929190505050611976565b005b6105e3611c4f565b6040518082815260200191505060405180910390f35b610601611c60565b6040518082815260200191505060405180910390f35b6106436004803603602081101561062d57600080fd5b8101908080359060200190929190505050611c66565b005b61064d611fc2565b005b610657611fcd565b6040518082815260200191505060405180910390f35b610675611fde565b005b6106b96004803603602081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe9565b6040518082815260200191505060405180910390f35b6106d7612001565b6040518082815260200191505060405180910390f35b61072f6004803603602081101561070357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612006565b6040518082815260200191505060405180910390f35b6107b16004803603606081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061201e565b005b6107bb6121cd565b6040518082815260200191505060405180910390f35b6107d96121d3565b6040518082815260200191505060405180910390f35b6107f76121d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108656004803603602081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fd565b6040518082815260200191505060405180910390f35b610883612215565b6040518082815260200191505060405180910390f35b6108db600480360360208110156108af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061221b565b6040518082815260200191505060405180910390f35b6108f96123ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109676004803603602081101561093b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612407565b6040518082815260200191505060405180910390f35b6109a96004803603602081101561099357600080fd5b810190808035906020019092919050505061241f565b005b6109ed600480360360208110156109c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061288f565b6040518082815260200191505060405180910390f35b610a4560048036036020811015610a1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a7565b6040518082815260200191505060405180910390f35b610a636128bf565b6040518082815260200191505060405180910390f35b610abb60048036036020811015610a8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c7565b6040518082815260200191505060405180910390f35b610ad96128df565b6040518082815260200191505060405180910390f35b610af76128e5565b6040518082815260200191505060405180910390f35b610b156128eb565b6040518082815260200191505060405180910390f35b610b336128f2565b6040518082815260200191505060405180910390f35b610b8b60048036036020811015610b5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f7565b005b610bcf60048036036020811015610ba357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a46565b6040518082815260200191505060405180910390f35b6000610bfb826004612a7a90919063ffffffff16565b610c085760009050610db4565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c595760009050610db4565b600080429050600f54811115610c6f57600f5490505b80600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610cbe5760009150610d13565b610d10600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612aaa90919063ffffffff16565b91505b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610daa612710610d9c6301da9c00610d8e88610d806161a889612ac190919063ffffffff16565b612ac190919063ffffffff16565b612af090919063ffffffff16565b612af090919063ffffffff16565b9050809450505050505b919050565b6202a30081565b606080606080848610610dd257600080fd5b6000610de78787612aaa90919063ffffffff16565b905060608167ffffffffffffffff81118015610e0257600080fd5b50604051908082528060200260200182016040528015610e315781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610e4d57600080fd5b50604051908082528060200260200182016040528015610e7c5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610e9857600080fd5b50604051908082528060200260200182016040528015610ec75781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610ee357600080fd5b50604051908082528060200260200182016040528015610f125781602001602082028036833780820191505090505b50905060008b90505b8a8110156110be576000610f39826002612b0990919063ffffffff16565b90506000610f508e84612aaa90919063ffffffff16565b905081878281518110610f5f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610fe557fe5b602002602001018181525050600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485828151811061103d57fe5b602002602001018181525050600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484828151811061109557fe5b60200260200101818152505050506110b7600182612a5e90919063ffffffff16565b9050610f1b565b50838383839850985098509850505050505092959194509250565b600064019b45a500600154106110f25760009050611115565b600061110e60015464019b45a500612aaa90919063ffffffff16565b9050809150505b90565b60608060608084861061112a57600080fd5b600061113f8787612aaa90919063ffffffff16565b905060608167ffffffffffffffff8111801561115a57600080fd5b506040519080825280602002602001820160405280156111895781602001602082028036833780820191505090505b50905060608267ffffffffffffffff811180156111a557600080fd5b506040519080825280602002602001820160405280156111d45781602001602082028036833780820191505090505b50905060608367ffffffffffffffff811180156111f057600080fd5b5060405190808252806020026020018201604052801561121f5781602001602082028036833780820191505090505b50905060608467ffffffffffffffff8111801561123b57600080fd5b5060405190808252806020026020018201604052801561126a5781602001602082028036833780820191505090505b50905060008b90505b8a811015611416576000611291826004612b0990919063ffffffff16565b905060006112a88e84612aaa90919063ffffffff16565b9050818782815181106112b757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486828151811061133d57fe5b602002602001018181525050600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485828151811061139557fe5b602002602001018181525050600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548482815181106113ed57fe5b602002602001018181525050505061140f600182612a5e90919063ffffffff16565b9050611273565b50838383839850985098509850505050505092959194509250565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156114e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6202a30061153c600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612aaa90919063ffffffff16565b11611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061331c6034913960400191505060405180910390fd5b61159b33612b23565b60006115c56127106115b7603285612ac190919063ffffffff16565b612af090919063ffffffff16565b905060006115dc8284612aaa90919063ffffffff16565b905073706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505050506040513d60208110156116ad57600080fd5b8101908080519060200190929190505050611730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156117b557600080fd5b505af11580156117c9573d6000803e3d6000fd5b505050506040513d60208110156117df57600080fd5b8101908080519060200190929190505050611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6118b483600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aaa90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061190b336002612a7a90919063ffffffff16565b801561195657506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156119715761196f336002612db990919063ffffffff16565b505b505050565b600081116119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a8f57600080fd5b505af1158015611aa3573d6000803e3d6000fd5b505050506040513d6020811015611ab957600080fd5b8101908080519060200190929190505050611b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611b4533612de9565b611b9781600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bee336004612a7a90919063ffffffff16565b611c4c57611c0633600461307f90919063ffffffff16565b5042600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000611c5b60026130af565b905090565b6161a881565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b600f544211611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132f66026913960400191505060405180910390fd5b611d7e33612de9565b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e0357600080fd5b505af1158015611e17573d6000803e3d6000fd5b505050506040513d6020811015611e2d57600080fd5b8101908080519060200190929190505050611eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b611f0281600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aaa90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f59336004612a7a90919063ffffffff16565b8015611fa457506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611fbf57611fbd336004612db990919063ffffffff16565b505b50565b611fcb33612b23565b565b6000611fd960046130af565b905090565b611fe733612de9565b565b60076020528060005260406000206000915090505481565b606481565b600c6020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461207657600080fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806120c6575060105442115b61211b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133506032913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b505050506040513d60208110156121b657600080fd5b810190808051906020019092919050505050505050565b614e2081565b600f5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b600e5481565b6000612231826002612a7a90919063ffffffff16565b61223e57600090506123ea565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561228f57600090506123ea565b600080429050600f548111156122a557600f5490505b80600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106122f45760009150612349565b612346600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612aaa90919063ffffffff16565b91505b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006123e06127106123d26301da9c006123c4886123b6614e2089612ac190919063ffffffff16565b612ac190919063ffffffff16565b612af090919063ffffffff16565b612af090919063ffffffff16565b9050809450505050505b919050565b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7481565b600b6020528060005260406000206000915090505481565b60008111612495576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561253857600080fd5b505af115801561254c573d6000803e3d6000fd5b505050506040513d602081101561256257600080fd5b81019080805190602001909291905050506125e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b6125ee33612b23565b600061261861271061260a606485612ac190919063ffffffff16565b612af090919063ffffffff16565b9050600061262f8284612aaa90919063ffffffff16565b905073706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156126d657600080fd5b505af11580156126ea573d6000803e3d6000fd5b505050506040513d602081101561270057600080fd5b8101908080519060200190929190505050612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b6127d581600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061282c336002612a7a90919063ffffffff16565b61288a5761284433600261307f90919063ffffffff16565b5042600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b60096020528060005260406000206000915090505481565b600d6020528060005260406000206000915090505481565b6301da9c0081565b60066020528060005260406000206000915090505481565b60105481565b60015481565b62278d0081565b603281565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461294f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561298957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915090505481565b600080828401905083811015612a7057fe5b8091505092915050565b6000612aa2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6130c4565b905092915050565b600082821115612ab657fe5b818303905092915050565b60008082840290506000841480612ae0575082848281612add57fe5b04145b612ae657fe5b8091505092915050565b600080828481612afc57fe5b0490508091505092915050565b6000612b1883600001836130e7565b60001c905092915050565b6000612b2e8261221b565b90506000811115612d715773706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050506040513d6020811015612be857600080fd5b8101908080519060200190929190505050612c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b612cbd81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d1581600154612a5e90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000612de1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61316a565b905092915050565b6000612df482610be5565b905060008111156130375773706cb9e741cbfee00ad5b3f5acc8bd44d1644a7473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612e8457600080fd5b505af1158015612e98573d6000803e3d6000fd5b505050506040513d6020811015612eae57600080fd5b8101908080519060200190929190505050612f31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b612f8381600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5e90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fdb81600154612a5e90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006130a7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613252565b905092915050565b60006130bd826000016132c2565b9050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600081836000018054905011613148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132d46022913960400191505060405180910390fd5b82600001828154811061315757fe5b9060005260206000200154905092915050565b6000808360010160008481526020019081526020016000205490506000811461324657600060018203905060006001866000018054905003905060008660000182815481106131b557fe5b90600052602060002001549050808760000184815481106131d257fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061320a57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061324c565b60009150505b92915050565b600061325e83836130c4565b6132b75782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506132bc565b600090505b92915050565b60008160000180549050905091905056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647343616e6e6f7420756e7374616b65204644206265666f7265207374616b696e6720656e64732e596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672e43616e6e6f74205472616e73666572204f75742059464f582074696c6c203133206d6f6e746873206f66206c61756e636821a264697066735822122092e94f4da2b1612acc242a877391dfb9082dad48cd93701001345f13a8bb10fa64736f6c634300060c0033
Deployed Bytecode Sourcemap
10601:11169:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14411:846;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11464:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18597:1157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21014:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19766:1167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16822:920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16264:546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15269:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11048:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17754:667;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18433:68;;;:::i;:::-;;15374:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18513:72;;;:::i;:::-;;11729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11278:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12014:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21480:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10962:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12172:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9632:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11898:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12136:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13553:846;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10831:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11951:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15495:757;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11841:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12071:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11102:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11674:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12205:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11524:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11155:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11367:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10251:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11780:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14411:846;14475:4;14497:27;14516:7;14497:9;:18;;:27;;;;:::i;:::-;14492:42;;14533:1;14526:8;;;;14492:42;14579:1;14549:17;:26;14567:7;14549:26;;;;;;;;;;;;;;;;:31;14545:45;;;14589:1;14582:8;;;;14545:45;14603:13;14627:9;14639:3;14627:15;;14664:14;;14657:4;:21;14653:75;;;14702:14;;14695:21;;14653:75;14782:4;14752:17;:26;14770:7;14752:26;;;;;;;;;;;;;;;;:34;14748:159;;14814:1;14803:12;;14748:159;;;14859:36;14868:17;:26;14886:7;14868:26;;;;;;;;;;;;;;;;14859:4;:8;;:36;;;;:::i;:::-;14848:47;;14748:159;14927:17;14947;:26;14965:7;14947:26;;;;;;;;;;;;;;;;14927:46;;14994:16;15013:193;15202:3;15013:154;11140:8;15013:104;15108:8;15013:60;11084:5;15013:12;:46;;:60;;;;:::i;:::-;:94;;:104;;;;:::i;:::-;:138;;:154;;;;:::i;:::-;:188;;:193;;;;:::i;:::-;14994:212;;15238:11;15231:18;;;;;;14411:846;;;;:::o;11464:41::-;11497:8;11464:41;:::o;18597:1157::-;18704:24;18744:31;18791:35;18841:26;18902:8;18889:10;:21;18880:31;;;;;;18932:11;18946:24;18959:10;18946:8;:12;;:24;;;;:::i;:::-;18932:38;;18981:25;19023:6;19009:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18981:49;;19041:32;19087:6;19076:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19041:53;;19105:36;19155:6;19144:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19105:57;;19173:27;19214:6;19203:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19173:48;;19247:6;19256:10;19247:19;;19242:408;19272:8;19268:1;:12;19242:408;;;19311:14;19328:13;19339:1;19328:7;:10;;:13;;;;:::i;:::-;19311:30;;19356:14;19373:17;19379:10;19373:1;:5;;:17;;;;:::i;:::-;19356:34;;19427:6;19405:8;19414:9;19405:19;;;;;;;;;;;;;:28;;;;;;;;;;;19480:11;:19;19492:6;19480:19;;;;;;;;;;;;;;;;19448:18;19467:9;19448:29;;;;;;;;;;;;;:51;;;;;19550:15;:23;19566:6;19550:23;;;;;;;;;;;;;;;;19514:22;19537:9;19514:33;;;;;;;;;;;;;:59;;;;;19615:15;:23;19631:6;19615:23;;;;;;;;;;;;;;;;19588:13;19602:9;19588:24;;;;;;;;;;;;;:50;;;;;19242:408;;19286:8;19292:1;19286;:5;;:8;;;;:::i;:::-;19282:12;;19242:408;;;;19678:8;19688:18;19708:22;19732:13;19670:76;;;;;;;;;;;;;18597:1157;;;;;;;:::o;21014:261::-;21069:4;20995:6;21090:19;;:42;21086:83;;21156:1;21149:8;;;;21086:83;21179:14;21196:44;21220:19;;20995:6;21196:23;;:44;;;;:::i;:::-;21179:61;;21258:9;21251:16;;;21014:261;;:::o;19766:1167::-;19875:24;19915:31;19962:35;20012:26;20073:8;20060:10;:21;20051:31;;;;;;20103:11;20117:24;20130:10;20117:8;:12;;:24;;;;:::i;:::-;20103:38;;20152:25;20194:6;20180:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20152:49;;20212:32;20258:6;20247:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20212:53;;20276:36;20326:6;20315:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20276:57;;20344:27;20385:6;20374:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20344:48;;20418:6;20427:10;20418:19;;20413:416;20443:8;20439:1;:12;20413:416;;;20482:14;20499:15;20512:1;20499:9;:12;;:15;;;;:::i;:::-;20482:32;;20529:14;20546:17;20552:10;20546:1;:5;;:17;;;;:::i;:::-;20529:34;;20600:6;20578:8;20587:9;20578:19;;;;;;;;;;;;;:28;;;;;;;;;;;20653:13;:21;20667:6;20653:21;;;;;;;;;;;;;;;;20621:18;20640:9;20621:29;;;;;;;;;;;;;:53;;;;;20725:17;:25;20743:6;20725:25;;;;;;;;;;;;;;;;20689:22;20712:9;20689:33;;;;;;;;;;;;;:61;;;;;20792:17;:25;20810:6;20792:25;;;;;;;;;;;;;;;;20765:13;20779:9;20765:24;;;;;;;;;;;;;:52;;;;;20413:416;;20457:8;20463:1;20457;:5;;:8;;;;:::i;:::-;20453:12;;20413:416;;;;20857:8;20867:18;20887:22;20911:13;20849:76;;;;;;;;;;;;;19766:1167;;;;;;;:::o;16822:920::-;16919:16;16888:15;:27;16904:10;16888:27;;;;;;;;;;;;;;;;:47;;16880:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:8;16995:32;17003:11;:23;17015:10;17003:23;;;;;;;;;;;;;;;;16995:3;:7;;:32;;;;:::i;:::-;:44;16987:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17117:25;17131:10;17117:13;:25::i;:::-;17163:8;17174:47;17217:3;17174:38;11407:2;17174:16;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;17163:58;;17232:19;17254:25;17275:3;17254:16;:20;;:25;;;;:::i;:::-;17232:47;;10870:42;17308:28;;;17337:5;;;;;;;;;;17344:3;17308:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17300:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10870:42;17404:28;;;17433:10;17445:14;17404:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17396:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17542:49;17574:16;17542:15;:27;17558:10;17542:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;17512:15;:27;17528:10;17512:27;;;;;;;;;;;;;;;:79;;;;17616:28;17633:10;17616:7;:16;;:28;;;;:::i;:::-;:64;;;;;17679:1;17648:15;:27;17664:10;17648:27;;;;;;;;;;;;;;;;:32;17616:64;17612:123;;;17697:26;17712:10;17697:7;:14;;:26;;;;:::i;:::-;;17612:123;16822:920;;;:::o;16264:546::-;16343:1;16327:13;:17;16319:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10870:42;16391:32;;;16424:10;16444:4;16451:13;16391:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16383:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16519:27;16535:10;16519:15;:27::i;:::-;16599:48;16633:13;16599:17;:29;16617:10;16599:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;16567:17;:29;16585:10;16567:29;;;;;;;;;;;;;;;:80;;;;16673:30;16692:10;16673:9;:18;;:30;;;;:::i;:::-;16668:135;;16720:25;16734:10;16720:9;:13;;:25;;;;:::i;:::-;;16788:3;16760:13;:25;16774:10;16760:25;;;;;;;;;;;;;;;:31;;;;16668:135;16264:546;:::o;15269:99::-;15320:4;15344:16;:7;:14;:16::i;:::-;15337:23;;15269:99;:::o;11048:41::-;11084:5;11048:41;:::o;17754:667::-;17855:16;17822:17;:29;17840:10;17822:29;;;;;;;;;;;;;;;;:49;;17814:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17937:14;;17931:3;:20;17923:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18015:27;18031:10;18015:15;:27::i;:::-;10870:42;18071:28;;;18100:10;18112:16;18071:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18063:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18213:51;18247:16;18213:17;:29;18231:10;18213:29;;;;;;;;;;;;;;;;:33;;:51;;;;:::i;:::-;18181:17;:29;18199:10;18181:29;;;;;;;;;;;;;;;:83;;;;18289:30;18308:10;18289:9;:18;;:30;;;;:::i;:::-;:68;;;;;18356:1;18323:17;:29;18341:10;18323:29;;;;;;;;;;;;;;;;:34;18289:68;18285:129;;;18374:28;18391:10;18374:9;:16;;:28;;;;:::i;:::-;;18285:129;17754:667;:::o;18433:68::-;18468:25;18482:10;18468:13;:25::i;:::-;18433:68::o;15374:103::-;15427:4;15451:18;:9;:16;:18::i;:::-;15444:25;;15374:103;:::o;18513:72::-;18550:27;18566:10;18550:15;:27::i;:::-;18513:72::o;11729:44::-;;;;;;;;;;;;;;;;;:::o;11278:41::-;11316:3;11278:41;:::o;12014:50::-;;;;;;;;;;;;;;;;;:::o;21480:287::-;10062:5;;;;;;;;;;10048:19;;:10;:19;;;10040:28;;;;;;10870:42:::1;21596:26;;:10;:26;;;;21595:58;;;;21634:18;;21628:3;:24;21595:58;21587:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21725:10;21719:26;;;21746:3;21751:7;21719:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;21480:287:::0;;;:::o;10962:39::-;10996:5;10962:39;:::o;12172:26::-;;;;:::o;9632:20::-;;;;;;;;;;;;:::o;11898:46::-;;;;;;;;;;;;;;;;;:::o;12136:29::-;;;;:::o;13553:846::-;13615:4;13637:25;13654:7;13637;:16;;:25;;;;:::i;:::-;13632:40;;13671:1;13664:8;;;;13632:40;13715:1;13687:15;:24;13703:7;13687:24;;;;;;;;;;;;;;;;:29;13683:43;;;13725:1;13718:8;;;;13683:43;13747:13;13771:9;13783:3;13771:15;;13808:14;;13801:4;:21;13797:75;;;13846:14;;13839:21;;13797:75;13924:4;13896:15;:24;13912:7;13896:24;;;;;;;;;;;;;;;;:32;13892:155;;13956:1;13945:12;;13892:155;;;14001:34;14010:15;:24;14026:7;14010:24;;;;;;;;;;;;;;;;14001:4;:8;;:34;;;;:::i;:::-;13990:45;;13892:155;14073:17;14093:15;:24;14109:7;14093:24;;;;;;;;;;;;;;;;14073:44;;14138:16;14157:191;14344:3;14157:152;11140:8;14157:102;14250:8;14157:58;10996:5;14157:12;:46;;:58;;;;:::i;:::-;:92;;:102;;;;:::i;:::-;:136;;:152;;;;:::i;:::-;:186;;:191;;;;:::i;:::-;14138:210;;14380:11;14373:18;;;;;;13553:846;;;;:::o;10831:81::-;10870:42;10831:81;:::o;11951:50::-;;;;;;;;;;;;;;;;;:::o;15495:757::-;15572:1;15556:13;:17;15548:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10870:42;15620:32;;;15653:10;15673:4;15680:13;15620:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15612:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15748:25;15762:10;15748:13;:25::i;:::-;15794:8;15805:42;15843:3;15805:33;11316:3;15805:13;:17;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;15794:53;;15858:19;15880:22;15898:3;15880:13;:17;;:22;;;;:::i;:::-;15858:44;;10870:42;15921:28;;;15950:5;;;;;;;;;;15957:3;15921:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15913:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16048:47;16080:14;16048:15;:27;16064:10;16048:27;;;;;;;;;;;;;;;;:31;;:47;;;;:::i;:::-;16018:15;:27;16034:10;16018:27;;;;;;;;;;;;;;;:77;;;;16121:28;16138:10;16121:7;:16;;:28;;;;:::i;:::-;16116:129;;16166:23;16178:10;16166:7;:11;;:23;;;;:::i;:::-;;16230:3;16204:11;:23;16216:10;16204:23;;;;;;;;;;;;;;;:29;;;;16116:129;15495:757;;;:::o;11841:50::-;;;;;;;;;;;;;;;;;:::o;12071:52::-;;;;;;;;;;;;;;;;;:::o;11102:46::-;11140:8;11102:46;:::o;11674:48::-;;;;;;;;;;;;;;;;;:::o;12205:30::-;;;;:::o;11524:35::-;;;;:::o;11155:49::-;11197:7;11155:49;:::o;11367:42::-;11407:2;11367:42;:::o;10251:178::-;10062:5;;;;;;;;;;10048:19;;:10;:19;;;10040:28;;;;;;10348:1:::1;10328:22;;:8;:22;;;;10320:31;;;::::0;::::1;;10391:8;10363:37;;10384:5;::::0;::::1;;;;;;;;10363:37;;;;;;;;;;;;10415:8;10407:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;10251:178:::0;:::o;11780:48::-;;;;;;;;;;;;;;;;;:::o;1305:133::-;1363:7;1379:9;1395:1;1391;:5;1379:17;;1415:1;1410;:6;;1403:14;;;;1431:1;1424:8;;;1305:133;;;;:::o;6947:158::-;7027:4;7051:46;7061:3;:10;;7089:5;7081:14;;7073:23;;7051:9;:46::i;:::-;7044:53;;6947:158;;;;:::o;1186:113::-;1244:7;1272:1;1267;:6;;1260:14;;;;1292:1;1288;:5;1281:12;;1186:113;;;;:::o;757:147::-;815:7;831:9;847:1;843;:5;831:17;;867:1;862;:6;:20;;;;881:1;876;872;:5;;;;;;:10;862:20;855:28;;;;897:1;890:8;;;757:147;;;;:::o;910:270::-;968:7;1059:9;1075:1;1071;:5;;;;;;1059:17;;1173:1;1166:8;;;910:270;;;;:::o;7652:149::-;7726:7;7769:22;7773:3;:10;;7785:5;7769:3;:22::i;:::-;7761:31;;7746:47;;7652:149;;;;:::o;12485:517::-;12544:16;12563:23;12578:7;12563:14;:23::i;:::-;12544:42;;12615:1;12601:11;:15;12597:357;;;10870:42;12641:28;;;12670:7;12679:11;12641:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12633:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12766:43;12797:11;12766:17;:26;12784:7;12766:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;12737:17;:26;12755:7;12737:26;;;;;;;;;;;;;;;:72;;;;12846:36;12870:11;12846:19;;:23;;:36;;;;:::i;:::-;12824:19;:58;;;;12902:40;12921:7;12930:11;12902:40;;;;;;;;;;;;;;;;;;;;;;;;;;12597:357;12991:3;12964:15;:24;12980:7;12964:24;;;;;;;;;;;;;;;:30;;;;12485:517;;:::o;6712:149::-;6785:4;6809:44;6817:3;:10;;6845:5;6837:14;;6829:23;;6809:7;:44::i;:::-;6802:51;;6712:149;;;;:::o;13014:527::-;13075:16;13094:25;13111:7;13094:16;:25::i;:::-;13075:44;;13148:1;13134:11;:15;13130:361;;;10870:42;13174:28;;;13203:7;13212:11;13174:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13166:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13301:45;13334:11;13301:19;:28;13321:7;13301:28;;;;;;;;;;;;;;;;:32;;:45;;;;:::i;:::-;13270:19;:28;13290:7;13270:28;;;;;;;;;;;;;;;:76;;;;13383:36;13407:11;13383:19;;:23;;:36;;;;:::i;:::-;13361:19;:58;;;;13439:40;13458:7;13467:11;13439:40;;;;;;;;;;;;;;;;;;;;;;;;;;13130:361;13530:3;13501:17;:26;13519:7;13501:26;;;;;;;;;;;;;;;:32;;;;13014:527;;:::o;6393:143::-;6463:4;6487:41;6492:3;:10;;6520:5;6512:14;;6504:23;;6487:4;:41::i;:::-;6480:48;;6393:143;;;;:::o;7191:117::-;7254:7;7281:19;7289:3;:10;;7281:7;:19::i;:::-;7274:26;;7191:117;;;:::o;5267:129::-;5340:4;5387:1;5364:3;:12;;:19;5377:5;5364:19;;;;;;;;;;;;:24;;5357:31;;5267:129;;;;:::o;5935:204::-;6002:7;6051:5;6030:3;:11;;:18;;;;:26;6022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6113:3;:11;;6125:5;6113:18;;;;;;;;;;;;;;;;6106:25;;5935:204;;;;:::o;3637:1544::-;3703:4;3821:18;3842:3;:12;;:19;3855:5;3842:19;;;;;;;;;;;;3821:40;;3892:1;3878:10;:15;3874:1300;;4240:21;4277:1;4264:10;:14;4240:38;;4293:17;4334:1;4313:3;:11;;:18;;;;:22;4293:42;;4580:17;4600:3;:11;;4612:9;4600:22;;;;;;;;;;;;;;;;4580:42;;4746:9;4717:3;:11;;4729:13;4717:26;;;;;;;;;;;;;;;:38;;;;4865:1;4849:13;:17;4823:3;:12;;:23;4836:9;4823:23;;;;;;;;;;;:43;;;;4975:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;5070:3;:12;;:19;5083:5;5070:19;;;;;;;;;;;5063:26;;;5113:4;5106:11;;;;;;;;3874:1300;5157:5;5150:12;;;3637:1544;;;;;:::o;3047:414::-;3110:4;3132:21;3142:3;3147:5;3132:9;:21::i;:::-;3127:327;;3170:3;:11;;3187:5;3170:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:3;:11;;:18;;;;3331:3;:12;;:19;3344:5;3331:19;;;;;;;;;;;:40;;;;3393:4;3386:11;;;;3127:327;3437:5;3430:12;;3047:414;;;;;:::o;5482:109::-;5538:7;5565:3;:11;;:18;;;;5558:25;;5482:109;;;:::o
Swarm Source
ipfs://92e94f4da2b1612acc242a877391dfb9082dad48cd93701001345f13a8bb10fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.