Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
Node
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-04-21 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.12; /* ________ ___ ________ ________ ___ ___ ________ ___ ________ ________ ________ ________ _______ |\ __ \|\ \|\ ____\|\ ____\ |\ \ / /| |\ _____\\ \|\ ___ \|\ __ \|\ ___ \|\ ____\|\ ___ \ \ \ \|\ \ \ \ \ \___|\ \ \___| \ \ \/ / / \ \ \__/\ \ \ \ \\ \ \ \ \|\ \ \ \\ \ \ \ \___|\ \ __/| \ \ ____\ \ \ \ \ __\ \ \ ___ \ \ / / \ \ __\\ \ \ \ \\ \ \ \ __ \ \ \\ \ \ \ \ \ \ \_|/__ \ \ \___|\ \ \ \ \|\ \ \ \|\ \ \/ / / \ \ \_| \ \ \ \ \\ \ \ \ \ \ \ \ \\ \ \ \ \____\ \ \_|\ \ \ \__\ \ \__\ \_______\ \_______\__/ / / \ \__\ \ \__\ \__\\ \__\ \__\ \__\ \__\\ \__\ \_______\ \_______\ \|__| \|__|\|_______|\|_______|\___/ / \|__| \|__|\|__| \|__|\|__|\|__|\|__| \|__|\|_______|\|_______| \|___|/ https://piggyfinance.io */ /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts-old/math/[email protected] pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File @openzeppelin/contracts-old/utils/[email protected] pragma solidity ^0.6.2; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File @openzeppelin/contracts-old/token/ERC20/[email protected] pragma solidity ^0.6.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File contracts/distribution/Node.sol pragma experimental ABIEncoderV2; pragma solidity 0.6.12; contract Node { using SafeERC20 for IERC20; using SafeMath for uint256; IERC20 public constant TOKEN = IERC20(0x1a877B68bdA77d78EEa607443CcDE667B31B0CdF); uint256[] public tierAllocPoints = [1 ether, 2.1 ether, 4.3 ether]; uint256[] public tierAmounts = [10 ether, 20 ether, 40 ether]; struct User { uint256 total_deposits; uint256 total_claims; uint256 last_distPoints; } event CreateNode(uint256 timestamp, address account, uint256 num); address private dev; mapping(address => User) public users; mapping(address => mapping(uint256 => uint256)) public nodes; mapping(uint256 => uint256) public totalNodes; address[] public userIndices; uint256 public total_deposited; uint256 public total_claimed; uint256 public total_rewards; uint256 public treasury_rewards; uint256 public treasuryFeePercent; uint256 public totalDistributeRewards; uint256 public totalDistributePoints; uint256 public maxReturnPercent; uint256 public dripRate; uint256 public lastDripTime; uint256 public startTime; bool public enabled; uint256 public constant MULTIPLIER = 10e18; constructor(uint256 _startTime) public { maxReturnPercent = 500; dripRate = 2400000; treasuryFeePercent = 20; lastDripTime = _startTime > block.timestamp ? _startTime : block.timestamp; startTime = _startTime; enabled = true; dev = msg.sender; } receive() external payable { revert("Do not send AVAX."); } modifier onlyDev() { require(msg.sender == dev, "Caller is not the dev!"); _; } function changeDev(address payable newDev) external onlyDev { require(newDev != address(0), "Zero address"); dev = newDev; } function claimTreasuryRewards() external { if (treasury_rewards > 0) { TOKEN.safeTransfer(dev, treasury_rewards); treasury_rewards = 0; } } function setStartTime(uint256 _startTime) external onlyDev { startTime = _startTime; } function setEnabled(bool _enabled) external onlyDev { enabled = _enabled; } function setTreasuryFeePercent(uint256 percent) external onlyDev { treasuryFeePercent = percent; } function setDripRate(uint256 rate) external onlyDev { dripRate = rate; } function setLastDripTime(uint256 timestamp) external onlyDev { lastDripTime = timestamp; } function setMaxReturnPercent(uint256 percent) external onlyDev { maxReturnPercent = percent; } function setTierValues(uint256[] memory _tierAllocPoints, uint256[] memory _tierAmounts) external onlyDev { require(_tierAllocPoints.length == _tierAmounts.length, "Length mismatch"); tierAllocPoints = _tierAllocPoints; tierAmounts = _tierAmounts; } function setUser(address _addr, User memory _user) external onlyDev { total_deposited = total_deposited.sub(users[_addr].total_deposits).add(_user.total_deposits); total_claimed = total_claimed.sub(users[_addr].total_claims).add(_user.total_claims); users[_addr].total_deposits = _user.total_deposits; users[_addr].total_claims = _user.total_claims; } function setNodes(address _user, uint256[] memory _nodes) external onlyDev { for(uint256 i = 0; i < _nodes.length; i++) { totalNodes[i] = totalNodes[i].sub(nodes[_user][i]).add( _nodes[i]); nodes[_user][i] = _nodes[i]; } } function totalAllocPoints() public view returns (uint256) { uint256 total = 0; for (uint256 i = 0; i < tierAllocPoints.length; i++) { total = total.add(tierAllocPoints[i].mul(totalNodes[i])); } return total; } function allocPoints(address account) public view returns (uint256) { uint256 total = 0; for (uint256 i = 0; i < tierAllocPoints.length; i++) { total = total.add(tierAllocPoints[i].mul(nodes[account][i])); } return total; } function getDistributionRewards(address account) public view returns (uint256) { if (isMaxPayout(account)) return 0; uint256 newDividendPoints = totalDistributePoints.sub(users[account].last_distPoints); uint256 distribute = allocPoints(account).mul(newDividendPoints).div(MULTIPLIER); return distribute > total_rewards ? total_rewards : distribute; } function getTotalRewards(address _sender) public view returns (uint256) { if (users[_sender].total_deposits == 0) return 0; uint256 rewards = getDistributionRewards(_sender).add(getRewardDrip().mul(allocPoints(_sender)).div(totalAllocPoints())); uint256 totalClaims = users[_sender].total_claims; uint256 maxPay = maxPayout(_sender); // Payout remaining if exceeds max payout return totalClaims.add(rewards) > maxPay ? maxPay.sub(totalClaims) : rewards; } function create(uint256 nodeTier, uint256 numNodes) external { address _sender = msg.sender; require(enabled && block.timestamp >= startTime, "Disabled"); require(nodeTier < tierAllocPoints.length && nodeTier < tierAmounts.length, "Invalid nodeTier"); if (users[_sender].total_deposits == 0) { userIndices.push(_sender); // New user users[_sender].last_distPoints = totalDistributePoints; } if (users[_sender].total_deposits != 0 && isMaxPayout(_sender)) { users[_sender].last_distPoints = totalDistributePoints; } uint256 tierPrice = tierAmounts[nodeTier].mul(numNodes); require(TOKEN.balanceOf(_sender) >= tierPrice, "Insufficient balance"); require(TOKEN.allowance(_sender, address(this)) >= tierPrice, "Insufficient allowance"); TOKEN.safeTransferFrom(_sender, address(this), tierPrice); users[_sender].total_deposits = users[_sender].total_deposits.add(tierPrice); total_deposited = total_deposited.add(tierPrice); treasury_rewards = treasury_rewards.add( tierPrice.mul(treasuryFeePercent).div(100) ); nodes[_sender][nodeTier] = nodes[_sender][nodeTier].add(numNodes); totalNodes[nodeTier] = totalNodes[nodeTier].add(numNodes); emit CreateNode(block.timestamp, _sender, numNodes); } function claim() public { dripRewards(); address _sender = msg.sender; uint256 _rewards = getDistributionRewards(_sender); if (_rewards > 0) { total_rewards = total_rewards.sub(_rewards); uint256 totalClaims = users[_sender].total_claims; uint256 maxPay = maxPayout(_sender); // Payout remaining if exceeds max payout if(totalClaims.add(_rewards) > maxPay) { _rewards = maxPay.sub(totalClaims); } users[_sender].total_claims = users[_sender].total_claims.add(_rewards); total_claimed = total_claimed.add(_rewards); IERC20(TOKEN).safeTransfer(_sender, _rewards); users[_sender].last_distPoints = totalDistributePoints; } } function _compound(uint256 nodeTier, uint256 numNodes) internal { address _sender = msg.sender; require(enabled && block.timestamp >= startTime, "Disabled"); require(nodeTier < tierAllocPoints.length && nodeTier < tierAmounts.length, "Invalid nodeTier"); if (users[_sender].total_deposits == 0) { userIndices.push(_sender); // New user users[_sender].last_distPoints = totalDistributePoints; } if (users[_sender].total_deposits != 0 && isMaxPayout(_sender)) { users[_sender].last_distPoints = totalDistributePoints; } uint256 tierPrice = tierAmounts[nodeTier].mul(numNodes); require(TOKEN.balanceOf(_sender) >= tierPrice, "Insufficient balance"); require(TOKEN.allowance(_sender, address(this)) >= tierPrice, "Insufficient allowance"); TOKEN.safeTransferFrom(_sender, address(this), tierPrice); users[_sender].total_deposits = users[_sender].total_deposits.add(tierPrice); total_deposited = total_deposited.add(tierPrice); treasury_rewards = treasury_rewards.add( tierPrice.mul(treasuryFeePercent).div(100) ); nodes[_sender][nodeTier] = nodes[_sender][nodeTier].add(numNodes); totalNodes[nodeTier] = totalNodes[nodeTier].add(numNodes); emit CreateNode(block.timestamp, _sender, numNodes); } function compound(uint256 nodeTier) public { uint256 rewardsPending = getTotalRewards(msg.sender); require(rewardsPending >= tierAmounts[0], "Not enough to compound"); uint256 numPossible = rewardsPending.div(tierAmounts[nodeTier]); claim(); _compound(nodeTier, numPossible); } function maxPayout(address _sender) public view returns (uint256) { return users[_sender].total_deposits.mul(maxReturnPercent).div(100); } function isMaxPayout(address _sender) public view returns (bool) { return users[_sender].total_claims >= maxPayout(_sender); } function _disperse(uint256 amount) internal { if (amount > 0 ) { totalDistributePoints = totalDistributePoints.add(amount.mul(MULTIPLIER).div(totalAllocPoints())); totalDistributeRewards = totalDistributeRewards.add(amount); total_rewards = total_rewards.add(amount); } } function dripRewards() public { uint256 drip = getRewardDrip(); if (drip > 0) { _disperse(drip); lastDripTime = block.timestamp; } } function getRewardDrip() public view returns (uint256) { if (lastDripTime < block.timestamp) { uint256 poolBalance = getBalancePool(); uint256 secondsPassed = block.timestamp.sub(lastDripTime); uint256 drip = secondsPassed.mul(poolBalance).div(dripRate); if (drip > poolBalance) { drip = poolBalance; } return drip; } return 0; } function getDayDripEstimate(address _user) external view returns (uint256) { return allocPoints(_user) > 0 && !isMaxPayout(_user) ? getBalancePool() .mul(86400) .mul(allocPoints(_user)) .div(totalAllocPoints()) .div(dripRate) : 0; } function total_users() external view returns (uint256) { return userIndices.length; } function numNodes(address _sender, uint256 _nodeId) external view returns (uint256) { return nodes[_sender][_nodeId]; } function getNodes(address _sender) external view returns (uint256[] memory) { uint256[] memory userNodes = new uint256[](tierAllocPoints.length); for (uint256 i = 0; i < tierAllocPoints.length; i++) { userNodes[i] = userNodes[i].add(nodes[_sender][i]); } return userNodes; } function getTotalNodes() external view returns (uint256[] memory) { uint256[] memory totals = new uint256[](tierAllocPoints.length); for (uint256 i = 0; i < tierAllocPoints.length; i++) { totals[i] = totals[i].add(totalNodes[i]); } return totals; } function getBalance() public view returns (uint256) { return IERC20(TOKEN).balanceOf(address(this)); } function getBalancePool() public view returns (uint256) { return getBalance().sub(total_rewards).sub(treasury_rewards); } function emergencyWithdraw(IERC20 token, uint256 amnt) external onlyDev { token.safeTransfer(dev, amnt); } }
[{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"num","type":"uint256"}],"name":"CreateNode","type":"event"},{"inputs":[],"name":"MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"allocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDev","type":"address"}],"name":"changeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTreasuryRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeTier","type":"uint256"}],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeTier","type":"uint256"},{"internalType":"uint256","name":"numNodes","type":"uint256"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dripRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dripRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amnt","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getDayDripEstimate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getDistributionRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"getNodes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardDrip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalNodes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"getTotalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"isMaxPayout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDripTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"maxPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxReturnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nodes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_nodeId","type":"uint256"}],"name":"numNodes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setDripRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"setLastDripTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxReturnPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256[]","name":"_nodes","type":"uint256[]"}],"name":"setNodes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"setStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierAllocPoints","type":"uint256[]"},{"internalType":"uint256[]","name":"_tierAmounts","type":"uint256[]"}],"name":"setTierValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTreasuryFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"components":[{"internalType":"uint256","name":"total_deposits","type":"uint256"},{"internalType":"uint256","name":"total_claims","type":"uint256"},{"internalType":"uint256","name":"last_distPoints","type":"uint256"}],"internalType":"struct Node.User","name":"_user","type":"tuple"}],"name":"setUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierAllocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalNodes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_users","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury_rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userIndices","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"total_deposits","type":"uint256"},{"internalType":"uint256","name":"total_claims","type":"uint256"},{"internalType":"uint256","name":"last_distPoints","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052670de0b6b3a76400006080908152671d24b2dfac52000060a052673bacab37b62e000060c0526200003a906000906003620000ff565b5060408051606081018252678ac7230489e8000081526801158e460913d00000602082015268022b1c8c1227a0000091810191909152620000809060019060036200015a565b503480156200008e57600080fd5b506040516200251c3803806200251c833981016040819052620000b191620001ba565b6101f4600e5562249f00600f556014600b55428111620000d25742620000d4565b805b6010556011556012805460ff19166001179055600280546001600160a01b03191633179055620001d3565b82805482825590600052602060002090810192821562000148579160200282015b828111156200014857825182906001600160401b031690559160200191906001019062000120565b5062000156929150620001a3565b5090565b82805482825590600052602060002090810192821562000148579160200282015b828111156200014857825182906001600160481b03169055916020019190600101906200017b565b5b80821115620001565760008155600101620001a4565b600060208284031215620001cc578081fd5b5051919050565b61233980620001e36000396000f3fe6080604052600436106102cd5760003560e01c80635c75dcbc116101755780639f7b4579116100dc578063c7ce956011610095578063e300e98b1161006f578063e300e98b1461082a578063e7cc62bd1461084a578063f65f4eaf1461085f578063fba1f7b014610874576102f3565b8063c7ce9560146107eb578063d326159214610800578063de560cca14610815576102f3565b80639f7b457914610727578063a87430ba14610747578063aa5f7e2614610776578063ab4e278514610796578063adf1b67e146107ab578063bcb11639146107cb576102f3565b8063740c8af71161012e578063740c8af71461068857806378e979251461069d57806382bfefc8146106b257806388a8c95c146106c757806394ac42cc146106e757806395ccea6714610707576102f3565b80635c75dcbc146105e95780635fb11d7e146105fe5780635fbb48dc1461061e57806363584ecd1461063e578063648acb09146106535780636af904c614610673576102f3565b80632ae2707111610234578063486af96a116101ed5780635083f17b116101c75780635083f17b1461057f57806356e1221c1461059f5780635b0d2d8c146105bf5780635b2f3c8e146105d4576102f3565b8063486af96a146105285780634b3dd5b5146105555780634e71d92d1461056a576102f3565b80632ae27071146104685780632bcf161c14610488578063328d8f72146104a857806335771fe0146104c85780633e0a322d146104e857806344886d7014610508576102f3565b80631fa36cbe116102865780631fa36cbe146103a4578063211aea02146103b95780632365d7bc146103e6578063238dafe0146104065780632702dfe714610428578063277e531614610448576102f3565b8063059f8b16146102f857806305c4744b1461032357806305d6bbf41461033a57806312065fe01461034f5780631d1c7b4e146103645780631ed5c6c214610384576102f3565b366102f35760405162461bcd60e51b81526004016102ea906120c7565b60405180910390fd5b600080fd5b34801561030457600080fd5b5061030d610889565b60405161031a919061224f565b60405180910390f35b34801561032f57600080fd5b50610338610895565b005b34801561034657600080fd5b5061030d6108d6565b34801561035b57600080fd5b5061030d6108dc565b34801561037057600080fd5b5061030d61037f366004611e43565b61096c565b34801561039057600080fd5b5061033861039f366004611e43565b61097e565b3480156103b057600080fd5b5061030d6109ad565b3480156103c557600080fd5b506103d96103d4366004611e43565b610a10565b60405161031a9190611eb0565b3480156103f257600080fd5b5061030d610401366004611e43565b610a37565b34801561041257600080fd5b5061041b610a55565b60405161031a9190611f5f565b34801561043457600080fd5b50610338610443366004611d27565b610a5e565b34801561045457600080fd5b5061030d610463366004611cbd565b610b21565b34801561047457600080fd5b50610338610483366004611db4565b610ba9565b34801561049457600080fd5b5061030d6104a3366004611cbd565b610c20565b3480156104b457600080fd5b506103386104c3366004611e0b565b610cc5565b3480156104d457600080fd5b5061030d6104e3366004611e43565b610d02565b3480156104f457600080fd5b50610338610503366004611e43565b610d0f565b34801561051457600080fd5b5061041b610523366004611cbd565b610d3e565b34801561053457600080fd5b50610548610543366004611cbd565b610d6e565b60405161031a9190611f1b565b34801561056157600080fd5b5061030d610e39565b34801561057657600080fd5b50610338610ea2565b34801561058b57600080fd5b5061033861059a366004611cd9565b610fab565b3480156105ab57600080fd5b506103386105ba366004611e43565b611085565b3480156105cb57600080fd5b5061030d6110b4565b3480156105e057600080fd5b506103386110d0565b3480156105f557600080fd5b5061030d6110f3565b34801561060a57600080fd5b5061030d610619366004611cbd565b6110f9565b34801561062a57600080fd5b50610338610639366004611e43565b61114b565b34801561064a57600080fd5b5061054861117a565b34801561065f57600080fd5b5061033861066e366004611e43565b611214565b34801561067f57600080fd5b5061030d611243565b34801561069457600080fd5b5061030d611249565b3480156106a957600080fd5b5061030d61124f565b3480156106be57600080fd5b506103d9611255565b3480156106d357600080fd5b506103386106e2366004611cbd565b61126d565b3480156106f357600080fd5b5061030d610702366004611cbd565b6112df565b34801561071357600080fd5b50610338610722366004611d89565b61133b565b34801561073357600080fd5b50610338610742366004611e73565b61137f565b34801561075357600080fd5b50610767610762366004611cbd565b61175c565b60405161031a93929190612277565b34801561078257600080fd5b50610338610791366004611e43565b61177d565b3480156107a257600080fd5b5061030d611802565b3480156107b757600080fd5b5061030d6107c6366004611d89565b611808565b3480156107d757600080fd5b5061030d6107e6366004611d89565b611825565b3480156107f757600080fd5b5061030d61184d565b34801561080c57600080fd5b5061030d611853565b34801561082157600080fd5b5061030d611859565b34801561083657600080fd5b5061030d610845366004611cbd565b61185f565b34801561085657600080fd5b5061030d61188e565b34801561086b57600080fd5b5061030d611894565b34801561088057600080fd5b5061030d61189a565b678ac7230489e8000081565b600a54156108d457600254600a546108ce91731a877b68bda77d78eea607443ccde667b31b0cdf916001600160a01b03909116906118a0565b6000600a555b565b60095481565b6040516370a0823160e01b8152600090731a877b68bda77d78eea607443ccde667b31b0cdf906370a0823190610916903090600401611eb0565b60206040518083038186803b15801561092e57600080fd5b505afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190611e5b565b90505b90565b60056020526000908152604090205481565b6002546001600160a01b031633146109a85760405162461bcd60e51b81526004016102ea90611f9d565b601055565b600080805b600054811015610a0a576000818152600560205260408120548154610a00926109f99291859081106109e057fe5b90600052602060002001546118f690919063ffffffff16565b8390611937565b91506001016109b2565b50905090565b60068181548110610a1d57fe5b6000918252602090912001546001600160a01b0316905081565b60008181548110610a4457fe5b600091825260209091200154905081565b60125460ff1681565b6002546001600160a01b03163314610a885760405162461bcd60e51b81526004016102ea90611f9d565b80516001600160a01b038316600090815260036020526040902054600754610abb9291610ab5919061195c565b90611937565b6007556020808201516001600160a01b03841660009081526003909252604090912060010154600854610af39291610ab5919061195c565b60085580516001600160a01b0390921660009081526003602090815260409091209283550151600190910155565b6000610b2c82610d3e565b15610b3957506000610ba4565b6001600160a01b038216600090815260036020526040812060020154600d54610b619161195c565b90506000610b8a678ac7230489e80000610b8484610b7e886110f9565b906118f6565b9061199e565b90506009548111610b9b5780610b9f565b6009545b925050505b919050565b6002546001600160a01b03163314610bd35760405162461bcd60e51b81526004016102ea90611f9d565b8051825114610bf45760405162461bcd60e51b81526004016102ea90612183565b8151610c07906000906020850190611bdd565b508051610c1b906001906020840190611bdd565b505050565b6001600160a01b038116600090815260036020526040812054610c4557506000610ba4565b6000610c72610c69610c556109ad565b610b84610c61876110f9565b610b7e610e39565b610ab585610b21565b6001600160a01b038416600090815260036020526040812060010154919250610c9a8561185f565b905080610ca78385611937565b11610cb25782610cbc565b610cbc818361195c565b95945050505050565b6002546001600160a01b03163314610cef5760405162461bcd60e51b81526004016102ea90611f9d565b6012805460ff1916911515919091179055565b60018181548110610a4457fe5b6002546001600160a01b03163314610d395760405162461bcd60e51b81526004016102ea90611f9d565b601155565b6000610d498261185f565b6001600160a01b03831660009081526003602052604090206001015410159050919050565b600054606090819067ffffffffffffffff81118015610d8c57600080fd5b50604051908082528060200260200182016040528015610db6578160200160208202803683370190505b50905060005b600054811015610e32576001600160a01b03841660009081526004602090815260408083208484529091529020548251610e139190849084908110610dfd57fe5b602002602001015161193790919063ffffffff16565b828281518110610e1f57fe5b6020908102919091010152600101610dbc565b5092915050565b6000426010541015610e9c576000610e4f6110b4565b90506000610e686010544261195c90919063ffffffff16565b90506000610e85600f54610b8485856118f690919063ffffffff16565b905082811115610e925750815b9250610969915050565b50600090565b610eaa6110d0565b336000610eb682610b21565b90508015610fa757600954610ecb908261195c565b6009556001600160a01b03821660009081526003602052604081206001015490610ef48461185f565b905080610f018385611937565b1115610f1457610f11818361195c565b92505b6001600160a01b038416600090815260036020526040902060010154610f3a9084611937565b6001600160a01b038516600090815260036020526040902060010155600854610f639084611937565b600855610f85731a877b68bda77d78eea607443ccde667b31b0cdf85856118a0565b5050600d546001600160a01b0383166000908152600360205260409020600201555b5050565b6002546001600160a01b03163314610fd55760405162461bcd60e51b81526004016102ea90611f9d565b60005b8151811015610c1b57611031828281518110610ff057fe5b6020908102919091018101516001600160a01b038616600090815260048352604080822086835284528082205460059094529020549091610ab5919061195c565b600082815260056020526040902055815182908290811061104e57fe5b6020908102919091018101516001600160a01b03851660009081526004835260408082208583529093529190912055600101610fd8565b6002546001600160a01b031633146110af5760405162461bcd60e51b81526004016102ea90611f9d565b600b55565b6000610966600a546110ca6009546110ca6108dc565b9061195c565b60006110da610e39565b905080156110f0576110eb816119e0565b426010555b50565b600b5481565b600080805b600054811015610e32576001600160a01b03841660009081526004602090815260408083208484529091528120548154611141926109f99291859081106109e057fe5b91506001016110fe565b6002546001600160a01b031633146111755760405162461bcd60e51b81526004016102ea90611f9d565b600f55565b600054606090819067ffffffffffffffff8111801561119857600080fd5b506040519080825280602002602001820160405280156111c2578160200160208202803683370190505b50905060005b600054811015610a0a576111f56005600083815260200190815260200160002054838381518110610dfd57fe5b82828151811061120157fe5b60209081029190910101526001016111c8565b6002546001600160a01b0316331461123e5760405162461bcd60e51b81526004016102ea90611f9d565b600e55565b60085481565b600e5481565b60115481565b731a877b68bda77d78eea607443ccde667b31b0cdf81565b6002546001600160a01b031633146112975760405162461bcd60e51b81526004016102ea90611f9d565b6001600160a01b0381166112bd5760405162461bcd60e51b81526004016102ea906120f2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806112eb836110f9565b1180156112fe57506112fc82610d3e565b155b611309576000611335565b611335600f54610b8461131a6109ad565b610b84611326876110f9565b610b7e62015180610b7e6110b4565b92915050565b6002546001600160a01b031633146113655760405162461bcd60e51b81526004016102ea90611f9d565b600254610fa7906001600160a01b038481169116836118a0565b601254339060ff16801561139557506011544210155b6113b15760405162461bcd60e51b81526004016102ea906121ac565b600054831080156113c3575060015483105b6113df5760405162461bcd60e51b81526004016102ea90612118565b6001600160a01b03811660009081526003602052604090205461145c5760068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038316908117909155600d54600091825260036020526040909120600201555b6001600160a01b03811660009081526003602052604090205415801590611487575061148781610d3e565b156114ac57600d546001600160a01b0382166000908152600360205260409020600201555b60006114bf83600186815481106109e057fe5b6040516370a0823160e01b81529091508190731a877b68bda77d78eea607443ccde667b31b0cdf906370a08231906114fb908690600401611eb0565b60206040518083038186803b15801561151357600080fd5b505afa158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190611e5b565b10156115695760405162461bcd60e51b81526004016102ea90612064565b604051636eb1769f60e11b81528190731a877b68bda77d78eea607443ccde667b31b0cdf9063dd62ed3e906115a49086903090600401611ec4565b60206040518083038186803b1580156115bc57600080fd5b505afa1580156115d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f49190611e5b565b10156116125760405162461bcd60e51b81526004016102ea90612034565b611632731a877b68bda77d78eea607443ccde667b31b0cdf833084611a35565b6001600160a01b0382166000908152600360205260409020546116559082611937565b6001600160a01b03831660009081526003602052604090205560075461167b9082611937565b600755600b546116a09061169790606490610b849085906118f6565b600a5490611937565b600a556001600160a01b03821660009081526004602090815260408083208784529091529020546116d19084611937565b6001600160a01b03831660009081526004602090815260408083208884528252808320939093556005905220546117089084611937565b6000858152600560205260409081902091909155517fddc82401ab579d868e816af720a563cdf9f9d0350abb3fa3266bcf33dd4f48ab9061174e90429085908790612258565b60405180910390a150505050565b60036020526000908152604090208054600182015460029092015490919083565b600061178833610c20565b9050600160008154811061179857fe5b90600052602060002001548110156117c25760405162461bcd60e51b81526004016102ea90611fcd565b60006117ee600184815481106117d457fe5b90600052602060002001548361199e90919063ffffffff16565b90506117f8610ea2565b610c1b838261137f565b600a5481565b600460209081526000928352604080842090915290825290205481565b6001600160a01b03919091166000908152600460209081526040808320938352929052205490565b600d5481565b600f5481565b60075481565b600e546001600160a01b038216600090815260036020526040812054909161133591606491610b8491906118f6565b60065490565b600c5481565b60105481565b610c1b8363a9059cbb60e01b84846040516024016118bf929190611f02565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a5c565b60008261190557506000611335565b8282028284828161191257fe5b04146119305760405162461bcd60e51b81526004016102ea90612142565b9392505050565b6000828201838110156119305760405162461bcd60e51b81526004016102ea90611ffd565b600061193083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b41565b600061193083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b6d565b80156110f057611a0f611a066119f46109ad565b610b8484678ac7230489e800006118f6565b600d5490611937565b600d55600c54611a1f9082611937565b600c55600954611a2f9082611937565b60095550565b611a56846323b872dd60e01b8585856040516024016118bf93929190611ede565b50505050565b611a6e826001600160a01b0316611ba4565b611a8a5760405162461bcd60e51b81526004016102ea90612218565b60006060836001600160a01b031683604051611aa69190611e94565b6000604051808303816000865af19150503d8060008114611ae3576040519150601f19603f3d011682016040523d82523d6000602084013e611ae8565b606091505b509150915081611b0a5760405162461bcd60e51b81526004016102ea90612092565b805115611a565780806020019051810190611b259190611e27565b611a565760405162461bcd60e51b81526004016102ea906121ce565b60008184841115611b655760405162461bcd60e51b81526004016102ea9190611f6a565b505050900390565b60008183611b8e5760405162461bcd60e51b81526004016102ea9190611f6a565b506000838581611b9a57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610b9f575050151592915050565b828054828255906000526020600020908101928215611c18579160200282015b82811115611c18578251825591602001919060010190611bfd565b50611c24929150611c28565b5090565b5b80821115611c245760008155600101611c29565b600082601f830112611c4d578081fd5b813567ffffffffffffffff811115611c63578182fd5b6020808202611c7382820161228d565b83815293508184018583018287018401881015611c8f57600080fd5b600092505b84831015611cb2578035825260019290920191908301908301611c94565b505050505092915050565b600060208284031215611cce578081fd5b8135611930816122e0565b60008060408385031215611ceb578081fd5b8235611cf6816122e0565b9150602083013567ffffffffffffffff811115611d11578182fd5b611d1d85828601611c3d565b9150509250929050565b6000808284036080811215611d3a578283fd5b8335611d45816122e0565b92506060601f1982011215611d58578182fd5b50611d63606061228d565b602084013581526040840135602082015260608401356040820152809150509250929050565b60008060408385031215611d9b578182fd5b8235611da6816122e0565b946020939093013593505050565b60008060408385031215611dc6578182fd5b823567ffffffffffffffff80821115611ddd578384fd5b611de986838701611c3d565b93506020850135915080821115611dfe578283fd5b50611d1d85828601611c3d565b600060208284031215611e1c578081fd5b8135611930816122f5565b600060208284031215611e38578081fd5b8151611930816122f5565b600060208284031215611e54578081fd5b5035919050565b600060208284031215611e6c578081fd5b5051919050565b60008060408385031215611e85578182fd5b50508035926020909101359150565b60008251611ea68184602087016122b4565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611f5357835183529284019291840191600101611f37565b50909695505050505050565b901515815260200190565b6000602082528251806020840152611f898160408501602087016122b4565b601f01601f19169190910160400192915050565b60208082526016908201527543616c6c6572206973206e6f7420746865206465762160501b604082015260600190565b602080825260169082015275139bdd08195b9bdd59da081d1bc818dbdb5c1bdd5b9960521b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260169082015275496e73756666696369656e7420616c6c6f77616e636560501b604082015260600190565b602080825260149082015273496e73756666696369656e742062616c616e636560601b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252601190820152702237903737ba1039b2b7321020ab20ac1760791b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526010908201526f24b73b30b634b2103737b232aa34b2b960811b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600f908201526e098cadccee8d040dad2e6dac2e8c6d608b1b604082015260600190565b602080825260089082015267111a5cd8589b195960c21b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b9283526001600160a01b03919091166020830152604082015260600190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156122ac57600080fd5b604052919050565b60005b838110156122cf5781810151838201526020016122b7565b83811115611a565750506000910152565b6001600160a01b03811681146110f057600080fd5b80151581146110f057600080fdfea264697066735822122002cec6d6057ab944ef84b9369d907147e8a74ff96a891bc704cbe8f4bce42d6f64736f6c634300060c0033000000000000000000000000000000000000000000000000000000006260e4d0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000006260e4d0
-----Decoded View---------------
Arg [0] : _startTime (uint256): 1650517200
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000006260e4d0
Deployed ByteCode Sourcemap
16017:12346:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17615:27;;-1:-1:-1;;;17615:27:0;;;;;;;:::i;:::-;;;;;;;;16017:12346;;;;17198:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17923:191;;;;;;;;;;;;;:::i;:::-;;16839:28;;;;;;;;;;;;;:::i;27972:116::-;;;;;;;;;;;;;:::i;16678:45::-;;;;;;;;;;-1:-1:-1;16678:45:0;;;;;:::i;:::-;;:::i;18549:104::-;;;;;;;;;;-1:-1:-1;18549:104:0;;;;;:::i;:::-;;:::i;19745:263::-;;;;;;;;;;;;;:::i;16730:28::-;;;;;;;;;;-1:-1:-1;16730:28:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16194:66::-;;;;;;;;;;-1:-1:-1;16194:66:0;;;;;:::i;:::-;;:::i;17172:19::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19066:392::-;;;;;;;;;;-1:-1:-1;19066:392:0;;;;;:::i;:::-;;:::i;20301:394::-;;;;;;;;;;-1:-1:-1;20301:394:0;;;;;:::i;:::-;;:::i;18777:281::-;;;;;;;;;;-1:-1:-1;18777:281:0;;;;;:::i;:::-;;:::i;20707:540::-;;;;;;;;;;-1:-1:-1;20707:540:0;;;;;:::i;:::-;;:::i;18234:89::-;;;;;;;;;;-1:-1:-1;18234:89:0;;;;;:::i;:::-;;:::i;16267:61::-;;;;;;;;;;-1:-1:-1;16267:61:0;;;;;:::i;:::-;;:::i;18122:100::-;;;;;;;;;;-1:-1:-1;18122:100:0;;;;;:::i;:::-;;:::i;25532:140::-;;;;;;;;;;-1:-1:-1;25532:140:0;;;;;:::i;:::-;;:::i;27322:328::-;;;;;;;;;;-1:-1:-1;27322:328:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26221:460::-;;;;;;;;;;;;;:::i;22710:864::-;;;;;;;;;;;;;:::i;19466:271::-;;;;;;;;;;-1:-1:-1;19466:271:0;;;;;:::i;:::-;;:::i;18331:112::-;;;;;;;;;;-1:-1:-1;18331:112:0;;;;;:::i;:::-;;:::i;28097:135::-;;;;;;;;;;;;;:::i;26021:192::-;;;;;;;;;;;;;:::i;16912:33::-;;;;;;;;;;;;;:::i;20016:277::-;;;;;;;;;;-1:-1:-1;20016:277:0;;;;;:::i;:::-;;:::i;18451:86::-;;;;;;;;;;-1:-1:-1;18451:86:0;;;;;:::i;:::-;;:::i;27662:302::-;;;;;;;;;;;;;:::i;18661:108::-;;;;;;;;;;-1:-1:-1;18661:108:0;;;;;:::i;:::-;;:::i;16804:28::-;;;;;;;;;;;;;:::i;17039:31::-;;;;;;;;;;;;;:::i;17141:24::-;;;;;;;;;;;;;:::i;16106:81::-;;;;;;;;;;;;;:::i;17768:147::-;;;;;;;;;;-1:-1:-1;17768:147:0;;;;;:::i;:::-;;:::i;26689:377::-;;;;;;;;;;-1:-1:-1;26689:377:0;;;;;:::i;:::-;;:::i;28240:120::-;;;;;;;;;;-1:-1:-1;28240:120:0;;;;;:::i;:::-;;:::i;21257:1445::-;;;;;;;;;;-1:-1:-1;21257:1445:0;;;;;:::i;:::-;;:::i;16567:37::-;;;;;;;;;;-1:-1:-1;16567:37:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;25041:321::-;;;;;;;;;;-1:-1:-1;25041:321:0;;;;;:::i;:::-;;:::i;16874:31::-;;;;;;;;;;;;;:::i;16611:60::-;;;;;;;;;;-1:-1:-1;16611:60:0;;;;;:::i;:::-;;:::i;27181:133::-;;;;;;;;;;-1:-1:-1;27181:133:0;;;;;:::i;:::-;;:::i;16996:36::-;;;;;;;;;;;;;:::i;17077:23::-;;;;;;;;;;;;;:::i;16767:30::-;;;;;;;;;;;;;:::i;25372:152::-;;;;;;;;;;-1:-1:-1;25372:152:0;;;;;:::i;:::-;;:::i;27074:99::-;;;;;;;;;;;;;:::i;16952:37::-;;;;;;;;;;;;;:::i;17107:27::-;;;;;;;;;;;;;:::i;17198:42::-;17235:5;17198:42;:::o;17923:191::-;17979:16;;:20;17975:129;;18035:3;;18040:16;;18016:41;;16144:42;;-1:-1:-1;;;;;18035:3:0;;;;18016:18;:41::i;:::-;18091:1;18072:16;:20;17975:129;17923:191::o;16839:28::-;;;;:::o;27972:116::-;28042:38;;-1:-1:-1;;;28042:38:0;;28015:7;;16144:42;;28042:23;;:38;;28074:4;;28042:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28035:45;;27972:116;;:::o;16678:45::-;;;;;;;;;;;;;:::o;18549:104::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18621:12:::1;:24:::0;18549:104::o;19745:263::-;19794:7;;;19842:136;19866:15;:22;19862:26;;19842:136;;;19951:13;;;;:10;:13;;;;;;19928:18;;19918:48;;19928:37;;19951:13;19962:1;;19928:18;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;19918:5;;:9;:48::i;:::-;19910:56;-1:-1:-1;19890:3:0;;19842:136;;;-1:-1:-1;19995:5:0;-1:-1:-1;19745:263:0;:::o;16730:28::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16730:28:0;;-1:-1:-1;16730:28:0;:::o;16194:66::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16194:66:0;:::o;17172:19::-;;;;;;:::o;19066:392::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;19216:20;;-1:-1:-1;;;;;19183:12:0;::::1;19216:20;19183:12:::0;;;:5:::1;:12;::::0;;;;:27;19163:15:::1;::::0;:74:::1;::::0;19216:20;19163:48:::1;::::0;:15;:19:::1;:48::i;:::-;:52:::0;::::1;:74::i;:::-;19145:15;:92:::0;19313:18:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;19282:12:0;::::1;;::::0;;;:5:::1;:12:::0;;;;;;;:25:::1;;::::0;19264:13:::1;::::0;:68:::1;::::0;19313:18;19264:44:::1;::::0;:13;:17:::1;:44::i;:68::-;19248:13;:84:::0;19373:20;;-1:-1:-1;;;;;19343:12:0;;::::1;19373:20;19343:12:::0;;;:5:::1;:12;::::0;;;;;;;:50;;;19432:18:::1;::::0;19404:25:::1;::::0;;::::1;:46:::0;19066:392::o;20301:394::-;20371:7;20395:20;20407:7;20395:11;:20::i;:::-;20391:34;;;-1:-1:-1;20424:1:0;20417:8;;20391:34;-1:-1:-1;;;;;20492:14:0;;20438:25;20492:14;;;:5;:14;;;;;:30;;;20466:21;;:57;;:25;:57::i;:::-;20438:85;;20534:18;20555:59;17235:5;20555:43;20580:17;20555:20;20567:7;20555:11;:20::i;:::-;:24;;:43::i;:::-;:47;;:59::i;:::-;20534:80;;20645:13;;20632:10;:26;:55;;20677:10;20632:55;;;20661:13;;20632:55;20625:62;;;;20301:394;;;;:::o;18777:281::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18929:12:::1;:19;18902:16;:23;:46;18894:74;;;;-1:-1:-1::0;;;18894:74:0::1;;;;;;;:::i;:::-;18979:34:::0;;::::1;::::0;:15:::1;::::0;:34:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;19024:26:0;;::::1;::::0;:11:::1;::::0;:26:::1;::::0;::::1;::::0;::::1;:::i;:::-;;18777:281:::0;;:::o;20707:540::-;-1:-1:-1;;;;;20794:14:0;;20770:7;20794:14;;;:5;:14;;;;;:29;20790:62;;-1:-1:-1;20851:1:0;20844:8;;20790:62;20873:15;20891:102;20927:65;20973:18;:16;:18::i;:::-;20927:41;20947:20;20959:7;20947:11;:20::i;:::-;20927:15;:13;:15::i;:65::-;20891:31;20914:7;20891:22;:31::i;:102::-;-1:-1:-1;;;;;21026:14:0;;21004:19;21026:14;;;:5;:14;;;;;:27;;;20873:120;;-1:-1:-1;21081:18:0;21032:7;21081:9;:18::i;:::-;21064:35;-1:-1:-1;21064:35:0;21170:24;:11;21186:7;21170:15;:24::i;:::-;:33;:69;;21232:7;21170:69;;;21206:23;:6;21217:11;21206:10;:23::i;:::-;21163:76;20707:540;-1:-1:-1;;;;;20707:540:0:o;18234:89::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18297:7:::1;:18:::0;;-1:-1:-1;;18297:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18234:89::o;16267:61::-;;;;;;;;;;18122:100;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18192:9:::1;:22:::0;18122:100::o;25532:140::-;25591:4;25646:18;25656:7;25646:9;:18::i;:::-;-1:-1:-1;;;;;25615:14:0;;;;;;:5;:14;;;;;:27;;;:49;;;-1:-1:-1;25532:140:0;;;:::o;27322:328::-;27452:15;:22;27380:16;;;;27438:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27438:37:0;;27409:66;;27491:9;27486:130;27510:15;:22;27506:26;;27486:130;;;-1:-1:-1;;;;;27586:14:0;;;;;;:5;:14;;;;;;;;:17;;;;;;;;;27569:12;;:35;;27586:17;27569:9;;27601:1;;27569:12;;;;;;;;;;;;:16;;:35;;;;:::i;:::-;27554:9;27564:1;27554:12;;;;;;;;;;;;;;;;;:50;27534:3;;27486:130;;;-1:-1:-1;27633:9:0;27322:328;-1:-1:-1;;27322:328:0:o;26221:460::-;26267:7;26306:15;26291:12;;:30;26287:368;;;26338:19;26360:16;:14;:16::i;:::-;26338:38;;26391:21;26415:33;26435:12;;26415:15;:19;;:33;;;;:::i;:::-;26391:57;;26463:12;26478:44;26513:8;;26478:30;26496:11;26478:13;:17;;:30;;;;:::i;:44::-;26463:59;;26550:11;26543:4;:18;26539:77;;;-1:-1:-1;26589:11:0;26539:77;26639:4;-1:-1:-1;26632:11:0;;-1:-1:-1;;26632:11:0;26287:368;-1:-1:-1;26672:1:0;26221:460;:::o;22710:864::-;22745:13;:11;:13::i;:::-;22789:10;22771:15;22829:31;22789:10;22829:22;:31::i;:::-;22810:50;-1:-1:-1;22885:12:0;;22881:686;;22944:13;;:27;;22962:8;22944:17;:27::i;:::-;22928:13;:43;-1:-1:-1;;;;;23008:14:0;;22986:19;23008:14;;;:5;:14;;;;;:27;;;;23067:18;23014:7;23067:9;:18::i;:::-;23050:35;-1:-1:-1;23050:35:0;23160:25;:11;23176:8;23160:15;:25::i;:::-;:34;23157:108;;;23226:23;:6;23237:11;23226:10;:23::i;:::-;23215:34;;23157:108;-1:-1:-1;;;;;23311:14:0;;;;;;:5;:14;;;;;:27;;;:41;;23343:8;23311:31;:41::i;:::-;-1:-1:-1;;;;;23281:14:0;;;;;;:5;:14;;;;;:27;;:71;23383:13;;:27;;23401:8;23383:17;:27::i;:::-;23367:13;:43;23427:45;16144:42;23454:7;23463:8;23427:26;:45::i;:::-;-1:-1:-1;;23534:21:0;;-1:-1:-1;;;;;23501:14:0;;;;;;:5;:14;;;;;:30;;:54;22881:686;22710:864;;:::o;19466:271::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;19556:9:::1;19552:178;19575:6;:13;19571:1;:17;19552:178;;;19626:50;19666:6;19673:1;19666:9;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19644:12:0;::::1;;::::0;;;:5:::1;:12:::0;;;;;;:15;;;;;;;;;19626:10:::1;:13:::0;;;;;;19666:9;;19626:34:::1;::::0;:13;:17:::1;:34::i;:50::-;19610:13;::::0;;;:10:::1;:13;::::0;;;;:66;19709:9;;:6;;19621:1;;19709:9;::::1;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19691:12:0;::::1;;::::0;;;:5:::1;:12:::0;;;;;;:15;;;;;;;;;;:27;19590:3:::1;;19552:178;;18331:112:::0;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18407:18:::1;:28:::0;18331:112::o;28097:135::-;28144:7;28171:53;28207:16;;28171:31;28188:13;;28171:12;:10;:12::i;:::-;:16;;:31::i;26021:192::-;26062:12;26077:15;:13;:15::i;:::-;26062:30;-1:-1:-1;26109:8:0;;26105:101;;26134:15;26144:4;26134:9;:15::i;:::-;26179;26164:12;:30;26105:101;26021:192;:::o;16912:33::-;;;;:::o;20016:277::-;20075:7;;;20123:140;20147:15;:22;20143:26;;20123:140;;;-1:-1:-1;;;;;20232:14:0;;;;;;:5;:14;;;;;;;;:17;;;;;;;;;20209:18;;20199:52;;20209:41;;20232:17;20247:1;;20209:18;;;;;20199:52;20191:60;-1:-1:-1;20171:3:0;;20123:140;;18451:86;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18514:8:::1;:15:::0;18451:86::o;27662:302::-;27779:15;:22;27710:16;;;;27765:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27765:37:0;;27739:63;;27818:9;27813:120;27837:15;:22;27833:26;;27813:120;;;27893:28;27907:10;:13;27918:1;27907:13;;;;;;;;;;;;27893:6;27900:1;27893:9;;;;;;;:28;27881:6;27888:1;27881:9;;;;;;;;;;;;;;;;;:40;27861:3;;27813:120;;18661:108;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;18735:16:::1;:26:::0;18661:108::o;16804:28::-;;;;:::o;17039:31::-;;;;:::o;17141:24::-;;;;:::o;16106:81::-;16144:42;16106:81;:::o;17768:147::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17847:20:0;::::1;17839:45;;;;-1:-1:-1::0;;;17839:45:0::1;;;;;;;:::i;:::-;17895:3;:12:::0;;-1:-1:-1;;;;;;17895:12:0::1;-1:-1:-1::0;;;;;17895:12:0;;;::::1;::::0;;;::::1;::::0;;17768:147::o;26689:377::-;26755:7;26816:1;26795:18;26807:5;26795:11;:18::i;:::-;:22;:45;;;;;26822:18;26834:5;26822:11;:18::i;:::-;26821:19;26795:45;:263;;27057:1;26795:263;;;26860:177;27028:8;;26860:141;26982:18;:16;:18::i;:::-;26860:95;26936:18;26948:5;26936:11;:18::i;:::-;26860:49;26903:5;26860:16;:14;:16::i;:177::-;26775:283;26689:377;-1:-1:-1;;26689:377:0:o;28240:120::-;17710:3;;-1:-1:-1;;;;;17710:3:0;17696:10;:17;17688:52;;;;-1:-1:-1;;;17688:52:0;;;;;;;:::i;:::-;28342:3:::1;::::0;28323:29:::1;::::0;-1:-1:-1;;;;;28323:18:0;;::::1;::::0;28342:3:::1;28347:4:::0;28323:18:::1;:29::i;21257:1445::-:0;21376:7;;21347:10;;21376:7;;:39;;;;;21406:9;;21387:15;:28;;21376:39;21368:60;;;;-1:-1:-1;;;21368:60:0;;;;;;;:::i;:::-;21458:15;:22;21447:33;;:66;;;;-1:-1:-1;21495:11:0;:18;21484:29;;21447:66;21439:95;;;;-1:-1:-1;;;21439:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21551:14:0;;;;;;:5;:14;;;;;:29;21547:173;;21602:11;:25;;;;;;;;;;;;-1:-1:-1;;;;;;21602:25:0;-1:-1:-1;;;;;21602:25:0;;;;;;;;21687:21;;-1:-1:-1;21654:14:0;;;:5;21602:25;21654:14;;;;;:30;;:54;21547:173;-1:-1:-1;;;;;21735:14:0;;;;;;:5;:14;;;;;:29;:34;;;;:58;;;21773:20;21785:7;21773:11;:20::i;:::-;21731:145;;;21843:21;;-1:-1:-1;;;;;21810:14:0;;;;;;:5;:14;;;;;:30;;:54;21731:145;21888:17;21908:35;21934:8;21908:11;21920:8;21908:21;;;;;;;:35;21972:24;;-1:-1:-1;;;21972:24:0;;21888:55;;-1:-1:-1;21888:55:0;;16144:42;;21972:15;;:24;;21988:7;;21972:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;21964:70;;;;-1:-1:-1;;;21964:70:0;;;;;;;:::i;:::-;22053:39;;-1:-1:-1;;;22053:39:0;;22096:9;;16144:42;;22053:15;;:39;;22069:7;;22086:4;;22053:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;22045:87;;;;-1:-1:-1;;;22045:87:0;;;;;;;:::i;:::-;22143:57;16144:42;22166:7;22183:4;22190:9;22143:22;:57::i;:::-;-1:-1:-1;;;;;22245:14:0;;;;;;:5;:14;;;;;:29;:44;;22279:9;22245:33;:44::i;:::-;-1:-1:-1;;;;;22213:14:0;;;;;;:5;:14;;;;;:76;22328:15;;:30;;22348:9;22328:19;:30::i;:::-;22310:15;:48;22437:18;;22388:88;;22423:42;;22461:3;;22423:33;;:9;;:13;:33::i;:42::-;22388:16;;;:20;:88::i;:::-;22369:16;:107;-1:-1:-1;;;;;22524:14:0;;;;;;:5;:14;;;;;;;;:24;;;;;;;;;:38;;22553:8;22524:28;:38::i;:::-;-1:-1:-1;;;;;22497:14:0;;;;;;:5;:14;;;;;;;;:24;;;;;;;;:65;;;;22596:10;:20;;;;:34;;22621:8;22596:24;:34::i;:::-;22573:20;;;;:10;:20;;;;;;;:57;;;;22648:46;;;;;22659:15;;22676:7;;22685:8;;22648:46;:::i;:::-;;;;;;;;21257:1445;;;;:::o;16567:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25041:321::-;25093:22;25118:27;25134:10;25118:15;:27::i;:::-;25093:52;;25182:11;25194:1;25182:14;;;;;;;;;;;;;;;;25164;:32;;25156:67;;;;-1:-1:-1;;;25156:67:0;;;;;;;:::i;:::-;25234:19;25256:41;25275:11;25287:8;25275:21;;;;;;;;;;;;;;;;25256:14;:18;;:41;;;;:::i;:::-;25234:63;;25306:7;:5;:7::i;:::-;25322:32;25332:8;25342:11;25322:9;:32::i;16874:31::-;;;;:::o;16611:60::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;27181:133::-;-1:-1:-1;;;;;27283:14:0;;;;27256:7;27283:14;;;:5;:14;;;;;;;;:23;;;;;;;;;27181:133::o;16996:36::-;;;;:::o;17077:23::-;;;;:::o;16767:30::-;;;;:::o;25372:152::-;25490:16;;-1:-1:-1;;;;;25456:14:0;;25429:7;25456:14;;;:5;:14;;;;;:29;25429:7;;25456:60;;25512:3;;25456:51;;:29;:33;:51::i;27074:99::-;27147:11;:18;27074:99;:::o;16952:37::-;;;;:::o;17107:27::-;;;;:::o;12744:177::-;12827:86;12847:5;12877:23;;;12902:2;12906:5;12854:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12854:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12854:58:0;-1:-1:-1;;;;;;12854:58:0;;;;;;;;;;12827:19;:86::i;6208:471::-;6266:7;6511:6;6507:47;;-1:-1:-1;6541:1:0;6534:8;;6507:47;6578:5;;;6582:1;6578;:5;:1;6602:5;;;;;:10;6594:56;;;;-1:-1:-1;;;6594:56:0;;;;;;;:::i;:::-;6670:1;6208:471;-1:-1:-1;;;6208:471:0:o;4878:181::-;4936:7;4968:5;;;4992:6;;;;4984:46;;;;-1:-1:-1;;;4984:46:0;;;;;;;:::i;5334:136::-;5392:7;5419:43;5423:1;5426;5419:43;;;;;;;;;;;;;;;;;:3;:43::i;7147:132::-;7205:7;7232:39;7236:1;7239;7232:39;;;;;;;;;;;;;;;;;:3;:39::i;25680:333::-;25739:10;;25735:271;;25791:73;25817:46;25844:18;:16;:18::i;:::-;25817:22;:6;17235:5;25817:10;:22::i;:46::-;25791:21;;;:25;:73::i;:::-;25767:21;:97;25904:22;;:34;;25931:6;25904:26;:34::i;:::-;25879:22;:59;25969:13;;:25;;25987:6;25969:17;:25::i;:::-;25953:13;:41;25680:333;:::o;12929:205::-;13030:96;13050:5;13080:27;;;13109:4;13115:2;13119:5;13057:68;;;;;;;;;;:::i;13030:96::-;12929:205;;;;:::o;14788:1115::-;15393:27;15401:5;-1:-1:-1;;;;;15393:25:0;;:27::i;:::-;15385:71;;;;-1:-1:-1;;;15385:71:0;;;;;;;:::i;:::-;15530:12;15544:23;15579:5;-1:-1:-1;;;;;15571:19:0;15591:4;15571:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15529:67;;;;15615:7;15607:52;;;;-1:-1:-1;;;15607:52:0;;;;;;;:::i;:::-;15676:17;;:21;15672:224;;15818:10;15807:30;;;;;;;;;;;;:::i;:::-;15799:85;;;;-1:-1:-1;;;15799:85:0;;;;;;;:::i;5765:192::-;5851:7;5887:12;5879:6;;;;5871:29;;;;-1:-1:-1;;;5871:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5923:5:0;;;5765:192::o;7767:345::-;7853:7;7955:12;7948:5;7940:28;;;;-1:-1:-1;;;7940:28:0;;;;;;;;:::i;:::-;;7979:9;7995:1;7991;:5;;;;;;;7767:345;-1:-1:-1;;;;;7767:345:0:o;10123:619::-;10183:4;10651:20;;10494:66;10691:23;;;;;;:42;;-1:-1:-1;;10718:15:0;;;10123:619;-1:-1:-1;;10123:619:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;313:707;;430:3;423:4;415:6;411:17;407:27;397:2;;-1:-1;;438:12;397:2;485:6;472:20;24307:18;24299:6;24296:30;24293:2;;;-1:-1;;24329:12;24293:2;24374:4;;24366:6;24362:17;507:80;24374:4;24362:17;24427:15;507:80;:::i;:::-;615:21;;;498:89;-1:-1;672:14;;;647:17;;;752:27;;;;;749:36;-1:-1;746:2;;;798:1;;788:12;746:2;823:1;814:10;;808:206;833:6;830:1;827:13;808:206;;;2190:20;;901:50;;855:1;848:9;;;;;965:14;;;;993;;808:206;;;812:14;;;;;390:630;;;;:::o;2401:241::-;;2505:2;2493:9;2484:7;2480:23;2476:32;2473:2;;;-1:-1;;2511:12;2473:2;85:6;72:20;97:33;124:5;97:33;:::i;2913:502::-;;;3059:2;3047:9;3038:7;3034:23;3030:32;3027:2;;;-1:-1;;3065:12;3027:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3117:63;-1:-1;3245:2;3230:18;;3217:32;3269:18;3258:30;;3255:2;;;-1:-1;;3291:12;3255:2;3321:78;3391:7;3382:6;3371:9;3367:22;3321:78;:::i;:::-;3311:88;;;3021:394;;;;;:::o;3422:409::-;;;3552:9;3543:7;3539:23;3564:3;3539:23;3535:33;3532:2;;;-1:-1;;3571:12;3532:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3623:63;-1:-1;1590:4;-1:-1;;1569:19;;1565:30;1562:2;;;-1:-1;;1598:12;1562:2;;1626:20;1590:4;1626:20;:::i;:::-;3723:2;3787:9;3783:22;2190:20;1720:16;1713:75;1911:22;3787:9;1911:22;2190:20;3723:2;1876:5;1872:16;1865:75;1590:4;3787:9;2066:22;2190:20;1911:22;2031:5;2027:16;2020:75;3731:84;;;;3526:305;;;;;:::o;3838:366::-;;;3959:2;3947:9;3938:7;3934:23;3930:32;3927:2;;;-1:-1;;3965:12;3927:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4017:63;4117:2;4156:22;;;;2190:20;;-1:-1;;;3921:283::o;4211:638::-;;;4382:2;4370:9;4361:7;4357:23;4353:32;4350:2;;;-1:-1;;4388:12;4350:2;4446:17;4433:31;4484:18;;4476:6;4473:30;4470:2;;;-1:-1;;4506:12;4470:2;4536:78;4606:7;4597:6;4586:9;4582:22;4536:78;:::i;:::-;4526:88;;4679:2;4668:9;4664:18;4651:32;4637:46;;4484:18;4695:6;4692:30;4689:2;;;-1:-1;;4725:12;4689:2;;4755:78;4825:7;4816:6;4805:9;4801:22;4755:78;:::i;4856:235::-;;4957:2;4945:9;4936:7;4932:23;4928:32;4925:2;;;-1:-1;;4963:12;4925:2;1105:6;1092:20;1117:30;1141:5;1117:30;:::i;5098:257::-;;5210:2;5198:9;5189:7;5185:23;5181:32;5178:2;;;-1:-1;;5216:12;5178:2;1240:6;1234:13;1252:30;1276:5;1252:30;:::i;5761:241::-;;5865:2;5853:9;5844:7;5840:23;5836:32;5833:2;;;-1:-1;;5871:12;5833:2;-1:-1;2190:20;;5827:175;-1:-1;5827:175::o;6009:263::-;;6124:2;6112:9;6103:7;6099:23;6095:32;6092:2;;;-1:-1;;6130:12;6092:2;-1:-1;2338:13;;6086:186;-1:-1;6086:186::o;6279:366::-;;;6400:2;6388:9;6379:7;6375:23;6371:32;6368:2;;;-1:-1;;6406:12;6368:2;-1:-1;;2190:20;;;6558:2;6597:22;;;2190:20;;-1:-1;6362:283::o;13767:271::-;;8103:5;24720:12;8214:52;8259:6;8254:3;8247:4;8240:5;8236:16;8214:52;:::i;:::-;8278:16;;;;;13901:137;-1:-1;;13901:137::o;14045:222::-;-1:-1;;;;;26114:54;;;;7054:37;;14172:2;14157:18;;14143:124::o;14519:349::-;-1:-1;;;;;26114:54;;;7054:37;;26114:54;;14854:2;14839:18;;6913:58;14682:2;14667:18;;14653:215::o;14875:444::-;-1:-1;;;;;26114:54;;;7054:37;;26114:54;;;;15222:2;15207:18;;7054:37;15305:2;15290:18;;13598:37;;;;15058:2;15043:18;;15029:290::o;15326:333::-;-1:-1;;;;;26114:54;;;;7054:37;;15645:2;15630:18;;13598:37;15481:2;15466:18;;15452:207::o;15666:370::-;15843:2;15857:47;;;24720:12;;15828:18;;;25252:19;;;15666:370;;15843:2;24574:14;;;;25292;;;;15666:370;7542:260;7567:6;7564:1;7561:13;7542:260;;;7628:13;;13598:37;;25107:14;;;;6806;;;;7589:1;7582:9;7542:260;;;-1:-1;15910:116;;15814:222;-1:-1;;;;;;15814:222::o;16043:210::-;25915:13;;25908:21;7897:34;;16164:2;16149:18;;16135:118::o;16515:310::-;;16662:2;16683:17;16676:47;8610:5;24720:12;25264:6;16662:2;16651:9;16647:18;25252:19;8704:52;8749:6;25292:14;16651:9;25292:14;16662:2;8730:5;8726:16;8704:52;:::i;:::-;1569:19;27265:14;-1:-1;;27261:28;8768:39;;;;25292:14;8768:39;;16633:192;-1:-1;;16633:192::o;16832:416::-;17032:2;17046:47;;;9044:2;17017:18;;;25252:19;-1:-1;;;25292:14;;;9060:45;9124:12;;;17003:245::o;17255:416::-;17455:2;17469:47;;;9375:2;17440:18;;;25252:19;-1:-1;;;25292:14;;;9391:45;9455:12;;;17426:245::o;17678:416::-;17878:2;17892:47;;;9706:2;17863:18;;;25252:19;9742:29;25292:14;;;9722:50;9791:12;;;17849:245::o;18101:416::-;18301:2;18315:47;;;10042:2;18286:18;;;25252:19;-1:-1;;;25292:14;;;10058:45;10122:12;;;18272:245::o;18524:416::-;18724:2;18738:47;;;10373:2;18709:18;;;25252:19;-1:-1;;;25292:14;;;10389:43;10451:12;;;18695:245::o;18947:416::-;19147:2;19161:47;;;19132:18;;;25252:19;10738:34;25292:14;;;10718:55;10792:12;;;19118:245::o;19370:416::-;19570:2;19584:47;;;11043:2;19555:18;;;25252:19;-1:-1;;;25292:14;;;11059:40;11118:12;;;19541:245::o;19793:416::-;19993:2;20007:47;;;11369:2;19978:18;;;25252:19;-1:-1;;;25292:14;;;11385:35;11439:12;;;19964:245::o;20216:416::-;20416:2;20430:47;;;11690:2;20401:18;;;25252:19;-1:-1;;;25292:14;;;11706:39;11764:12;;;20387:245::o;20639:416::-;20839:2;20853:47;;;12015:2;20824:18;;;25252:19;12051:34;25292:14;;;12031:55;-1:-1;;;12106:12;;;12099:25;12143:12;;;20810:245::o;21062:416::-;21262:2;21276:47;;;12394:2;21247:18;;;25252:19;-1:-1;;;25292:14;;;12410:38;12467:12;;;21233:245::o;21485:416::-;21685:2;21699:47;;;12718:1;21670:18;;;25252:19;-1:-1;;;25292:14;;;12733:31;12783:12;;;21656:245::o;21908:416::-;22108:2;22122:47;;;13034:2;22093:18;;;25252:19;13070:34;25292:14;;;13050:55;-1:-1;;;13125:12;;;13118:34;13171:12;;;22079:245::o;22331:416::-;22531:2;22545:47;;;13422:2;22516:18;;;25252:19;13458:33;25292:14;;;13438:54;13511:12;;;22502:245::o;22754:222::-;13598:37;;;22881:2;22866:18;;22852:124::o;22983:444::-;13598:37;;;-1:-1;;;;;26114:54;;;;23330:2;23315:18;;7054:37;23413:2;23398:18;;13598:37;23166:2;23151:18;;23137:290::o;23434:444::-;13598:37;;;23781:2;23766:18;;13598:37;;;;23864:2;23849:18;;13598:37;23617:2;23602:18;;23588:290::o;23885:256::-;23947:2;23941:9;23973:17;;;24048:18;24033:34;;24069:22;;;24030:62;24027:2;;;24105:1;;24095:12;24027:2;23947;24114:22;23925:216;;-1:-1;23925:216::o;26921:268::-;26986:1;26993:101;27007:6;27004:1;27001:13;26993:101;;;27074:11;;;27068:18;27055:11;;;27048:39;27029:2;27022:10;26993:101;;;27109:6;27106:1;27103:13;27100:2;;;-1:-1;;26986:1;27156:16;;27149:27;26970:219::o;27302:117::-;-1:-1;;;;;26114:54;;27361:35;;27351:2;;27410:1;;27400:12;27566:111;27647:5;25915:13;25908:21;27625:5;27622:32;27612:2;;27668:1;;27658:12
Swarm Source
ipfs://02cec6d6057ab944ef84b9369d907147e8a74ff96a891bc704cbe8f4bce42d6f
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.