Source Code
Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| STAKE | 12568807 | 1740 days ago | IN | 0 ETH | 0.00242857 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Stake
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-06-05
*/
/**
*Submitted for verification at Etherscan.io on 2021-06-05
*/
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.0;
// ----------------------------------------------------------------------------
// 'BITT' Staking smart contract
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// SafeMath library
// ----------------------------------------------------------------------------
/**
* @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) {
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;
}
function ceil(uint a, uint m) internal pure returns (uint r) {
return (a + m - 1) / m * m;
}
}
// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
address payable public owner;
event OwnershipTransferred(address indexed _from, address indexed _to);
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function transferOwnership(address payable _newOwner) public onlyOwner {
owner = _newOwner;
emit OwnershipTransferred(msg.sender, _newOwner);
}
}
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address tokenOwner) external view returns (uint256 balance);
function allowance(address tokenOwner, address spender) external view returns (uint256 remaining);
function transfer(address to, uint256 tokens) external returns (bool success);
function approve(address spender, uint256 tokens) external returns (bool success);
function transferFrom(address from, address to, uint256 tokens) external returns (bool success);
function burnTokens(uint256 _amount) external;
event Transfer(address indexed from, address indexed to, uint256 tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}
// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract Stake is Owned {
using SafeMath for uint256;
address public BITT = 0x5E122692b924c85934C7657fC69bA022211aa89f;
uint256 public totalStakes = 0;
uint256 stakingFee = 25; // 2.5%
uint256 unstakingFee = 25; // 2.5%
uint256 public totalDividends = 0;
uint256 private scaledRemainder = 0;
uint256 private scaling = uint256(10) ** 12;
uint public round = 1;
struct USER{
uint256 stakedTokens;
uint256 lastDividends;
uint256 fromTotalDividend;
uint round;
uint256 remainder;
}
mapping(address => USER) stakers;
mapping (uint => uint256) public payouts; // keeps record of each payout
event STAKED(address staker, uint256 tokens, uint256 stakingFee);
event UNSTAKED(address staker, uint256 tokens, uint256 unstakingFee);
event PAYOUT(uint256 round, uint256 tokens, address sender);
event CLAIMEDREWARD(address staker, uint256 reward);
// ------------------------------------------------------------------------
// Token holders can stake their tokens using this function
// @param tokens number of tokens to stake
// ------------------------------------------------------------------------
function STAKE(uint256 tokens) external {
require(IERC20(BITT).transferFrom(msg.sender, address(this), tokens), "BITT Tokens cannot be transferred from user account");
uint256 _stakingFee = 0;
if(totalStakes > 0)
_stakingFee= (onePercent(tokens).mul(stakingFee)).div(10);
if(totalStakes > 0)
// distribute the staking fee accumulated before updating the user's stake
_addPayout(_stakingFee);
// add pending rewards to remainder to be claimed by user later, if there is any existing stake
uint256 owing = pendingReward(msg.sender);
stakers[msg.sender].remainder += owing;
stakers[msg.sender].stakedTokens = (tokens.sub(_stakingFee)).add(stakers[msg.sender].stakedTokens);
stakers[msg.sender].lastDividends = owing;
stakers[msg.sender].fromTotalDividend= totalDividends;
stakers[msg.sender].round = round;
totalStakes = totalStakes.add(tokens.sub(_stakingFee));
emit STAKED(msg.sender, tokens.sub(_stakingFee), _stakingFee);
}
// ------------------------------------------------------------------------
// Owners can send the funds to be distributed to stakers using this function
// @param tokens number of tokens to distribute
// ------------------------------------------------------------------------
function ADDFUNDS(uint256 tokens) external {
require(IERC20(BITT).transferFrom(msg.sender, address(this), tokens), "BITT Tokens cannot be transferred from funder account");
_addPayout(tokens);
}
// ------------------------------------------------------------------------
// Private function to register payouts
// ------------------------------------------------------------------------
function _addPayout(uint256 tokens) private{
// divide the funds among the currently staked tokens
// scale the deposit and add the previous remainder
uint256 available = (tokens.mul(scaling)).add(scaledRemainder);
uint256 dividendPerToken = available.div(totalStakes);
scaledRemainder = available.mod(totalStakes);
totalDividends = totalDividends.add(dividendPerToken);
payouts[round] = payouts[round-1].add(dividendPerToken);
emit PAYOUT(round, tokens, msg.sender);
round++;
}
// ------------------------------------------------------------------------
// Stakers can claim their pending rewards using this function
// ------------------------------------------------------------------------
function CLAIMREWARD() public {
if(totalDividends > stakers[msg.sender].fromTotalDividend){
uint256 owing = pendingReward(msg.sender);
owing = owing.add(stakers[msg.sender].remainder);
stakers[msg.sender].remainder = 0;
require(IERC20(BITT).transfer(msg.sender,owing), "ERROR: error in sending BITT reward from contract");
emit CLAIMEDREWARD(msg.sender, owing);
stakers[msg.sender].lastDividends = owing; // unscaled
stakers[msg.sender].round = round; // update the round
stakers[msg.sender].fromTotalDividend = totalDividends; // scaled
}
}
// ------------------------------------------------------------------------
// Get the pending rewards of the staker
// @param _staker the address of the staker
// ------------------------------------------------------------------------
function pendingReward(address staker) private returns (uint256) {
uint256 amount = ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
stakers[staker].remainder += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
return amount;
}
function getPendingReward(address staker) public view returns(uint256 _pendingReward) {
uint256 amount = ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
amount += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
return (amount + stakers[staker].remainder);
}
// ------------------------------------------------------------------------
// Stakers can un stake the staked tokens using this function
// @param tokens the number of tokens to withdraw
// ------------------------------------------------------------------------
function WITHDRAW(uint256 tokens) external {
require(stakers[msg.sender].stakedTokens >= tokens && tokens > 0, "Invalid BITT token amount to withdraw");
uint256 _unstakingFee = (onePercent(tokens).mul(unstakingFee)).div(10);
// add pending rewards to remainder to be claimed by user later, if there is any existing stake
uint256 owing = pendingReward(msg.sender);
stakers[msg.sender].remainder += owing;
require(IERC20(BITT).transfer(msg.sender, tokens.sub(_unstakingFee)), "Error in un-staking BITT tokens");
stakers[msg.sender].stakedTokens = stakers[msg.sender].stakedTokens.sub(tokens);
stakers[msg.sender].lastDividends = owing;
stakers[msg.sender].fromTotalDividend= totalDividends;
stakers[msg.sender].round = round;
totalStakes = totalStakes.sub(tokens);
if(totalStakes > 0)
// distribute the un staking fee accumulated after updating the user's stake
_addPayout(_unstakingFee);
emit UNSTAKED(msg.sender, tokens.sub(_unstakingFee), _unstakingFee);
}
// ------------------------------------------------------------------------
// Private function to calculate 1% percentage
// ------------------------------------------------------------------------
function onePercent(uint256 _tokens) private pure returns (uint256){
uint256 roundValue = _tokens.ceil(100);
uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2));
return onePercentofTokens;
}
// ------------------------------------------------------------------------
// Get the number of tokens staked by a staker
// @param _staker the address of the staker
// ------------------------------------------------------------------------
function yourStakedBITT(address staker) external view returns(uint256 stakedBITT){
return stakers[staker].stakedTokens;
}
// ------------------------------------------------------------------------
// Get the BITT balance of the token holder
// @param user the address of the token holder
// ------------------------------------------------------------------------
function yourBITTBalance(address user) external view returns(uint256 BITTBalance){
return IERC20(BITT).balanceOf(user);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingFee","type":"uint256"}],"name":"STAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakingFee","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BITT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"yourBITTBalance","outputs":[{"internalType":"uint256","name":"BITTBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"yourStakedBITT","outputs":[{"internalType":"uint256","name":"stakedBITT","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052735e122692b924c85934c7657fc69ba022211aa89f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002556019600355601960045560006005556000600655600c600a0a600755600160085534801561008b57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e8c806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063997664d71161008c578063bf9befb111610066578063bf9befb11461030f578063ca84d5911461032d578063edac3d891461035b578063f2fde38b1461038f576100ea565b8063997664d71461026b578063a33ad87e14610289578063b53d6c24146102e1576100ea565b80634baf782e116100c85780634baf782e1461017d5780634df9d6ba14610187578063829e52ef146101df5780638da5cb5b14610237576100ea565b8063146ca531146100ef57806329652e861461010d5780632c75bcda1461014f575b600080fd5b6100f76103d3565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b81019080803590602001909291905050506103d9565b6040518082815260200191505060405180910390f35b61017b6004803603602081101561016557600080fd5b81019080803590602001909291905050506103f1565b005b610185610893565b005b6101c96004803603602081101561019d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be0565b6040518082815260200191505060405180910390f35b610221600480360360208110156101f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd7565b6040518082815260200191505060405180910390f35b61023f610ea4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610273610ec8565b6040518082815260200191505060405180910390f35b6102cb6004803603602081101561029f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ece565b6040518082815260200191505060405180910390f35b61030d600480360360208110156102f757600080fd5b8101908080359060200190929190505050610f1a565b005b610317611067565b6040518082815260200191505060405180910390f35b6103596004803603602081101561034357600080fd5b810190808035906020019092919050505061106d565b005b610363611486565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d1600480360360208110156103a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ac565b005b60085481565b600a6020528060005260406000206000915090505481565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101580156104435750600081115b610498576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e326025913960400191505060405180910390fd5b60006104ca600a6104bc6004546104ae866115a1565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b905060006104d7336116c5565b905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361057b85876118c390919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156105ce57600080fd5b505af11580156105e2573d6000803e3d6000fd5b505050506040513d60208110156105f857600080fd5b810190808051906020019092919050505061067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4572726f7220696e20756e2d7374616b696e67204249545420746f6b656e730081525060200191505060405180910390fd5b6106d083600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118c390919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550610804836002546118c390919063ffffffff16565b6002819055506000600254111561081f5761081e8261190d565b5b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa23361085484866118c390919063ffffffff16565b84604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546005541115610bde5760006108ea336116c5565b9050610941600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015482611a4390919063ffffffff16565b90506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a1e57600080fd5b505af1158015610a32573d6000803e3d6000fd5b505050506040513d6020811015610a4857600080fd5b8101908080519060200190929190505050610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611e016031913960400191505060405180910390fd5b7f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e3382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a180600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550505b565b600080610cb8600754610caa600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610c9c600a60006001600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b9050600754610d7e600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610d70600a60006001600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b81610d8557fe5b0681019050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401548101915050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6257600080fd5b505afa158015610e76573d6000803e3d6000fd5b505050506040513d6020811015610e8c57600080fd5b81019080805190602001909291905050509050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fcb57600080fd5b505af1158015610fdf573d6000803e3d6000fd5b505050506040513d6020811015610ff557600080fd5b810190808051906020019092919050505061105b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611d786035913960400191505060405180910390fd5b6110648161190d565b50565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561111e57600080fd5b505af1158015611132573d6000803e3d6000fd5b505050506040513d602081101561114857600080fd5b81019080805190602001909291905050506111ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180611dad6033913960400191505060405180910390fd5b60008060025411156111ed576111ea600a6111dc6003546111ce866115a1565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b90505b60006002541115611202576112018161190d565b5b600061120d336116c5565b905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055506112c6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546112b884866118c390919063ffffffff16565b611a4390919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555061140c6113fb83856118c390919063ffffffff16565b600254611a4390919063ffffffff16565b6002819055507f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c3361144784866118c390919063ffffffff16565b84604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461150457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000806115b8606484611acb90919063ffffffff16565b905060006115e96002600a0a6064026115db6064856115f590919063ffffffff16565b61167b90919063ffffffff16565b90508092505050919050565b6000808314156116085760009050611675565b600082840290508284828161161957fe5b0414611670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611de06021913960400191505060405180910390fd5b809150505b92915050565b60006116bd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae6565b905092915050565b60008061179d60075461178f600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611781600a60006001600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b9050600754611863600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611855600a60006001600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b8161186a57fe5b06600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254019250508190555080915050919050565b600061190583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bac565b905092915050565b600061193860065461192a600754856115f590919063ffffffff16565b611a4390919063ffffffff16565b905060006119516002548361167b90919063ffffffff16565b905061196860025483611c6c90919063ffffffff16565b60068190555061198381600554611a4390919063ffffffff16565b6005819055506119b481600a6000600160085403815260200190815260200160002054611a4390919063ffffffff16565b600a60006008548152602001908152602001600020819055507fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b66008548433604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600860008154809291906001019190505550505050565b600080828401905083811015611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000818260018486010381611adc57fe5b0402905092915050565b60008083118290611b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b57578082015181840152602081019050611b3c565b50505050905090810190601f168015611b845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611b9e57fe5b049050809150509392505050565b6000838311158290611c59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1e578082015181840152602081019050611c03565b50505050905090810190601f168015611c4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000611cae83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611cb6565b905092915050565b6000808314158290611d63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d28578082015181840152602081019050611d0d565b50505050905090810190601f168015611d555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50828481611d6d57fe5b069050939250505056fe4249545420546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e744249545420546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552524f523a206572726f7220696e2073656e64696e672042495454207265776172642066726f6d20636f6e7472616374496e76616c6964204249545420746f6b656e20616d6f756e7420746f207769746864726177a26469706673582212202fee3714c32f2cc7dce6aa4d49ab55381aa309ad66f84a1a4a077ce90ae2a74e64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063997664d71161008c578063bf9befb111610066578063bf9befb11461030f578063ca84d5911461032d578063edac3d891461035b578063f2fde38b1461038f576100ea565b8063997664d71461026b578063a33ad87e14610289578063b53d6c24146102e1576100ea565b80634baf782e116100c85780634baf782e1461017d5780634df9d6ba14610187578063829e52ef146101df5780638da5cb5b14610237576100ea565b8063146ca531146100ef57806329652e861461010d5780632c75bcda1461014f575b600080fd5b6100f76103d3565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b81019080803590602001909291905050506103d9565b6040518082815260200191505060405180910390f35b61017b6004803603602081101561016557600080fd5b81019080803590602001909291905050506103f1565b005b610185610893565b005b6101c96004803603602081101561019d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be0565b6040518082815260200191505060405180910390f35b610221600480360360208110156101f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd7565b6040518082815260200191505060405180910390f35b61023f610ea4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610273610ec8565b6040518082815260200191505060405180910390f35b6102cb6004803603602081101561029f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ece565b6040518082815260200191505060405180910390f35b61030d600480360360208110156102f757600080fd5b8101908080359060200190929190505050610f1a565b005b610317611067565b6040518082815260200191505060405180910390f35b6103596004803603602081101561034357600080fd5b810190808035906020019092919050505061106d565b005b610363611486565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d1600480360360208110156103a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ac565b005b60085481565b600a6020528060005260406000206000915090505481565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101580156104435750600081115b610498576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e326025913960400191505060405180910390fd5b60006104ca600a6104bc6004546104ae866115a1565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b905060006104d7336116c5565b905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361057b85876118c390919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156105ce57600080fd5b505af11580156105e2573d6000803e3d6000fd5b505050506040513d60208110156105f857600080fd5b810190808051906020019092919050505061067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4572726f7220696e20756e2d7374616b696e67204249545420746f6b656e730081525060200191505060405180910390fd5b6106d083600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118c390919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550610804836002546118c390919063ffffffff16565b6002819055506000600254111561081f5761081e8261190d565b5b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa23361085484866118c390919063ffffffff16565b84604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546005541115610bde5760006108ea336116c5565b9050610941600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015482611a4390919063ffffffff16565b90506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a1e57600080fd5b505af1158015610a32573d6000803e3d6000fd5b505050506040513d6020811015610a4857600080fd5b8101908080519060200190929190505050610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611e016031913960400191505060405180910390fd5b7f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e3382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a180600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550505b565b600080610cb8600754610caa600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610c9c600a60006001600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b9050600754610d7e600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610d70600a60006001600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b81610d8557fe5b0681019050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401548101915050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6257600080fd5b505afa158015610e76573d6000803e3d6000fd5b505050506040513d6020811015610e8c57600080fd5b81019080805190602001909291905050509050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fcb57600080fd5b505af1158015610fdf573d6000803e3d6000fd5b505050506040513d6020811015610ff557600080fd5b810190808051906020019092919050505061105b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180611d786035913960400191505060405180910390fd5b6110648161190d565b50565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561111e57600080fd5b505af1158015611132573d6000803e3d6000fd5b505050506040513d602081101561114857600080fd5b81019080805190602001909291905050506111ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180611dad6033913960400191505060405180910390fd5b60008060025411156111ed576111ea600a6111dc6003546111ce866115a1565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b90505b60006002541115611202576112018161190d565b5b600061120d336116c5565b905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055506112c6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546112b884866118c390919063ffffffff16565b611a4390919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600554600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555061140c6113fb83856118c390919063ffffffff16565b600254611a4390919063ffffffff16565b6002819055507f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c3361144784866118c390919063ffffffff16565b84604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461150457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000806115b8606484611acb90919063ffffffff16565b905060006115e96002600a0a6064026115db6064856115f590919063ffffffff16565b61167b90919063ffffffff16565b90508092505050919050565b6000808314156116085760009050611675565b600082840290508284828161161957fe5b0414611670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611de06021913960400191505060405180910390fd5b809150505b92915050565b60006116bd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae6565b905092915050565b60008061179d60075461178f600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611781600a60006001600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b61167b90919063ffffffff16565b9050600754611863600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611855600a60006001600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154038152602001908152602001600020546005546118c390919063ffffffff16565b6115f590919063ffffffff16565b8161186a57fe5b06600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254019250508190555080915050919050565b600061190583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bac565b905092915050565b600061193860065461192a600754856115f590919063ffffffff16565b611a4390919063ffffffff16565b905060006119516002548361167b90919063ffffffff16565b905061196860025483611c6c90919063ffffffff16565b60068190555061198381600554611a4390919063ffffffff16565b6005819055506119b481600a6000600160085403815260200190815260200160002054611a4390919063ffffffff16565b600a60006008548152602001908152602001600020819055507fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b66008548433604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600860008154809291906001019190505550505050565b600080828401905083811015611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000818260018486010381611adc57fe5b0402905092915050565b60008083118290611b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b57578082015181840152602081019050611b3c565b50505050905090810190601f168015611b845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611b9e57fe5b049050809150509392505050565b6000838311158290611c59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1e578082015181840152602081019050611c03565b50505050905090810190601f168015611c4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000611cae83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611cb6565b905092915050565b6000808314158290611d63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d28578082015181840152602081019050611d0d565b50505050905090810190601f168015611d555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50828481611d6d57fe5b069050939250505056fe4249545420546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e744249545420546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552524f523a206572726f7220696e2073656e64696e672042495454207265776172642066726f6d20636f6e7472616374496e76616c6964204249545420746f6b656e20616d6f756e7420746f207769746864726177a26469706673582212202fee3714c32f2cc7dce6aa4d49ab55381aa309ad66f84a1a4a077ce90ae2a74e64736f6c634300060c0033
Deployed Bytecode Sourcemap
7811:8575:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8458:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13904:1194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11835:708;;;:::i;:::-;;13202:406;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16248:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6142:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8074:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15838:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10572:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7958:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9111:1151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7881:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6410:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8206:21;;;;:::o;8458:40::-;;;;;;;;;;;;;;;;;:::o;13904:1194::-;14012:6;13976:7;:19;13984:10;13976:19;;;;;;;;;;;;;;;:32;;;:42;;:56;;;;;14031:1;14022:6;:10;13976:56;13968:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14095:21;14119:46;14162:2;14120:36;14143:12;;14120:18;14131:6;14120:10;:18::i;:::-;:22;;:36;;;;:::i;:::-;14119:42;;:46;;;;:::i;:::-;14095:70;;14291:13;14307:25;14321:10;14307:13;:25::i;:::-;14291:41;;14376:5;14343:7;:19;14351:10;14343:19;;;;;;;;;;;;;;;:29;;;:38;;;;;;;;;;;14425:4;;;;;;;;;;;14418:21;;;14440:10;14452:25;14463:13;14452:6;:10;;:25;;;;:::i;:::-;14418:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14410:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14570:44;14607:6;14570:7;:19;14578:10;14570:19;;;;;;;;;;;;;;;:32;;;:36;;:44;;;;:::i;:::-;14535:7;:19;14543:10;14535:19;;;;;;;;;;;;;;;:32;;:79;;;;14661:5;14625:7;:19;14633:10;14625:19;;;;;;;;;;;;;;;:33;;:41;;;;14716:14;;14677:7;:19;14685:10;14677:19;;;;;;;;;;;;;;;:37;;:53;;;;14770:5;;14741:7;:19;14749:10;14741:19;;;;;;;;;;;;;;;:25;;:34;;;;14810:23;14826:6;14810:11;;:15;;:23;;;;:::i;:::-;14796:11;:37;;;;14871:1;14857:11;;:15;14854:148;;;14977:25;14988:13;14977:10;:25::i;:::-;14854:148;15028:62;15037:10;15049:25;15060:13;15049:6;:10;;:25;;;;:::i;:::-;15076:13;15028:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13904:1194;;;:::o;11835:708::-;11896:7;:19;11904:10;11896:19;;;;;;;;;;;;;;;:37;;;11879:14;;:54;11876:660;;;11949:13;11965:25;11979:10;11965:13;:25::i;:::-;11949:41;;12023:40;12033:7;:19;12041:10;12033:19;;;;;;;;;;;;;;;:29;;;12023:5;:9;;:40;;;;:::i;:::-;12015:48;;12110:1;12078:7;:19;12086:10;12078:19;;;;;;;;;;;;;;;:29;;:33;;;;12151:4;;;;;;;;;;;12144:21;;;12166:10;12177:5;12144:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12267:32;12281:10;12293:5;12267:32;;;;;;;;;;;;;;;;;;;;;;;;;;12360:5;12324:7;:19;12332:10;12324:19;;;;;;;;;;;;;;;:33;;:41;;;;12420:5;;12392:7;:19;12400:10;12392:19;;;;;;;;;;;;;;;:25;;:33;;;;12500:14;;12460:7;:19;12468:10;12460:19;;;;;;;;;;;;;;;:37;;:54;;;;11876:660;;11835:708::o;13202:406::-;13264:22;13299:14;13317:105;13414:7;;13318:90;13379:7;:15;13387:6;13379:15;;;;;;;;;;;;;;;:28;;;13319:54;13338:7;:34;13370:1;13346:7;:15;13354:6;13346:15;;;;;;;;;;;;;;;:21;;;:25;13338:34;;;;;;;;;;;;13319:14;;:18;;:54;;;;:::i;:::-;13318:60;;:90;;;;:::i;:::-;13317:96;;:105;;;;:::i;:::-;13299:123;;13538:7;;13444:90;13505:7;:15;13513:6;13505:15;;;;;;;;;;;;;;;:28;;;13445:54;13464:7;:34;13496:1;13472:7;:15;13480:6;13472:15;;;;;;;;;;;;;;;:21;;;:25;13464:34;;;;;;;;;;;;13445:14;;:18;;:54;;;;:::i;:::-;13444:60;;:90;;;;:::i;:::-;13443:102;;;;;;13433:112;;;;13574:7;:15;13582:6;13574:15;;;;;;;;;;;;;;;:25;;;13565:6;:34;13557:43;;;13202:406;;;:::o;16248:135::-;16309:19;16354:4;;;;;;;;;;;16347:22;;;16370:4;16347:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16340:35;;16248:135;;;:::o;6142:28::-;;;;;;;;;;;;:::o;8074:33::-;;;;:::o;15838:135::-;15900:18;15937:7;:15;15945:6;15937:15;;;;;;;;;;;;;;;:28;;;15930:35;;15838:135;;;:::o;10572:217::-;10641:4;;;;;;;;;;;10634:25;;;10660:10;10680:4;10687:6;10634:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10626:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10763:18;10774:6;10763:10;:18::i;:::-;10572:217;:::o;7958:30::-;;;;:::o;9111:1151::-;9177:4;;;;;;;;;;;9170:25;;;9196:10;9216:4;9223:6;9170:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9162:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9307:19;9358:1;9344:11;;:15;9341:90;;;9387:44;9428:2;9388:34;9411:10;;9388:18;9399:6;9388:10;:18::i;:::-;:22;;:34;;;;:::i;:::-;9387:40;;:44;;;;:::i;:::-;9374:57;;9341:90;9470:1;9456:11;;:15;9453:144;;;9574:23;9585:11;9574:10;:23::i;:::-;9453:144;9727:13;9743:25;9757:10;9743:13;:25::i;:::-;9727:41;;9812:5;9779:7;:19;9787:10;9779:19;;;;;;;;;;;;;;;:29;;;:38;;;;;;;;;;;9873:63;9903:7;:19;9911:10;9903:19;;;;;;;;;;;;;;;:32;;;9874:23;9885:11;9874:6;:10;;:23;;;;:::i;:::-;9873:29;;:63;;;;:::i;:::-;9838:7;:19;9846:10;9838:19;;;;;;;;;;;;;;;:32;;:98;;;;9983:5;9947:7;:19;9955:10;9947:19;;;;;;;;;;;;;;;:33;;:41;;;;10038:14;;9999:7;:19;10007:10;9999:19;;;;;;;;;;;;;;;:37;;:53;;;;10092:5;;10063:7;:19;10071:10;10063:19;;;;;;;;;;;;;;;:25;;:34;;;;10132:40;10148:23;10159:11;10148:6;:10;;:23;;;;:::i;:::-;10132:11;;:15;;:40;;;;:::i;:::-;10118:11;:54;;;;10198:56;10205:10;10217:23;10228:11;10217:6;:10;;:23;;;;:::i;:::-;10242:11;10198:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9111:1151;;;:::o;7881:64::-;;;;;;;;;;;;;:::o;6410:166::-;6376:5;;;;;;;;;;6362:19;;:10;:19;;;6354:28;;;;;;6500:9:::1;6492:5;::::0;:17:::1;;;;;;;;;;;;;;;;;;6558:9;6525:43;;6546:10;6525:43;;;;;;;;;;;;6410:166:::0;:::o;15324:239::-;15383:7;15402:18;15423:17;15436:3;15423:7;:12;;:17;;;;:::i;:::-;15402:38;;15451:23;15477:42;15516:1;15507:2;:11;15501:3;:17;15477:19;15492:3;15477:10;:14;;:19;;;;:::i;:::-;:23;;:42;;;;:::i;:::-;15451:68;;15537:18;15530:25;;;;15324:239;;;:::o;2715:471::-;2773:7;3023:1;3018;:6;3014:47;;;3048:1;3041:8;;;;3014:47;3073:9;3089:1;3085;:5;3073:17;;3118:1;3113;3109;:5;;;;;;:10;3101:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3177:1;3170:8;;;2715:471;;;;;:::o;3662:132::-;3720:7;3747:39;3751:1;3754;3747:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3740:46;;3662:132;;;;:::o;12816:374::-;12872:7;12892:14;12910:105;13007:7;;12911:90;12972:7;:15;12980:6;12972:15;;;;;;;;;;;;;;;:28;;;12912:54;12931:7;:34;12963:1;12939:7;:15;12947:6;12939:15;;;;;;;;;;;;;;;:21;;;:25;12931:34;;;;;;;;;;;;12912:14;;:18;;:54;;;;:::i;:::-;12911:60;;:90;;;;:::i;:::-;12910:96;;:105;;;;:::i;:::-;12892:123;;13150:7;;13056:90;13117:7;:15;13125:6;13117:15;;;;;;;;;;;;;;;:28;;;13057:54;13076:7;:34;13108:1;13084:7;:15;13092:6;13084:15;;;;;;;;;;;;;;;:21;;;:25;13076:34;;;;;;;;;;;;13057:14;;:18;;:54;;;;:::i;:::-;13056:60;;:90;;;;:::i;:::-;13055:102;;;;;;13026:7;:15;13034:6;13026:15;;;;;;;;;;;;;;;:25;;;:131;;;;;;;;;;;13176:6;13169:13;;;12816:374;;;:::o;1825:136::-;1883:7;1910:43;1914:1;1917;1910:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1903:50;;1825:136;;;;:::o;11008:585::-;11186:17;11206:42;11232:15;;11207:19;11218:7;;11207:6;:10;;:19;;;;:::i;:::-;11206:25;;:42;;;;:::i;:::-;11186:62;;11260:24;11287:26;11301:11;;11287:9;:13;;:26;;;;:::i;:::-;11260:53;;11342:26;11356:11;;11342:9;:13;;:26;;;;:::i;:::-;11324:15;:44;;;;11406:36;11425:16;11406:14;;:18;;:36;;;;:::i;:::-;11389:14;:53;;;;11470:38;11491:16;11470:7;:16;11484:1;11478:5;;:7;11470:16;;;;;;;;;;;;:20;;:38;;;;:::i;:::-;11453:7;:14;11461:5;;11453:14;;;;;;;;;;;:55;;;;11534:33;11541:5;;11548:6;11556:10;11534:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11578:5;;:7;;;;;;;;;;;;;11008:585;;;:::o;1361:181::-;1419:7;1439:9;1455:1;1451;:5;1439:17;;1480:1;1475;:6;;1467:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:1;1526:8;;;1361:181;;;;:::o;5826:106::-;5879:6;5923:1;5919;5914;5910;5906;:5;:9;5905:15;;;;;;:19;5898:26;;5826:106;;;;:::o;4290:278::-;4376:7;4408:1;4404;:5;4411:12;4396:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:9;4451:1;4447;:5;;;;;;4435:17;;4559:1;4552:8;;;4290:278;;;;;:::o;2264:192::-;2350:7;2383:1;2378;:6;;2386:12;2370:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:9;2426:1;2422;:5;2410:17;;2447:1;2440:8;;;2264:192;;;;;:::o;5033:130::-;5091:7;5118:37;5122:1;5125;5118:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;5111:44;;5033:130;;;;:::o;5648:166::-;5734:7;5767:1;5762;:6;;5770:12;5754:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5805:1;5801;:5;;;;;;5794:12;;5648:166;;;;;:::o
Swarm Source
ipfs://2fee3714c32f2cc7dce6aa4d49ab55381aa309ad66f84a1a4a077ce90ae2a74e
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.