Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 495 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 11575750 | 1493 days ago | IN | 0 ETH | 0.00830979 | ||||
Claim | 11534092 | 1499 days ago | IN | 0 ETH | 0.00341624 | ||||
Withdraw | 11534088 | 1499 days ago | IN | 0 ETH | 0.00486572 | ||||
Withdraw | 11472977 | 1509 days ago | IN | 0 ETH | 0.01256931 | ||||
Claim | 11472939 | 1509 days ago | IN | 0 ETH | 0.01714006 | ||||
Withdraw | 11433876 | 1515 days ago | IN | 0 ETH | 0.00147935 | ||||
Withdraw | 11419925 | 1517 days ago | IN | 0 ETH | 0.00307249 | ||||
Claim | 11419923 | 1517 days ago | IN | 0 ETH | 0.00354515 | ||||
Withdraw | 11407977 | 1519 days ago | IN | 0 ETH | 0.00217782 | ||||
Withdraw | 11407975 | 1519 days ago | IN | 0 ETH | 0.00512573 | ||||
Claim | 11406166 | 1519 days ago | IN | 0 ETH | 0.00433955 | ||||
Withdraw | 11406133 | 1519 days ago | IN | 0 ETH | 0.0064432 | ||||
Withdraw | 11405425 | 1519 days ago | IN | 0 ETH | 0.00325787 | ||||
Claim | 11405417 | 1519 days ago | IN | 0 ETH | 0.00376001 | ||||
Claim | 11394509 | 1521 days ago | IN | 0 ETH | 0.00153912 | ||||
Withdraw | 11391417 | 1521 days ago | IN | 0 ETH | 0.00177831 | ||||
Claim | 11391416 | 1521 days ago | IN | 0 ETH | 0.00272109 | ||||
Withdraw | 11386395 | 1522 days ago | IN | 0 ETH | 0.00335181 | ||||
Claim | 11386390 | 1522 days ago | IN | 0 ETH | 0.00549716 | ||||
Claim | 11385488 | 1522 days ago | IN | 0 ETH | 0.00386391 | ||||
Withdraw | 11385482 | 1522 days ago | IN | 0 ETH | 0.0044712 | ||||
Claim | 11385365 | 1522 days ago | IN | 0 ETH | 0.00440057 | ||||
Withdraw | 11385354 | 1522 days ago | IN | 0 ETH | 0.00539174 | ||||
Claim | 11384526 | 1522 days ago | IN | 0 ETH | 0.00289793 | ||||
Withdraw | 11384512 | 1522 days ago | IN | 0 ETH | 0.00381367 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
StakingDextoken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-20 */ /** *Submitted for verification at Etherscan.io on 2020-11-13 */ pragma solidity 0.5.17; library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } 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); } /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } 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 Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @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]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } 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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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"); } } } contract ReentrancyGuard { bool private _notEntered; constructor () internal { // Storing an initial non-zero value makes deployment a bit more // expensive, but in exchange the refund on every call to nonReentrant // will be lower in amount. Since refunds are capped to a percetange of // the total transaction's gas, it is best to keep them low in cases // like this one, to increase the likelihood of the full refund coming // into effect. _notEntered = true; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } } contract Ownable { address public owner; address public newOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() public { owner = msg.sender; newOwner = address(0); } modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyNewOwner() { require(msg.sender != address(0)); require(msg.sender == newOwner); _; } function isOwner(address account) public view returns (bool) { if(account == owner) { return true; } else { return false; } } function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0)); newOwner = _newOwner; } function acceptOwnership() public onlyNewOwner { emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract Pausable is Ownable { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () public { _paused = false; } modifier whenNotPaused() { require(!_paused); _; } modifier whenPaused() { require(_paused); _; } function paused() public view returns (bool) { return _paused; } function pause() public onlyOwner whenNotPaused { _paused = true; emit Paused(msg.sender); } function unpause() public onlyOwner whenPaused { _paused = false; emit Unpaused(msg.sender); } } contract StakingDextoken is ReentrancyGuard, Pausable { using SafeERC20 for IERC20; using SafeMath for uint; event Freeze(address indexed account); event Unfreeze(address indexed account); event TokenDeposit(address account, uint amount); event TokenWithdraw(address account, uint amount); event TokenClaim(address account, uint amount); event RewardAdded(uint reward); uint public periodFinish = 0; uint public rewardRate = 0; uint public lastUpdateTime; uint public rewardPerTokenStored = 0; uint public rewardRounds = 0; uint public rewardsDuration = 0; bool public inStaking = true; // BAL beneficial address address public beneficial = address(this); // User award balance mapping(address => uint) public rewards; mapping(address => uint) public userRewardPerTokenPaid; uint private _start; uint private _end; /// Staking token IERC20 private _token0; /// Reward token IERC20 private _token1; /// Total rewards uint private _rewards; uint private _remainingRewards; /// Total amount of user staking tokens uint private _totalSupply; mapping(address => bool) public frozenAccount; /// The staking users mapping(address => bool) public stakeHolders; /// The amount of tokens staked mapping(address => uint) private _balances; /// The remaining withdrawals of staked tokens mapping(address => uint) internal withdrawalOf; /// The remaining withdrawals of reward tokens mapping(address => uint) internal claimOf; constructor (address token0, address token1) public { require(token0 != address(0), "DEXToken: zero address"); require(token1 != address(0), "DEXToken: zero address"); _token0 = IERC20(token0); _token1 = IERC20(token1); } modifier notFrozen(address _account) { require(!frozenAccount[_account]); _; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function setBeneficial(address _beneficial) onlyOwner external { require(_beneficial != address(this), "setBeneficial: can not send to self"); require(_beneficial != address(0), "setBeneficial: can not burn tokens"); beneficial = _beneficial; } /// Capture BAL tokens or any other tokens function capture(address _token, uint amount) onlyOwner external { require(_token != address(_token0), "capture: can not capture staking tokens"); require(_token != address(_token1), "capture: can not capture reward tokens"); require(beneficial != address(this), "capture: can not send to self"); require(beneficial != address(0), "capture: can not burn tokens"); IERC20(_token).safeTransfer(beneficial, amount); } function lastTimeRewardApplicable() public view returns (uint) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint) { if (getTotalStakes() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(getTotalStakes()) ); } function earned(address account) public view returns (uint) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } /// setup the staking round function setRewardRound(uint round, uint reward, uint start, uint end) external onlyOwner { require(block.timestamp > periodFinish, "setRewardRound: previous rewards period not complete"); require(rewardRounds < round, "setRewardRound: this round completed"); rewardRounds = round; _rewards = reward; _start = start; _end = end; rewardsDuration = _end.sub(_start); inStaking = false; } /// launch the staking round function notifyRewards() external onlyOwner updateReward(address(0)) { // staking started if (inStaking == true) { return; } if (block.timestamp >= periodFinish) { rewardRate = _rewards.div(rewardsDuration); } else { uint remaining = periodFinish.sub(block.timestamp); uint leftover = remaining.mul(rewardRate); rewardRate = _rewards.add(leftover).div(rewardsDuration); _remainingRewards = leftover; } // Ensure the provided reward amount is not more than the balance in the contract. // This keeps the reward rate in the right range, preventing overflows due to // very high values of rewardRate in the earned and rewardsPerToken functions; // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow. uint balance = _token1.balanceOf(address(this)); require(rewardRate <= balance.div(rewardsDuration), "notifyRewards: provided reward too high"); inStaking = true; lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(rewardsDuration); emit RewardAdded(_rewards); } function addStakeholder(address _stakeholder) internal { stakeHolders[_stakeholder] = true; } function removeStakeholder(address _stakeholder) internal { stakeHolders[_stakeholder] = false; } /// Deposit staking tokens function deposit(uint amount) external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(amount > 0, "deposit: cannot stake 0"); require(msg.sender != address(0), "withdraw: zero address"); require(_token0.balanceOf(msg.sender) >= amount, "deposit: insufficient balance"); _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); addStakeholder(msg.sender); _token0.safeTransferFrom(msg.sender, address(this), amount); emit TokenDeposit(msg.sender, amount); } /// Withdraw staked tokens function withdraw(uint amount) external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(amount > 0, "withdraw: amount invalid"); require(msg.sender != address(0), "withdraw: zero address"); /// Not overflow require(_balances[msg.sender] >= amount); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); /// Keep track user withdraws withdrawalOf[msg.sender] = withdrawalOf[msg.sender].add(amount); if (_balances[msg.sender] == 0) { removeStakeholder(msg.sender); } _token0.safeTransfer(msg.sender, amount); emit TokenWithdraw(msg.sender, amount); } /// Claim reward tokens function claim() external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(msg.sender != address(0), "claim: zero address"); require(block.timestamp > getEndTimestamp(), "claim: claim not open"); require(block.timestamp > periodFinish, "claim: current staking period not complete"); uint reward = earned(msg.sender); /// Not overflow require(_token1.balanceOf(address(this)) >= reward, "claim: insufficient balance"); require(reward > 0, "claim: zero rewards"); rewards[msg.sender] = 0; claimOf[msg.sender] = reward; _token1.safeTransfer(msg.sender, reward); emit TokenClaim(msg.sender, reward); } function freezeAccount(address account) external onlyOwner returns (bool) { require(!frozenAccount[account], "ERC20: account frozen"); frozenAccount[account] = true; emit Freeze(account); return true; } function unfreezeAccount(address account) external onlyOwner returns (bool) { require(frozenAccount[account], "ERC20: account not frozen"); frozenAccount[account] = false; emit Unfreeze(account); return true; } function getWithdrawalOf(address _stakeholder) external view returns (uint) { return withdrawalOf[_stakeholder]; } function getClaimOf(address _stakeholder) external view returns (uint) { return claimOf[_stakeholder]; } /// Get remaining rewards of the time period function remainingRewards() external view returns(uint) { return _remainingRewards; } /// Retrieve the stake for a stakeholder function stakeOf(address _stakeholder) external view returns (uint) { return _balances[_stakeholder]; } /// Retrieve the stake for a stakeholder function rewardOf(address _stakeholder) external view returns (uint) { return earned(_stakeholder); } /// Get total original rewards function totalRewards() external view returns (uint) { return _rewards; } function getStartTimestamp() public view returns (uint) { return _start; } function getEndTimestamp() public view returns (uint) { return _end; } /// The total supply of all staked tokens function getTotalStakes() public view returns (uint) { return _totalSupply; } function balanceOf(address account) public view returns (uint) { return _balances[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Freeze","type":"event"},{"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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficial","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"capture","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"getClaimOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"getWithdrawalOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"notifyRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_beneficial","type":"address"}],"name":"setBeneficial","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"setRewardRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeHolders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"stakeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600281905560038190556005819055600681905560075560088054600160ff1990911617610100600160a81b031916610100300217905534801561004957600080fd5b506040516123223803806123228339818101604052604081101561006c57600080fd5b50805160209091015160008054600160ff199091168117610100600160a81b03191661010033021790915580546001600160a81b03191690556001600160a01b038216610100576040805162461bcd60e51b815260206004820152601660248201527f444558546f6b656e3a207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6001600160a01b03811661015b576040805162461bcd60e51b815260206004820152601660248201527f444558546f6b656e3a207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600d80546001600160a01b039384166001600160a01b031991821617909155600e805492909316911617905561218c806101966000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c806379ba509711610146578063b6b55f25116100c3578063d55dae6e11610087578063d55dae6e1461055f578063df136d6514610585578063e26ff10a1461058d578063ebe2b12b146105b3578063f26c159f146105bb578063f2fde38b146105e15761025d565b8063b6b55f25146104fb578063c702b5df14610518578063c8f33c9114610547578063cd3daf9d1461054f578063d4ee1d90146105575761025d565b80638da5cb5b1161010a5780638da5cb5b1461049157806390a967571461049957806399656164146104a1578063afb62e56146104cd578063b414d4b6146104d55761025d565b806379ba50971461044b5780637b0a47ee1461045357806380faa57d1461045b5780638456cb59146104635780638b8763471461046b5761025d565b80633f4ba83a116101df5780635ff9c077116101a35780635ff9c077146103e757806368c33627146103ef57806369cf4c22146103f757806370a082311461038b57806374e94deb1461041d578063788649ea146104255761025d565b80633f4ba83a14610383578063426233601461038b5780634e71d92d146103b1578063504f3a83146103b95780635c975abb146103df5761025d565b80631f89f25e116102265780631f89f25e146103125780632e1a7d4d1461031a5780632f54bf6e14610339578063386a9525146103735780633be52fc41461037b5761025d565b80628cc262146102625780630700037d1461029a5780630e15561a146102c057806311ccf822146102c85780631d62ebd9146102ec575b600080fd5b6102886004803603602081101561027857600080fd5b50356001600160a01b0316610607565b60408051918252519081900360200190f35b610288600480360360208110156102b057600080fd5b50356001600160a01b031661068f565b6102886106a1565b6102d06106a8565b604080516001600160a01b039092168252519081900360200190f35b6102886004803603602081101561030257600080fd5b50356001600160a01b03166106bc565b6102886106c7565b6103376004803603602081101561033057600080fd5b50356106cd565b005b61035f6004803603602081101561034f57600080fd5b50356001600160a01b031661096e565b604080519115158252519081900360200190f35b61028861099a565b6103376109a0565b610337610bd8565b610288600480360360208110156103a157600080fd5b50356001600160a01b0316610c4c565b610337610c67565b610288600480360360208110156103cf57600080fd5b50356001600160a01b0316610fdc565b61035f610ff7565b61035f611007565b610288611010565b6102886004803603602081101561040d57600080fd5b50356001600160a01b0316611016565b610288611031565b61035f6004803603602081101561043b57600080fd5b50356001600160a01b0316611037565b61033761110f565b6102886111a5565b6102886111ab565b6103376111be565b6102886004803603602081101561048157600080fd5b50356001600160a01b0316611239565b6102d061124b565b61028861125f565b610337600480360360408110156104b757600080fd5b506001600160a01b038135169060200135611265565b61028861140b565b61035f600480360360208110156104eb57600080fd5b50356001600160a01b0316611411565b6103376004803603602081101561051157600080fd5b5035611426565b6103376004803603608081101561052e57600080fd5b508035906020810135906040810135906060013561173c565b61028861180f565b610288611815565b6102d0611869565b6103376004803603602081101561057557600080fd5b50356001600160a01b0316611878565b610288611949565b61035f600480360360208110156105a357600080fd5b50356001600160a01b031661194f565b610288611964565b61035f600480360360208110156105d157600080fd5b50356001600160a01b031661196a565b610337600480360360208110156105f757600080fd5b50356001600160a01b0316611a3e565b6001600160a01b038116600090815260096020908152604080832054600a909252822054610687919061067b90670de0b6b3a76400009061066f9061065a9061064e611815565b9063ffffffff611a8f16565b61066388610c4c565b9063ffffffff611ada16565b9063ffffffff611b3316565b9063ffffffff611b7516565b90505b919050565b60096020526000908152604090205481565b600f545b90565b60085461010090046001600160a01b031681565b600061068782610607565b600b5490565b60005460ff16610724576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561074557600080fd5b3360008181526012602052604090205460ff161561076257600080fd5b3361076b611815565b6005556107766111ab565b6004556001600160a01b038116156107bd5761079181610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60008311610812576040805162461bcd60e51b815260206004820152601860248201527f77697468647261773a20616d6f756e7420696e76616c69640000000000000000604482015290519081900360640190fd5b3361085d576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526014602052604090205483111561087957600080fd5b60115461088c908463ffffffff611a8f16565b601155336000908152601460205260409020546108af908463ffffffff611a8f16565b336000908152601460209081526040808320939093556015905220546108db908463ffffffff611b7516565b336000908152601560209081526040808320939093556014905220546109045761090433611bcf565b600d54610921906001600160a01b0316338563ffffffff611bf016565b604080513381526020810185905281517f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634929181900390910190a150506000805460ff1916600117905550565b600080546001600160a01b038381166101009092041614156109925750600161068a565b50600061068a565b60075481565b60005461010090046001600160a01b031633146109bc57600080fd5b60006109c6611815565b6005556109d16111ab565b6004556001600160a01b03811615610a18576109ec81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60085460ff16151560011415610a2d57610bd5565b6002544210610a5357600754600f54610a4b9163ffffffff611b3316565b600355610aa7565b600254600090610a69904263ffffffff611a8f16565b90506000610a8260035483611ada90919063ffffffff16565b9050610a9f60075461066f83600f54611b7590919063ffffffff16565b600355601055505b600e54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d6020811015610b1c57600080fd5b5051600754909150610b3590829063ffffffff611b3316565b6003541115610b755760405162461bcd60e51b81526004018080602001828103825260278152602001806121076027913960400191505060405180910390fd5b6008805460ff19166001179055426004819055600754610b9b919063ffffffff611b7516565b600255600f5460408051918252517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505b50565b60005461010090046001600160a01b03163314610bf457600080fd5b600154600160a01b900460ff16610c0a57600080fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6001600160a01b031660009081526014602052604090205490565b60005460ff16610cbe576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff1615610cdf57600080fd5b3360008181526012602052604090205460ff1615610cfc57600080fd5b33610d05611815565b600555610d106111ab565b6004556001600160a01b03811615610d5757610d2b81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b33610d9f576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f206164647265737360681b604482015290519081900360640190fd5b610da7611031565b4211610df2576040805162461bcd60e51b815260206004820152601560248201527431b630b4b69d1031b630b4b6903737ba1037b832b760591b604482015290519081900360640190fd5b6002544211610e325760405162461bcd60e51b815260040180806020018281038252602a815260200180611ff4602a913960400191505060405180910390fd5b6000610e3d33610607565b600e54604080516370a0823160e01b8152306004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b50511015610f0c576040805162461bcd60e51b815260206004820152601b60248201527f636c61696d3a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b60008111610f57576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f207265776172647360681b604482015290519081900360640190fd5b33600081815260096020908152604080832083905560169091529020829055600e54610f8f916001600160a01b039091169083611bf0565b604080513381526020810183905281517ffcd6a0cf5a625280133c034863698c011fa0aefbee7f3be397f86fabd9891852929181900390910190a150506000805460ff1916600117905550565b6001600160a01b031660009081526015602052604090205490565b600154600160a01b900460ff1690565b60085460ff1681565b60115490565b6001600160a01b031660009081526016602052604090205490565b600c5490565b6000805461010090046001600160a01b0316331461105457600080fd5b6001600160a01b03821660009081526012602052604090205460ff166110c1576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b3361111957600080fd5b6001546001600160a01b0316331461113057600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60035481565b60006111b942600254611c47565b905090565b60005461010090046001600160a01b031633146111da57600080fd5b600154600160a01b900460ff16156111f157600080fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600a6020526000908152604090205481565b60005461010090046001600160a01b031681565b60065481565b60005461010090046001600160a01b0316331461128157600080fd5b600d546001600160a01b03838116911614156112ce5760405162461bcd60e51b81526004018080602001828103825260278152602001806120766027913960400191505060405180910390fd5b600e546001600160a01b038381169116141561131b5760405162461bcd60e51b81526004018080602001828103825260268152602001806120e16026913960400191505060405180910390fd5b60085461010090046001600160a01b0316301415611380576040805162461bcd60e51b815260206004820152601d60248201527f636170747572653a2063616e206e6f742073656e6420746f2073656c66000000604482015290519081900360640190fd5b60085461010090046001600160a01b03166113e2576040805162461bcd60e51b815260206004820152601c60248201527f636170747572653a2063616e206e6f74206275726e20746f6b656e7300000000604482015290519081900360640190fd5b600854611407906001600160a01b03848116916101009004168363ffffffff611bf016565b5050565b60105490565b60126020526000908152604090205460ff1681565b60005460ff1661147d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561149e57600080fd5b3360008181526012602052604090205460ff16156114bb57600080fd5b336114c4611815565b6005556114cf6111ab565b6004556001600160a01b03811615611516576114ea81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b6000831161156b576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369743a2063616e6e6f74207374616b652030000000000000000000604482015290519081900360640190fd5b336115b6576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152336004820152905185926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b5051101561167f576040805162461bcd60e51b815260206004820152601d60248201527f6465706f7369743a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b601154611692908463ffffffff611b7516565b601155336000908152601460205260409020546116b5908463ffffffff611b7516565b336000818152601460205260409020919091556116d190611c5d565b600d546116ef906001600160a01b031633308663ffffffff611c8116565b604080513381526020810185905281517f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f929181900390910190a150506000805460ff1916600117905550565b60005461010090046001600160a01b0316331461175857600080fd5b60025442116117985760405162461bcd60e51b81526004018080602001828103825260348152602001806120426034913960400191505060405180910390fd5b83600654106117d85760405162461bcd60e51b815260040180806020018281038252602481526020018061201e6024913960400191505060405180910390fd5b6006849055600f839055600b829055600c8190556117fc818363ffffffff611a8f16565b60075550506008805460ff191690555050565b60045481565b600061181f611010565b61182c57506005546106a5565b6111b961185a61183a611010565b61066f670de0b6b3a764000061066360035461066360045461064e6111ab565b6005549063ffffffff611b7516565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461189457600080fd5b6001600160a01b0381163014156118dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806120be6023913960400191505060405180910390fd5b6001600160a01b0381166119215760405162461bcd60e51b8152600401808060200182810382526022815260200180611fd26022913960400191505060405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60055481565b60136020526000908152604090205460ff1681565b60025481565b6000805461010090046001600160a01b0316331461198757600080fd5b6001600160a01b03821660009081526012602052604090205460ff16156119ed576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60005461010090046001600160a01b03163314611a5a57600080fd5b6001600160a01b038116611a6d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce1565b90505b92915050565b600082611ae957506000611ad4565b82820282848281611af657fe5b0414611ad15760405162461bcd60e51b815260040180806020018281038252602181526020018061209d6021913960400191505060405180910390fd5b6000611ad183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d78565b600082820183811015611ad1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c42908490611ddd565b505050565b6000818310611c565781611ad1565b5090919050565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611cdb908590611ddd565b50505050565b60008184841115611d705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d35578181015183820152602001611d1d565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dc75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d35578181015183820152602001611d1d565b506000838581611dd357fe5b0495945050505050565b611def826001600160a01b0316611f95565b611e40576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e7e5780518252601f199092019160209182019101611e5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ee0576040519150601f19603f3d011682016040523d82523d6000602084013e611ee5565b606091505b509150915081611f3c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611cdb57808060200190516020811015611f5857600080fd5b5051611cdb5760405162461bcd60e51b815260040180806020018281038252602a81526020018061212e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611fc957508115155b94935050505056fe73657442656e6566696369616c3a2063616e206e6f74206275726e20746f6b656e73636c61696d3a2063757272656e74207374616b696e6720706572696f64206e6f7420636f6d706c657465736574526577617264526f756e643a207468697320726f756e6420636f6d706c65746564736574526577617264526f756e643a2070726576696f7573207265776172647320706572696f64206e6f7420636f6d706c657465636170747572653a2063616e206e6f742063617074757265207374616b696e6720746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773657442656e6566696369616c3a2063616e206e6f742073656e6420746f2073656c66636170747572653a2063616e206e6f7420636170747572652072657761726420746f6b656e736e6f74696679526577617264733a2070726f76696465642072657761726420746f6f20686967685361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582045687ca8236258f10257da28648b5d8a68dee231cdfcf391f44c2ac8a718700564736f6c634300051100320000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025d5760003560e01c806379ba509711610146578063b6b55f25116100c3578063d55dae6e11610087578063d55dae6e1461055f578063df136d6514610585578063e26ff10a1461058d578063ebe2b12b146105b3578063f26c159f146105bb578063f2fde38b146105e15761025d565b8063b6b55f25146104fb578063c702b5df14610518578063c8f33c9114610547578063cd3daf9d1461054f578063d4ee1d90146105575761025d565b80638da5cb5b1161010a5780638da5cb5b1461049157806390a967571461049957806399656164146104a1578063afb62e56146104cd578063b414d4b6146104d55761025d565b806379ba50971461044b5780637b0a47ee1461045357806380faa57d1461045b5780638456cb59146104635780638b8763471461046b5761025d565b80633f4ba83a116101df5780635ff9c077116101a35780635ff9c077146103e757806368c33627146103ef57806369cf4c22146103f757806370a082311461038b57806374e94deb1461041d578063788649ea146104255761025d565b80633f4ba83a14610383578063426233601461038b5780634e71d92d146103b1578063504f3a83146103b95780635c975abb146103df5761025d565b80631f89f25e116102265780631f89f25e146103125780632e1a7d4d1461031a5780632f54bf6e14610339578063386a9525146103735780633be52fc41461037b5761025d565b80628cc262146102625780630700037d1461029a5780630e15561a146102c057806311ccf822146102c85780631d62ebd9146102ec575b600080fd5b6102886004803603602081101561027857600080fd5b50356001600160a01b0316610607565b60408051918252519081900360200190f35b610288600480360360208110156102b057600080fd5b50356001600160a01b031661068f565b6102886106a1565b6102d06106a8565b604080516001600160a01b039092168252519081900360200190f35b6102886004803603602081101561030257600080fd5b50356001600160a01b03166106bc565b6102886106c7565b6103376004803603602081101561033057600080fd5b50356106cd565b005b61035f6004803603602081101561034f57600080fd5b50356001600160a01b031661096e565b604080519115158252519081900360200190f35b61028861099a565b6103376109a0565b610337610bd8565b610288600480360360208110156103a157600080fd5b50356001600160a01b0316610c4c565b610337610c67565b610288600480360360208110156103cf57600080fd5b50356001600160a01b0316610fdc565b61035f610ff7565b61035f611007565b610288611010565b6102886004803603602081101561040d57600080fd5b50356001600160a01b0316611016565b610288611031565b61035f6004803603602081101561043b57600080fd5b50356001600160a01b0316611037565b61033761110f565b6102886111a5565b6102886111ab565b6103376111be565b6102886004803603602081101561048157600080fd5b50356001600160a01b0316611239565b6102d061124b565b61028861125f565b610337600480360360408110156104b757600080fd5b506001600160a01b038135169060200135611265565b61028861140b565b61035f600480360360208110156104eb57600080fd5b50356001600160a01b0316611411565b6103376004803603602081101561051157600080fd5b5035611426565b6103376004803603608081101561052e57600080fd5b508035906020810135906040810135906060013561173c565b61028861180f565b610288611815565b6102d0611869565b6103376004803603602081101561057557600080fd5b50356001600160a01b0316611878565b610288611949565b61035f600480360360208110156105a357600080fd5b50356001600160a01b031661194f565b610288611964565b61035f600480360360208110156105d157600080fd5b50356001600160a01b031661196a565b610337600480360360208110156105f757600080fd5b50356001600160a01b0316611a3e565b6001600160a01b038116600090815260096020908152604080832054600a909252822054610687919061067b90670de0b6b3a76400009061066f9061065a9061064e611815565b9063ffffffff611a8f16565b61066388610c4c565b9063ffffffff611ada16565b9063ffffffff611b3316565b9063ffffffff611b7516565b90505b919050565b60096020526000908152604090205481565b600f545b90565b60085461010090046001600160a01b031681565b600061068782610607565b600b5490565b60005460ff16610724576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561074557600080fd5b3360008181526012602052604090205460ff161561076257600080fd5b3361076b611815565b6005556107766111ab565b6004556001600160a01b038116156107bd5761079181610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60008311610812576040805162461bcd60e51b815260206004820152601860248201527f77697468647261773a20616d6f756e7420696e76616c69640000000000000000604482015290519081900360640190fd5b3361085d576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526014602052604090205483111561087957600080fd5b60115461088c908463ffffffff611a8f16565b601155336000908152601460205260409020546108af908463ffffffff611a8f16565b336000908152601460209081526040808320939093556015905220546108db908463ffffffff611b7516565b336000908152601560209081526040808320939093556014905220546109045761090433611bcf565b600d54610921906001600160a01b0316338563ffffffff611bf016565b604080513381526020810185905281517f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634929181900390910190a150506000805460ff1916600117905550565b600080546001600160a01b038381166101009092041614156109925750600161068a565b50600061068a565b60075481565b60005461010090046001600160a01b031633146109bc57600080fd5b60006109c6611815565b6005556109d16111ab565b6004556001600160a01b03811615610a18576109ec81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60085460ff16151560011415610a2d57610bd5565b6002544210610a5357600754600f54610a4b9163ffffffff611b3316565b600355610aa7565b600254600090610a69904263ffffffff611a8f16565b90506000610a8260035483611ada90919063ffffffff16565b9050610a9f60075461066f83600f54611b7590919063ffffffff16565b600355601055505b600e54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d6020811015610b1c57600080fd5b5051600754909150610b3590829063ffffffff611b3316565b6003541115610b755760405162461bcd60e51b81526004018080602001828103825260278152602001806121076027913960400191505060405180910390fd5b6008805460ff19166001179055426004819055600754610b9b919063ffffffff611b7516565b600255600f5460408051918252517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505b50565b60005461010090046001600160a01b03163314610bf457600080fd5b600154600160a01b900460ff16610c0a57600080fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6001600160a01b031660009081526014602052604090205490565b60005460ff16610cbe576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff1615610cdf57600080fd5b3360008181526012602052604090205460ff1615610cfc57600080fd5b33610d05611815565b600555610d106111ab565b6004556001600160a01b03811615610d5757610d2b81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b33610d9f576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f206164647265737360681b604482015290519081900360640190fd5b610da7611031565b4211610df2576040805162461bcd60e51b815260206004820152601560248201527431b630b4b69d1031b630b4b6903737ba1037b832b760591b604482015290519081900360640190fd5b6002544211610e325760405162461bcd60e51b815260040180806020018281038252602a815260200180611ff4602a913960400191505060405180910390fd5b6000610e3d33610607565b600e54604080516370a0823160e01b8152306004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b50511015610f0c576040805162461bcd60e51b815260206004820152601b60248201527f636c61696d3a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b60008111610f57576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f207265776172647360681b604482015290519081900360640190fd5b33600081815260096020908152604080832083905560169091529020829055600e54610f8f916001600160a01b039091169083611bf0565b604080513381526020810183905281517ffcd6a0cf5a625280133c034863698c011fa0aefbee7f3be397f86fabd9891852929181900390910190a150506000805460ff1916600117905550565b6001600160a01b031660009081526015602052604090205490565b600154600160a01b900460ff1690565b60085460ff1681565b60115490565b6001600160a01b031660009081526016602052604090205490565b600c5490565b6000805461010090046001600160a01b0316331461105457600080fd5b6001600160a01b03821660009081526012602052604090205460ff166110c1576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b3361111957600080fd5b6001546001600160a01b0316331461113057600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60035481565b60006111b942600254611c47565b905090565b60005461010090046001600160a01b031633146111da57600080fd5b600154600160a01b900460ff16156111f157600080fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600a6020526000908152604090205481565b60005461010090046001600160a01b031681565b60065481565b60005461010090046001600160a01b0316331461128157600080fd5b600d546001600160a01b03838116911614156112ce5760405162461bcd60e51b81526004018080602001828103825260278152602001806120766027913960400191505060405180910390fd5b600e546001600160a01b038381169116141561131b5760405162461bcd60e51b81526004018080602001828103825260268152602001806120e16026913960400191505060405180910390fd5b60085461010090046001600160a01b0316301415611380576040805162461bcd60e51b815260206004820152601d60248201527f636170747572653a2063616e206e6f742073656e6420746f2073656c66000000604482015290519081900360640190fd5b60085461010090046001600160a01b03166113e2576040805162461bcd60e51b815260206004820152601c60248201527f636170747572653a2063616e206e6f74206275726e20746f6b656e7300000000604482015290519081900360640190fd5b600854611407906001600160a01b03848116916101009004168363ffffffff611bf016565b5050565b60105490565b60126020526000908152604090205460ff1681565b60005460ff1661147d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561149e57600080fd5b3360008181526012602052604090205460ff16156114bb57600080fd5b336114c4611815565b6005556114cf6111ab565b6004556001600160a01b03811615611516576114ea81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b6000831161156b576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369743a2063616e6e6f74207374616b652030000000000000000000604482015290519081900360640190fd5b336115b6576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152336004820152905185926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b5051101561167f576040805162461bcd60e51b815260206004820152601d60248201527f6465706f7369743a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b601154611692908463ffffffff611b7516565b601155336000908152601460205260409020546116b5908463ffffffff611b7516565b336000818152601460205260409020919091556116d190611c5d565b600d546116ef906001600160a01b031633308663ffffffff611c8116565b604080513381526020810185905281517f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f929181900390910190a150506000805460ff1916600117905550565b60005461010090046001600160a01b0316331461175857600080fd5b60025442116117985760405162461bcd60e51b81526004018080602001828103825260348152602001806120426034913960400191505060405180910390fd5b83600654106117d85760405162461bcd60e51b815260040180806020018281038252602481526020018061201e6024913960400191505060405180910390fd5b6006849055600f839055600b829055600c8190556117fc818363ffffffff611a8f16565b60075550506008805460ff191690555050565b60045481565b600061181f611010565b61182c57506005546106a5565b6111b961185a61183a611010565b61066f670de0b6b3a764000061066360035461066360045461064e6111ab565b6005549063ffffffff611b7516565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461189457600080fd5b6001600160a01b0381163014156118dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806120be6023913960400191505060405180910390fd5b6001600160a01b0381166119215760405162461bcd60e51b8152600401808060200182810382526022815260200180611fd26022913960400191505060405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60055481565b60136020526000908152604090205460ff1681565b60025481565b6000805461010090046001600160a01b0316331461198757600080fd5b6001600160a01b03821660009081526012602052604090205460ff16156119ed576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60005461010090046001600160a01b03163314611a5a57600080fd5b6001600160a01b038116611a6d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce1565b90505b92915050565b600082611ae957506000611ad4565b82820282848281611af657fe5b0414611ad15760405162461bcd60e51b815260040180806020018281038252602181526020018061209d6021913960400191505060405180910390fd5b6000611ad183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d78565b600082820183811015611ad1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c42908490611ddd565b505050565b6000818310611c565781611ad1565b5090919050565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611cdb908590611ddd565b50505050565b60008184841115611d705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d35578181015183820152602001611d1d565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dc75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d35578181015183820152602001611d1d565b506000838581611dd357fe5b0495945050505050565b611def826001600160a01b0316611f95565b611e40576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e7e5780518252601f199092019160209182019101611e5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ee0576040519150601f19603f3d011682016040523d82523d6000602084013e611ee5565b606091505b509150915081611f3c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611cdb57808060200190516020811015611f5857600080fd5b5051611cdb5760405162461bcd60e51b815260040180806020018281038252602a81526020018061212e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611fc957508115155b94935050505056fe73657442656e6566696369616c3a2063616e206e6f74206275726e20746f6b656e73636c61696d3a2063757272656e74207374616b696e6720706572696f64206e6f7420636f6d706c657465736574526577617264526f756e643a207468697320726f756e6420636f6d706c65746564736574526577617264526f756e643a2070726576696f7573207265776172647320706572696f64206e6f7420636f6d706c657465636170747572653a2063616e206e6f742063617074757265207374616b696e6720746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773657442656e6566696369616c3a2063616e206e6f742073656e6420746f2073656c66636170747572653a2063616e206e6f7420636170747572652072657761726420746f6b656e736e6f74696679526577617264733a2070726f76696465642072657761726420746f6f20686967685361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582045687ca8236258f10257da28648b5d8a68dee231cdfcf391f44c2ac8a718700564736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
-----Decoded View---------------
Arg [0] : token0 (address): 0x5b18DF96D3C8b9f1D1b9e38752498f92D1e2d490
Arg [1] : token1 (address): 0xB81D70802a816B5DacBA06D708B5acF19DcD436D
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490
Arg [1] : 000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
Deployed Bytecode Sourcemap
19151:10394:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19151:10394:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22894:262;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22894:262:0;-1:-1:-1;;;;;22894:262:0;;:::i;:::-;;;;;;;;;;;;;;;;19932:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19932:39:0;-1:-1:-1;;;;;19932:39:0;;:::i;29000:87::-;;;:::i;19855:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;19855:41:0;;;;;;;;;;;;;;28841:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28841:115:0;-1:-1:-1;;;;;28841:115:0;;:::i;29097:88::-;;;:::i;25982:831::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25982:831:0;;:::i;:::-;;17914:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17914:192:0;-1:-1:-1;;;;;17914:192:0;;:::i;:::-;;;;;;;;;;;;;;;;;;19749:31;;;:::i;23733:1258::-;;;:::i;19025:117::-;;;:::i;28670:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28670:117:0;-1:-1:-1;;;;;28670:117:0;;:::i;26850:837::-;;;:::i;28205:128::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28205:128:0;-1:-1:-1;;;;;28205:128:0;;:::i;18816:78::-;;;:::i;19787:28::-;;;:::i;29332:91::-;;;:::i;28341:118::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28341:118:0;-1:-1:-1;;;;;28341:118:0;;:::i;29193:84::-;;;:::i;27946:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27946:251:0;-1:-1:-1;;;;;27946:251:0;;:::i;18267:175::-;;;:::i;19605:26::-;;;:::i;22327:128::-;;;:::i;18902:115::-;;;:::i;19978:54::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19978:54:0;-1:-1:-1;;;;;19978:54:0;;:::i;17435:20::-;;;:::i;19714:28::-;;;:::i;21853:464::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21853:464:0;;;;;;;;:::i;28517:99::-;;;:::i;20369:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20369:45:0;-1:-1:-1;;;;;20369:45:0;;:::i;25265:677::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25265:677:0;;:::i;23197:494::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;23197:494:0;;;;;;;;;;;;;;;;;:::i;19638:26::-;;;:::i;22463:423::-;;;:::i;17462:23::-;;;:::i;21521:276::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21521:276:0;-1:-1:-1;;;;;21521:276:0;;:::i;19671:36::-;;;:::i;20450:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20450:44:0;-1:-1:-1;;;;;20450:44:0;;:::i;19570:28::-;;;:::i;27695:243::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27695:243:0;-1:-1:-1;;;;;27695:243:0;;:::i;18114:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18114:145:0;-1:-1:-1;;;;;18114:145:0;;:::i;22894:262::-;-1:-1:-1;;;;;23131:16:0;;22948:4;23131:16;;;:7;:16;;;;;;;;;23047:22;:31;;;;;;22985:163;;23131:16;22985:123;;23103:4;;22985:95;;23026:53;;:16;:14;:16::i;:::-;:20;:53;:20;:53;:::i;:::-;22985:18;22995:7;22985:9;:18::i;:::-;:40;:95;:40;:95;:::i;:::-;:117;:123;:117;:123;:::i;:::-;:145;:163;:145;:163;:::i;:::-;22965:183;;22894:262;;;;:::o;19932:39::-;;;;;;;;;;;;;:::o;29000:87::-;29071:8;;29000:87;;:::o;19855:41::-;;;;;;-1:-1:-1;;;;;19855:41:0;;:::o;28841:115::-;28904:4;28928:20;28935:12;28928:6;:20::i;29097:88::-;29171:6;;29097:88;:::o;25982:831::-;17073:11;;;;17065:55;;;;;-1:-1:-1;;;17065:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17212:5;17198:19;;-1:-1:-1;;17198:19:0;;;;18703:7;-1:-1:-1;;;18703:7:0;;17198:19;18703:7;18702:8;18694:17;;;;;;26098:10;21131:23;;;;:13;:23;;;;;;;;21130:24;21122:33;;;;;;26133:10;21256:16;:14;:16::i;:::-;21233:20;:39;21300:26;:24;:26::i;:::-;21283:14;:43;-1:-1:-1;;;;;21341:21:0;;;21337:157;;21398:15;21405:7;21398:6;:15::i;:::-;-1:-1:-1;;;;;21379:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21462:20;;21428:22;:31;;;;;;:54;21337:157;26178:1;26169:6;:10;26161:47;;;;;-1:-1:-1;;;26161:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26227:10;26219:59;;;;;-1:-1:-1;;;26219:59:0;;;;;;;;;;;;-1:-1:-1;;;26219:59:0;;;;;;;;;;;;;;;26333:10;26323:21;;;;:9;:21;;;;;;:31;-1:-1:-1;26323:31:0;26315:40;;;;;;26381:12;;:24;;26398:6;26381:24;:16;:24;:::i;:::-;26366:12;:39;26466:10;26456:21;;;;:9;:21;;;;;;:33;;26482:6;26456:33;:25;:33;:::i;:::-;26442:10;26432:21;;;;:9;:21;;;;;;;;:57;;;;26566:12;:24;;;;:36;;26595:6;26566:36;:28;:36;:::i;:::-;26552:10;26539:24;;;;:12;:24;;;;;;;;:63;;;;26619:9;:21;;;;26615:91;;26662:29;26680:10;26662:17;:29::i;:::-;26716:7;;:40;;-1:-1:-1;;;;;26716:7:0;26737:10;26749:6;26716:40;:20;:40;:::i;:::-;26772:33;;;26786:10;26772:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17378:11:0;:18;;-1:-1:-1;;17378:18:0;17392:4;17378:18;;;-1:-1:-1;25982:831:0:o;17914:192::-;17969:4;18000:5;;-1:-1:-1;;;;;17989:16:0;;;18000:5;;;;;17989:16;17986:113;;;-1:-1:-1;18029:4:0;18022:11;;17986:113;-1:-1:-1;18082:5:0;18075:12;;19749:31;;;;:::o;23733:1258::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;23825:1;21256:16;:14;:16::i;:::-;21233:20;:39;21300:26;:24;:26::i;:::-;21283:14;:43;-1:-1:-1;;;;;21341:21:0;;;21337:157;;21398:15;21405:7;21398:6;:15::i;:::-;-1:-1:-1;;;;;21379:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21462:20;;21428:22;:31;;;;;;:54;21337:157;23877:9;;;;:17;;:9;:17;23873:56;;;23911:7;;23873:56;23964:12;;23945:15;:31;23941:359;;24019:15;;24006:8;;:29;;;:12;:29;:::i;:::-;23993:10;:42;23941:359;;;24085:12;;24068:14;;24085:33;;24102:15;24085:33;:16;:33;:::i;:::-;24068:50;;24133:13;24149:25;24163:10;;24149:9;:13;;:25;;;;:::i;:::-;24133:41;;24202:43;24229:15;;24202:22;24215:8;24202;;:12;;:22;;;;:::i;:43::-;24189:10;:56;24260:17;:28;-1:-1:-1;23941:359:0;24675:7;;:32;;;-1:-1:-1;;;24675:32:0;;24701:4;24675:32;;;;;;24660:12;;-1:-1:-1;;;;;24675:7:0;;:17;;:32;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;24675:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24675:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24675:32:0;24752:15;;24675:32;;-1:-1:-1;24740:28:0;;24675:32;;24740:28;:11;:28;:::i;:::-;24726:10;;:42;;24718:94;;;;-1:-1:-1;;;24718:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24825:9;:16;;-1:-1:-1;;24825:16:0;24837:4;24825:16;;;24869:15;24852:14;:32;;;24930:15;;24910:36;;24869:15;24910:36;:19;:36;:::i;:::-;24895:12;:51;24974:8;;24962:21;;;;;;;;;;;;;;;;21504:1;;17755;23733:1258::o;19025:117::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;18780:7;;-1:-1:-1;;;18780:7:0;;;;18772:16;;;;;;19083:7;:15;;-1:-1:-1;;;;19083:15:0;;;19114:20;;;19123:10;19114:20;;;;;;;;;;;;;19025:117::o;28670:::-;-1:-1:-1;;;;;28756:23:0;28732:4;28756:23;;;:9;:23;;;;;;;28670:117::o;26850:837::-;17073:11;;;;17065:55;;;;;-1:-1:-1;;;17065:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17212:5;17198:19;;-1:-1:-1;;17198:19:0;;;;18703:7;-1:-1:-1;;;18703:7:0;;17198:19;18703:7;18702:8;18694:17;;;;;;26952:10;21131:23;;;;:13;:23;;;;;;;;21130:24;21122:33;;;;;;26987:10;21256:16;:14;:16::i;:::-;21233:20;:39;21300:26;:24;:26::i;:::-;21283:14;:43;-1:-1:-1;;;;;21341:21:0;;;21337:157;;21398:15;21405:7;21398:6;:15::i;:::-;-1:-1:-1;;;;;21379:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21462:20;;21428:22;:31;;;;;;:54;21337:157;27023:10;27015:56;;;;;-1:-1:-1;;;27015:56:0;;;;;;;;;;;;-1:-1:-1;;;27015:56:0;;;;;;;;;;;;;;;27116:17;:15;:17::i;:::-;27098:15;:35;27090:69;;;;;-1:-1:-1;;;27090:69:0;;;;;;;;;;;;-1:-1:-1;;;27090:69:0;;;;;;;;;;;;;;;27199:12;;27181:15;:30;27173:85;;;;-1:-1:-1;;;27173:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27271:11;27285:18;27292:10;27285:6;:18::i;:::-;27356:7;;:32;;;-1:-1:-1;;;27356:32:0;;27382:4;27356:32;;;;;;27271;;-1:-1:-1;27271:32:0;;-1:-1:-1;;;;;27356:7:0;;;;:17;;:32;;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;27356:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27356:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27356:32:0;:42;;27348:82;;;;;-1:-1:-1;;;27348:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27466:1;27457:6;:10;27449:42;;;;;-1:-1:-1;;;27449:42:0;;;;;;;;;;;;-1:-1:-1;;;27449:42:0;;;;;;;;;;;;;;;27528:10;27542:1;27520:19;;;:7;:19;;;;;;;;:23;;;27554:7;:19;;;;;:28;;;27593:7;;:40;;-1:-1:-1;;;;;27593:7:0;;;;27554:28;27593:20;:40::i;:::-;27649:30;;;27660:10;27649:30;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17378:11:0;:18;;-1:-1:-1;;17378:18:0;17392:4;17378:18;;;-1:-1:-1;26850:837:0:o;28205:128::-;-1:-1:-1;;;;;28299:26:0;28275:4;28299:26;;;:12;:26;;;;;;;28205:128::o;18816:78::-;18879:7;;-1:-1:-1;;;18879:7:0;;;;;18816:78::o;19787:28::-;;;;;;:::o;29332:91::-;29403:12;;29332:91;:::o;28341:118::-;-1:-1:-1;;;;;28430:21:0;28406:4;28430:21;;;:7;:21;;;;;;;28341:118::o;29193:84::-;29265:4;;29193:84;:::o;27946:251::-;28016:4;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;-1:-1:-1;;;;;28041:22:0;;;;;;:13;:22;;;;;;;;28033:60;;;;;-1:-1:-1;;;28033:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28104:22:0;;28129:5;28104:22;;;:13;:22;;;;;;:30;;-1:-1:-1;;28104:30:0;;;28150:17;;;28129:5;28150:17;-1:-1:-1;28185:4:0;27946:251;;;:::o;18267:175::-;17815:10;17807:33;;;;;;17873:8;;-1:-1:-1;;;;;17873:8:0;17859:10;:22;17851:31;;;;;;18358:8;;;18351:5;;18330:37;;-1:-1:-1;;;;;18358:8:0;;;;;18351:5;;;;;;;18330:37;;;18394:8;;;;18386:16;;-1:-1:-1;;;;;;18386:16:0;18394:8;-1:-1:-1;;;;;18394:8:0;;18386:16;;;;-1:-1:-1;;;;;;18413:21:0;;;18267:175::o;19605:26::-;;;;:::o;22327:128::-;22384:4;22408:39;22417:15;22434:12;;22408:8;:39::i;:::-;22401:46;;22327:128;:::o;18902:115::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;18703:7;;-1:-1:-1;;;18703:7:0;;;;18702:8;18694:17;;;;;;18971:4;18961:14;;-1:-1:-1;;;;18961:14:0;-1:-1:-1;;;18961:14:0;;;18991:18;;;18998:10;18991:18;;;;;;;;;;;;;18902:115::o;19978:54::-;;;;;;;;;;;;;:::o;17435:20::-;;;;;;-1:-1:-1;;;;;17435:20:0;;:::o;19714:28::-;;;;:::o;21853:464::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;21955:7;;-1:-1:-1;;;;;21937:26:0;;;21955:7;;21937:26;;21929:78;;;;-1:-1:-1;;;21929:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22044:7;;-1:-1:-1;;;;;22026:26:0;;;22044:7;;22026:26;;22018:77;;;;-1:-1:-1;;;22018:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22114:10;;;;;-1:-1:-1;;;;;22114:10:0;22136:4;22114:27;;22106:69;;;;;-1:-1:-1;;;22106:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22194:10;;;;;-1:-1:-1;;;;;22194:10:0;22186:65;;;;;-1:-1:-1;;;22186:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22290:10;;22262:47;;-1:-1:-1;;;;;22262:27:0;;;;22290:10;;;;22302:6;22262:47;:27;:47;:::i;:::-;21853:464;;:::o;28517:99::-;28591:17;;28517:99;:::o;20369:45::-;;;;;;;;;;;;;;;:::o;25265:677::-;17073:11;;;;17065:55;;;;;-1:-1:-1;;;17065:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17212:5;17198:19;;-1:-1:-1;;17198:19:0;;;;18703:7;-1:-1:-1;;;18703:7:0;;17198:19;18703:7;18702:8;18694:17;;;;;;25380:10;21131:23;;;;:13;:23;;;;;;;;21130:24;21122:33;;;;;;25415:10;21256:16;:14;:16::i;:::-;21233:20;:39;21300:26;:24;:26::i;:::-;21283:14;:43;-1:-1:-1;;;;;21341:21:0;;;21337:157;;21398:15;21405:7;21398:6;:15::i;:::-;-1:-1:-1;;;;;21379:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21462:20;;21428:22;:31;;;;;;:54;21337:157;25460:1;25451:6;:10;25443:46;;;;;-1:-1:-1;;;25443:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25508:10;25500:59;;;;;-1:-1:-1;;;25500:59:0;;;;;;;;;;;;-1:-1:-1;;;25500:59:0;;;;;;;;;;;;;;;25578:7;;:29;;;-1:-1:-1;;;25578:29:0;;25596:10;25578:29;;;;;;25611:6;;-1:-1:-1;;;;;25578:7:0;;:17;;:29;;;;;;;;;;;;;;:7;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;25578:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25578:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25578:29:0;:39;;25570:81;;;;;-1:-1:-1;;;25570:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25677:12;;:24;;25694:6;25677:24;:16;:24;:::i;:::-;25662:12;:39;25756:10;25746:21;;;;:9;:21;;;;;;:33;;25772:6;25746:33;:25;:33;:::i;:::-;25732:10;25722:21;;;;:9;:21;;;;;:57;;;;25790:26;;:14;:26::i;:::-;25827:7;;:59;;-1:-1:-1;;;;;25827:7:0;25852:10;25872:4;25879:6;25827:59;:24;:59;:::i;:::-;25902:32;;;25915:10;25902:32;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17378:11:0;:18;;-1:-1:-1;;17378:18:0;17392:4;17378:18;;;-1:-1:-1;25265:677:0:o;23197:494::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;23352:12;;23334:15;:30;23326:95;;;;-1:-1:-1;;;23326:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23455:5;23440:12;;:20;23432:69;;;;-1:-1:-1;;;23432:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23514:12;:20;;;23545:8;:17;;;23573:6;:14;;;23598:4;:10;;;23637:16;23605:3;23582:5;23637:16;:8;:16;:::i;:::-;23619:15;:34;-1:-1:-1;;23666:9:0;:17;;-1:-1:-1;;23666:17:0;;;-1:-1:-1;;23197:494:0:o;19638:26::-;;;;:::o;22463:423::-;22510:4;22531:16;:14;:16::i;:::-;22527:81;;-1:-1:-1;22576:20:0;;22569:27;;22527:81;22638:240;22681:182;22846:16;:14;:16::i;:::-;22681:138;22814:4;22681:106;22776:10;;22681:68;22734:14;;22681:26;:24;:26::i;:182::-;22638:20;;;:240;:24;:240;:::i;17462:23::-;;;-1:-1:-1;;;;;17462:23:0;;:::o;21521:276::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;-1:-1:-1;;;;;21603:28:0;;21626:4;21603:28;;21595:76;;;;-1:-1:-1;;;21595:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21690:25:0;;21682:72;;;;-1:-1:-1;;;21682:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21765:10;:24;;-1:-1:-1;;;;;21765:24:0;;;;;-1:-1:-1;;;;;;21765:24:0;;;;;;;;;21521:276::o;19671:36::-;;;;:::o;20450:44::-;;;;;;;;;;;;;;;:::o;19570:28::-;;;;:::o;27695:243::-;27763:4;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;-1:-1:-1;;;;;27789:22:0;;;;;;:13;:22;;;;;;;;27788:23;27780:57;;;;;-1:-1:-1;;;27780:57:0;;;;;;;;;;;;-1:-1:-1;;;27780:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27848:22:0;;;;;;:13;:22;;;;;;:29;;-1:-1:-1;;27848:29:0;27873:4;27848:29;;;27893:15;;;27848:22;27893:15;-1:-1:-1;27926:4:0;27695:243;;;:::o;18114:145::-;17738:5;;;;;-1:-1:-1;;;;;17738:5:0;17724:10;:19;17716:28;;;;;;-1:-1:-1;;;;;18196:23:0;;18188:32;;;;;;18231:8;:20;;-1:-1:-1;;;;;;18231:20:0;-1:-1:-1;;;;;18231:20:0;;;;;;;;;;18114:145::o;8635:136::-;8693:7;8720:43;8724:1;8727;8720:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8713:50;;8635:136;;;;;:::o;9551:471::-;9609:7;9854:6;9850:47;;-1:-1:-1;9884:1:0;9877:8;;9850:47;9921:5;;;9925:1;9921;:5;:1;9945:5;;;;;:10;9937:56;;;;-1:-1:-1;;;9937:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10490:132;10548:7;10575:39;10579:1;10582;10575:39;;;;;;;;;;;;;;;;;:3;:39::i;8179:181::-;8237:7;8269:5;;;8293:6;;;;8285:46;;;;;-1:-1:-1;;;8285:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;25114:111;-1:-1:-1;;;;;25183:26:0;25212:5;25183:26;;;:12;:26;;;;;:34;;-1:-1:-1;;25183:34:0;;;25114:111::o;12868:176::-;12977:58;;;-1:-1:-1;;;;;12977:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12977:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12951:85:0;;12970:5;;12951:18;:85::i;:::-;12868:176;;;:::o;370:106::-;428:7;459:1;455;:5;:13;;467:1;455:13;;;-1:-1:-1;463:1:0;;370:106;-1:-1:-1;370:106:0:o;24999:107::-;-1:-1:-1;;;;;25065:26:0;;;;;:12;:26;;;;;:33;;-1:-1:-1;;25065:33:0;25094:4;25065:33;;;24999:107::o;13052:204::-;13179:68;;;-1:-1:-1;;;;;13179:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13179:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13153:95:0;;13172:5;;13153:18;:95::i;:::-;13052:204;;;;:::o;9108:192::-;9194:7;9230:12;9222:6;;;;9214:29;;;;-1:-1:-1;;;9214:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9214:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9266:5:0;;;9108:192::o;11152:345::-;11238:7;11340:12;11333:5;11325:28;;;;-1:-1:-1;;;11325:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11325:28:0;;11364:9;11380:1;11376;:5;;;;;;;11152:345;-1:-1:-1;;;;;11152:345:0:o;14907:1114::-;15511:27;15519:5;-1:-1:-1;;;;;15511:25:0;;:27::i;:::-;15503:71;;;;;-1:-1:-1;;;15503:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15648:12;15662:23;15697:5;-1:-1:-1;;;;;15689:19:0;15709:4;15689:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15689:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15647:67:0;;;;15733:7;15725:52;;;;;-1:-1:-1;;;15725:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15794:17;;:21;15790:224;;15936:10;15925:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15925:30:0;15917:85;;;;-1:-1:-1;;;15917:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5606:619;5666:4;6134:20;;5977:66;6174:23;;;;;;:42;;-1:-1:-1;6201:15:0;;;6174:42;6166:51;5606:619;-1:-1:-1;;;;5606:619:0:o
Swarm Source
bzzr://45687ca8236258f10257da28648b5d8a68dee231cdfcf391f44c2ac8a7187005
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $18.98 | 8.851 | $168 |
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.