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 5,410 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 20409083 | 152 days ago | IN | 0 ETH | 0.00024283 | ||||
Withdraw All Fun... | 18977248 | 352 days ago | IN | 0 ETH | 0.00346951 | ||||
Claim | 18922766 | 360 days ago | IN | 0 ETH | 0.00216739 | ||||
Claim | 18922734 | 360 days ago | IN | 0 ETH | 0.00289427 | ||||
Claim | 18922699 | 360 days ago | IN | 0 ETH | 0.0027461 | ||||
Claim | 18922647 | 360 days ago | IN | 0 ETH | 0.00227249 | ||||
Claim | 18915406 | 361 days ago | IN | 0 ETH | 0.00147068 | ||||
Stake | 18831609 | 372 days ago | IN | 0 ETH | 0.00958401 | ||||
Claim | 18750606 | 384 days ago | IN | 0 ETH | 0.00254849 | ||||
Claim | 18715188 | 389 days ago | IN | 0 ETH | 0.00517225 | ||||
Claim | 18633482 | 400 days ago | IN | 0 ETH | 0.00253736 | ||||
Claim | 18633077 | 400 days ago | IN | 0 ETH | 0.00246917 | ||||
Claim | 18495085 | 420 days ago | IN | 0 ETH | 0.00127726 | ||||
Claim | 18105165 | 474 days ago | IN | 0 ETH | 0.00124681 | ||||
Claim | 18104996 | 474 days ago | IN | 0 ETH | 0.00121564 | ||||
Claim | 17905265 | 502 days ago | IN | 0 ETH | 0.00150022 | ||||
Claim | 17783632 | 519 days ago | IN | 0 ETH | 0.00223501 | ||||
Claim | 17783553 | 519 days ago | IN | 0 ETH | 0.00183034 | ||||
Claim | 17783516 | 519 days ago | IN | 0 ETH | 0.00187418 | ||||
Claim | 17783504 | 519 days ago | IN | 0 ETH | 0.00156096 | ||||
Claim | 17783483 | 519 days ago | IN | 0 ETH | 0.00191538 | ||||
Claim | 17783441 | 519 days ago | IN | 0 ETH | 0.00222475 | ||||
Claim | 17783427 | 519 days ago | IN | 0 ETH | 0.00191022 | ||||
Claim | 17783188 | 519 days ago | IN | 0 ETH | 0.00154848 | ||||
Claim | 17613840 | 543 days ago | IN | 0 ETH | 0.00282442 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13247043 | 1197 days ago | 0.01303 ETH |
Loading...
Loading
Contract Name:
DPRStaking
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-06 */ pragma solidity ^0.5.12; pragma experimental ABIEncoderV2; /** * @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. * * _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; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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 Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev 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"); } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /** * @dev These functions deal with verification of Merkle trees (hash trees), */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } } interface IMigrate { function migrate(address addr, uint256 amount) external returns(bool); } contract DPRStaking { using SafeMath for uint256; using SafeERC20 for IERC20; uint256 DPR_UNIT = 10 ** 18; IERC20 public dpr; uint256 public staking_time = 270 days; // lock for 9 months uint256 private total_release_time; // linear release in 3 months // uint256 private reward_time = 0; uint256 private total_level; address public owner; IMigrate public migrate_address; bool public pause; mapping (address => uint256) private user_staking_amount; mapping (address => uint256) private user_release_time; mapping (address => uint256) private user_claimed_map; mapping (address => string) private dpr_address_mapping; mapping (string => address) private address_dpr_mapping; mapping (address => bool) private user_start_claim; mapping (address => uint256) private user_staking_time; //modifiers modifier onlyOwner() { require(msg.sender==owner, "DPRStaking: Only owner can operate this function"); _; } modifier whenNotPaused(){ require(pause == false, "DPRStaking: Pause!"); _; } //events event Stake(address indexed user, string DPRAddress, uint256 indexed amount); event StakeChange(address indexed user, uint256 indexed oldAmount, uint256 indexed newAmount); event OwnerShipTransfer(address indexed oldOwner, address indexed newOwner); event DPRAddressChange(bytes32 oldAddress, bytes32 newAddress); event UserInfoChange(address indexed oldUser, address indexed newUser); event WithdrawAllFunds(address indexed to); event Migrate(address indexed migrate_address, uint256 indexed migrate_amount); event MigrateAddressSet(address indexed migrate_address); event ExtendStakingTime(address indexed addr); event AdminWithdrawUserFund(address indexed addr); constructor(IERC20 _dpr) public { dpr = _dpr; total_release_time = 90 days; // for initialize owner = msg.sender; } function stake(string calldata DPRAddress, uint256 amount) external whenNotPaused returns(bool){ require(user_staking_amount[msg.sender] == 0, "DPRStaking: Already stake, use addStaking instead"); checkDPRAddress(msg.sender, DPRAddress); uint256 staking_amount = amount; dpr.safeTransferFrom(msg.sender, address(this), staking_amount); user_staking_amount[msg.sender] = staking_amount; user_staking_time[msg.sender] = block.timestamp; user_release_time[msg.sender] = block.timestamp + staking_time; //user_staking_level[msg.sender] = level; dpr_address_mapping[msg.sender] = DPRAddress; address_dpr_mapping[DPRAddress] = msg.sender; emit Stake(msg.sender, DPRAddress, staking_amount); return true; } function addAndExtendStaking(uint256 amount) external whenNotPaused returns(bool) { require(!canUserClaim(msg.sender), "DPRStaking: Can only claim"); uint256 oldStakingAmount = user_staking_amount[msg.sender]; require(oldStakingAmount > 0, "DPRStaking: Please Stake first"); dpr.safeTransferFrom(msg.sender, address(this), amount); //update user staking amount user_staking_amount[msg.sender] = user_staking_amount[msg.sender].add(amount); user_staking_time[msg.sender] = block.timestamp; user_release_time[msg.sender] = block.timestamp + staking_time; emit StakeChange(msg.sender, oldStakingAmount, user_staking_amount[msg.sender]); return true; } function claim() external whenNotPaused returns(bool){ require(canUserClaim(msg.sender), "DPRStaking: Not reach the release time"); require(block.timestamp >= user_release_time[msg.sender], "DPRStaking: Not release period"); if(!user_start_claim[msg.sender]){ user_start_claim[msg.sender] == true; } uint256 staking_amount = user_staking_amount[msg.sender]; require(staking_amount > 0, "DPRStaking: Must stake first"); uint256 user_claimed = user_claimed_map[msg.sender]; uint256 claim_per_period = staking_amount.mul(1 days).div(total_release_time); uint256 time_pass = block.timestamp.sub(user_release_time[msg.sender]).div(1 days); uint256 total_claim_amount = claim_per_period * time_pass; if(total_claim_amount >= user_staking_amount[msg.sender]){ total_claim_amount = user_staking_amount[msg.sender]; user_staking_amount[msg.sender] = 0; } user_claimed_map[msg.sender] = total_claim_amount; uint256 claim_this_time = total_claim_amount.sub(user_claimed); dpr.safeTransfer(msg.sender, claim_this_time); return true; } function transferOwnership(address newOwner) onlyOwner external returns(bool){ require(newOwner != address(0), "DPRStaking: Transfer Ownership to zero address"); owner = newOwner; emit OwnerShipTransfer(msg.sender, newOwner); } //for emergency case, Deeper Offical can help users to modify their staking info function modifyUserAddress(address user, string calldata DPRAddress) external onlyOwner returns(bool){ require(user_staking_amount[user] > 0, "DPRStaking: User does not have any record"); require(address_dpr_mapping[DPRAddress] == address(0), "DPRStaking: DPRAddress already in use"); bytes32 oldDPRAddressHash = keccak256(abi.encodePacked(dpr_address_mapping[user])); bytes32 newDPRAddressHash = keccak256(abi.encodePacked(DPRAddress)); require(oldDPRAddressHash != newDPRAddressHash, "DPRStaking: DPRAddress is same"); dpr_address_mapping[user] = DPRAddress; delete address_dpr_mapping[dpr_address_mapping[user]]; address_dpr_mapping[DPRAddress] = user; emit DPRAddressChange(oldDPRAddressHash, newDPRAddressHash); return true; } //for emergency case(User lost their control of their accounts), Deeper Offical can help users to transfer their staking info to a new address function transferUserInfo(address oldUser, address newUser) external onlyOwner returns(bool){ require(oldUser != newUser, "DPRStaking: Address are same"); require(user_staking_amount[oldUser] > 0, "DPRStaking: Old user does not have any record"); require(user_staking_amount[newUser] == 0, "DPRStaking: New user must a clean address"); //Transfer Staking Info user_staking_amount[newUser] = user_staking_amount[oldUser]; user_release_time[newUser] = user_release_time[oldUser]; //Transfer claim Info user_claimed_map[newUser] = user_claimed_map[oldUser]; //Transfer address mapping info address_dpr_mapping[dpr_address_mapping[oldUser]] = newUser; dpr_address_mapping[newUser] = dpr_address_mapping[oldUser]; user_staking_time[msg.sender] = block.timestamp; //clear account clearAccount(oldUser,false); emit UserInfoChange(oldUser, newUser); return true; } //for emergency case, Deeper Offical have permission to withdraw all fund in the contract function withdrawAllFund(address token,uint256 amount) external onlyOwner returns(bool){ IERC20(token).safeTransfer(owner,amount); emit WithdrawAllFunds(owner); return true; } function setPause(bool is_pause) external onlyOwner returns(bool){ pause = is_pause; return true; } function adminWithdrawUserFund(address user) external onlyOwner returns(bool){ require(user_staking_amount[user] >0, "DPRStaking: No staking"); dpr.safeTransfer(user, user_staking_amount[user]); clearAccount(user, true); emit AdminWithdrawUserFund(user); return true; } function clearAccount(address user, bool is_clear_address) private{ delete user_staking_amount[user]; delete user_release_time[user]; delete user_claimed_map[user]; // delete user_staking_period_index[user]; // delete user_staking_periods[user]; delete user_staking_time[user]; if(is_clear_address){ delete address_dpr_mapping[dpr_address_mapping[user]]; } delete dpr_address_mapping[user]; } function extendStaking() external returns(bool){ require(user_staking_amount[msg.sender] > 0, "DPRStaking: User does not stake"); require(!isUserClaim(msg.sender), "DPRStaking: User start claim"); // Can be extended up to 12 hours before the staking end //require(block.timestamp >= user_release_time[msg.sender].sub(43200) && block.timestamp <=user_release_time[msg.sender], "DPRStaking: Too early"); user_release_time[msg.sender] = user_release_time[msg.sender] + staking_time; emit ExtendStakingTime(msg.sender); return true; } function migrate() external returns(bool){ uint256 staking_amount = user_staking_amount[msg.sender]; require(staking_amount >0, "DPRStaking: User does not stake"); require(address(migrate_address) != address(0), "DPRStaking: Staking not start"); clearAccount(msg.sender, true); dpr.approve(address(migrate_address), uint256(-1)); migrate_address.migrate(msg.sender, staking_amount); emit Migrate(address(migrate_address), staking_amount); return true; } function setMigrateAddress(address _migrate_address) external onlyOwner returns(bool){ migrate_address = IMigrate(_migrate_address); emit MigrateAddressSet(_migrate_address); return true; } function checkDPRAddress(address _address, string memory _dprAddress) private{ require(keccak256(abi.encodePacked(dpr_address_mapping[_address])) == bytes32(hex"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"), "DPRStaking: DPRAddress already set"); require(address_dpr_mapping[_dprAddress] == address(0), "DPRStaking: ETH address already bind an DPRAddress"); } // function isUserStartRelease(address _user) external view returns(bool){ // return user_start_release[msg.sender]; // } function getUserDPRAddress(address user) external view returns(string memory){ return dpr_address_mapping[user]; } function getUserAddressByDPRAddress(string calldata dpr_address) external view returns(address){ return address_dpr_mapping[dpr_address]; } function getReleaseTime(address user) external view returns(uint256){ return user_release_time[user]; } function getStaking(address user) external view returns(uint256){ return user_staking_amount[user]; } function getUserReleasePerDay(address user) external view returns(uint256){ uint256 staking_amount = user_staking_amount[user]; uint256 release_per_day = staking_amount.mul(1 days).div(total_release_time); return release_per_day; } function getUserClaimInfo(address user) external view returns(uint256){ return user_claimed_map[user]; } function getReleaseTimeInDays() external view returns(uint256){ return total_release_time.div(1 days); } function getUserStakingTime(address user) external view returns(uint256){ return user_staking_time[user]; } function canUserClaim(address user) public view returns(bool){ return block.timestamp >= (user_staking_time[user] + staking_time); } function isUserClaim(address user) public view returns(bool){ return user_start_claim[user]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_dpr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AdminWithdrawUserFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"oldAddress","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newAddress","type":"bytes32"}],"name":"DPRAddressChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"ExtendStakingTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"migrate_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"migrate_amount","type":"uint256"}],"name":"Migrate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"migrate_address","type":"address"}],"name":"MigrateAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerShipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"string","name":"DPRAddress","type":"string"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"StakeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldUser","type":"address"},{"indexed":true,"internalType":"address","name":"newUser","type":"address"}],"name":"UserInfoChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"WithdrawAllFunds","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addAndExtendStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"adminWithdrawUserFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"canUserClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dpr","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"extendStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getReleaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReleaseTimeInDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"dpr_address","type":"string"}],"name":"getUserAddressByDPRAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserDPRAddress","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserReleasePerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserStakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"migrate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migrate_address","outputs":[{"internalType":"contract IMigrate","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"string","name":"DPRAddress","type":"string"}],"name":"modifyUserAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_migrate_address","type":"address"}],"name":"setMigrateAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"is_pause","type":"bool"}],"name":"setPause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"DPRAddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"staking_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"oldUser","type":"address"},{"internalType":"address","name":"newUser","type":"address"}],"name":"transferUserInfo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawAllFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052670de0b6b3a7640000600055630163f5006002553480156200002557600080fd5b506040516200280138038062002801833981016040819052620000489162000091565b600180546001600160a01b039092166001600160a01b03199283161790556276a7006003556005805490911633179055620000fa565b80516200008b81620000e0565b92915050565b600060208284031215620000a457600080fd5b6000620000b284846200007e565b949350505050565b60006200008b82620000d4565b60006200008b82620000ba565b6001600160a01b031690565b620000eb81620000c7565b8114620000f757600080fd5b50565b6126f7806200010a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637218fecf116100f95780639494c8ae11610097578063e266c8b411610071578063e266c8b414610355578063ee75defd14610368578063f2fde38b1461037b578063f63013aa1461038e576101a9565b80639494c8ae1461031a578063bedb86fb1461032d578063d50912ef14610340576101a9565b80638456cb59116100d35780638456cb59146102ef57806387716218146102f75780638da5cb5b1461030a5780638fd3ab8014610312576101a9565b80637218fecf146102c157806373496bce146102d45780637d4c69ff146102dc576101a9565b806339cdf4ed116101665780635f3797e8116101405780635f3797e81461027357806363bba05f146102935780636d538264146102a657806370f8b13b146102b9576101a9565b806339cdf4ed146102385780634122869a1461024b5780634e71d92d1461026b576101a9565b80630cb7eb4c146101ae5780630e8be90f146101d757806311c88633146101f75780632f2b2a6d1461020a57806331fad8281461021d5780633647bdfe14610225575b600080fd5b6101c16101bc3660046119b4565b610396565b6040516101ce91906125f2565b60405180910390f35b6101ea6101e53660046119b4565b6103b1565b6040516101ce9190612405565b6101c16102053660046119b4565b6103cf565b6101ea6102183660046119b4565b6103ea565b6101c16104cc565b6101ea6102333660046119d2565b6104d2565b6101ea6102463660046119b4565b6106d2565b61025e6102593660046119b4565b6106f7565b6040516101ce9190612441565b6101ea6107a2565b610286610281366004611ace565b61095b565b6040516101ce91906123a6565b6101ea6102a1366004611b65565b610990565b6101ea6102b43660046119b4565b610ab3565b6101c1610b2f565b6101ea6102cf366004611a62565b610b4d565b6101ea610bdb565b6101c16102ea3660046119b4565b610c75565b6101ea610cb2565b6101c16103053660046119b4565b610cc2565b610286610cdd565b6101ea610cec565b6101ea610328366004611b10565b610e9c565b6101ea61033b366004611a92565b611023565b610348611071565b6040516101ce9190612421565b6101ea610363366004611a0c565b611080565b6101c16103763660046119b4565b6112af565b6101ea6103893660046119b4565b6112ca565b61034861136b565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b6005546000906001600160a01b031633146104205760405162461bcd60e51b8152600401610417906125c2565b60405180910390fd5b6001600160a01b0382166000908152600760205260409020546104555760405162461bcd60e51b815260040161041790612562565b6001600160a01b03808316600090815260076020526040902054600154610485921690849063ffffffff61137a16565b6104908260016113d8565b6040516001600160a01b038316907f67ddb6d9efe38cd4bb7c866664614d1a43da045b836f71f547f3fd4314d7d19f90600090a2506001919050565b60025481565b6005546000906001600160a01b031633146104ff5760405162461bcd60e51b8152600401610417906125c2565b816001600160a01b0316836001600160a01b031614156105315760405162461bcd60e51b815260040161041790612452565b6001600160a01b0383166000908152600760205260409020546105665760405162461bcd60e51b815260040161041790612512565b6001600160a01b0382166000908152600760205260409020541561059c5760405162461bcd60e51b815260040161041790612572565b6001600160a01b0380841660008181526007602090815260408083205494871680845281842095909555838352600882528083205485845281842055838352600982528083205494835280832094909455918152600a90915281902090518391600b91610609919061239a565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790558583166000908152600a90925280822092851682529020815461066a9290600261010060018316150260001901909116046117eb565b50336000908152600d602052604081204290556106889084906113d8565b816001600160a01b0316836001600160a01b03167f8483c64d8e9cddd729cab04f8100e6205ddab27d86bbbb75360ebe38d5e3817860405160405180910390a35060015b92915050565b6002546001600160a01b0382166000908152600d602052604090205401421015919050565b6001600160a01b0381166000908152600a602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156107965780601f1061076b57610100808354040283529160200191610796565b820191906000526020600020905b81548152906001019060200180831161077957829003601f168201915b50505050509050919050565b600654600090600160a01b900460ff16156107cf5760405162461bcd60e51b815260040161041790612522565b6107d8336106d2565b6107f45760405162461bcd60e51b8152600401610417906124d2565b336000908152600860205260409020544210156108235760405162461bcd60e51b815260040161041790612532565b336000908152600c602052604090205460ff166108445733600052600c6020525b33600090815260076020526040902054806108715760405162461bcd60e51b8152600401610417906125d2565b336000908152600960205260408120546003549091906108aa9061089e856201518063ffffffff61148316565b9063ffffffff6114bd16565b33600090815260086020526040812054919250906108d890620151809061089e90429063ffffffff6114ff16565b3360009081526007602052604090205490915082820290811061090b575033600090815260076020526040812080549190555b33600090815260096020526040812082905561092d828663ffffffff6114ff16565b60015490915061094d906001600160a01b0316338363ffffffff61137a16565b600196505050505050505b90565b6000600b838360405161096f92919061238d565b908152604051908190036020019020546001600160a01b0316905092915050565b600654600090600160a01b900460ff16156109bd5760405162461bcd60e51b815260040161041790612522565b6109c6336106d2565b156109e35760405162461bcd60e51b815260040161041790612482565b3360009081526007602052604090205480610a105760405162461bcd60e51b815260040161041790612492565b600154610a2e906001600160a01b031633308663ffffffff61154116565b33600090815260076020526040902054610a4e908463ffffffff61156b16565b336000818152600760208181526040808420958655600d825280842042908190556002546008845282862091019055919052925492518492917fe2c1bfe296058de814835611e32a9c3c43c9ced4a59565eea909bd4caf22667c91a450600192915050565b6005546000906001600160a01b03163314610ae05760405162461bcd60e51b8152600401610417906125c2565b600680546001600160a01b0319166001600160a01b0384169081179091556040517fe074a544f929ec91e7054c0efa2673b09d6369ab50e0b5f43266f263777b01c390600090a2506001919050565b600354600090610b48906201518063ffffffff6114bd16565b905090565b6005546000906001600160a01b03163314610b7a5760405162461bcd60e51b8152600401610417906125c2565b600554610b9a906001600160a01b0385811691168463ffffffff61137a16565b6005546040516001600160a01b03909116907f98bc5ca0f56697ed898c217b7562d70bd8fe2e90ef8ebc9950ef5470d366deca90600090a250600192915050565b33600090815260076020526040812054610c075760405162461bcd60e51b8152600401610417906125b2565b610c10336103b1565b15610c2d5760405162461bcd60e51b815260040161041790612552565b600254336000818152600860205260408082208054909401909355915190917f9a1442aa3fd2e6bf397fade47d05583718ae099f911c569baed3448808c1543891a250600190565b6001600160a01b0381166000908152600760205260408120546003548290610caa9061089e846201518063ffffffff61148316565b949350505050565b600654600160a01b900460ff1681565b6001600160a01b03166000908152600d602052604090205490565b6005546001600160a01b031681565b3360009081526007602052604081205480610d195760405162461bcd60e51b8152600401610417906125b2565b6006546001600160a01b0316610d415760405162461bcd60e51b8152600401610417906124c2565b610d4c3360016113d8565b60015460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610d8492911690600019906004016123f7565b602060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd69190810190611ab0565b5060065460405163ad68ebf760e01b81526001600160a01b039091169063ad68ebf790610e0990339085906004016123b4565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5b9190810190611ab0565b5060065460405182916001600160a01b0316907fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d90600090a3600191505090565b600654600090600160a01b900460ff1615610ec95760405162461bcd60e51b815260040161041790612522565b3360009081526007602052604090205415610ef65760405162461bcd60e51b815260040161041790612582565b610f363385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159092505050565b6001548290610f56906001600160a01b031633308463ffffffff61154116565b336000908152600760209081526040808320849055600d825280832042908190556002546008845282852091019055600a9091529020610f97908686611870565b5033600b8686604051610fab92919061238d565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b031990931692909217909155819033907fb3b936b14d57c751f127281bf2581efcc913ded277a0d9d5acc68dfd2b9af1b99061100e908990899061242f565b60405180910390a360019150505b9392505050565b6005546000906001600160a01b031633146110505760405162461bcd60e51b8152600401610417906125c2565b5060068054821515600160a01b0260ff60a01b199091161790556001919050565b6006546001600160a01b031681565b6005546000906001600160a01b031633146110ad5760405162461bcd60e51b8152600401610417906125c2565b6001600160a01b0384166000908152600760205260409020546110e25760405162461bcd60e51b815260040161041790612462565b60006001600160a01b0316600b84846040516110ff92919061238d565b908152604051908190036020019020546001600160a01b0316146111355760405162461bcd60e51b815260040161041790612502565b6001600160a01b0384166000908152600a60209081526040808320905161115c920161239a565b6040516020818303038152906040528051906020012090506000848460405160200161118992919061238d565b604051602081830303815290604052805190602001209050808214156111c15760405162461bcd60e51b815260040161041790612472565b6001600160a01b0386166000908152600a602052604090206111e4908686611870565b506001600160a01b0386166000908152600a6020526040908190209051600b9161120d9161239a565b90815260405190819003602001812080546001600160a01b03191690558690600b9061123c908890889061238d565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557f12300d967ae195230c7a1a16b46b4f4d12062911d36901f80d6e5524fadd1ed99061129b9084908490612413565b60405180910390a150600195945050505050565b6001600160a01b031660009081526009602052604090205490565b6005546000906001600160a01b031633146112f75760405162461bcd60e51b8152600401610417906125c2565b6001600160a01b03821661131d5760405162461bcd60e51b8152600401610417906124e2565b600580546001600160a01b0319166001600160a01b03841690811790915560405133907f39aa7b32e39346e4d63b7af2df2424277168303b5e5a6e01b6b1a014d501a7ab90600090a3919050565b6001546001600160a01b031681565b6040516113d390849063a9059cbb60e01b9061139c90869086906024016123f7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261166a565b505050565b6001600160a01b03821660009081526007602090815260408083208390556008825280832083905560098252808320839055600d909152812055801561145e576001600160a01b0382166000908152600a6020526040908190209051600b916114409161239a565b90815260405190819003602001902080546001600160a01b03191690555b6001600160a01b0382166000908152600a6020526040812061147f916118de565b5050565b600082611492575060006106cc565b8282028284828161149f57fe5b041461101c5760405162461bcd60e51b815260040161041790612542565b600061101c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061174f565b600061101c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611786565b6040516115659085906323b872dd60e01b9061139c908790879087906024016123cf565b50505050565b60008282018381101561101c5760405162461bcd60e51b8152600401610417906124a2565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470600a6000846001600160a01b03166001600160a01b031681526020019081526020016000206040516020016115e6919061239a565b60405160208183030381529060405280519060200120146116195760405162461bcd60e51b8152600401610417906124f2565b60006001600160a01b0316600b826040516116349190612381565b908152604051908190036020019020546001600160a01b03161461147f5760405162461bcd60e51b815260040161041790612592565b61167c826001600160a01b03166117b2565b6116985760405162461bcd60e51b8152600401610417906125e2565b60006060836001600160a01b0316836040516116b49190612381565b6000604051808303816000865af19150503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5091509150816117185760405162461bcd60e51b8152600401610417906124b2565b80511561156557808060200190516117339190810190611ab0565b6115655760405162461bcd60e51b8152600401610417906125a2565b600081836117705760405162461bcd60e51b81526004016104179190612441565b50600083858161177c57fe5b0495945050505050565b600081848411156117aa5760405162461bcd60e51b81526004016104179190612441565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610caa575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118245780548555611860565b8280016001018555821561186057600052602060002091601f016020900482015b82811115611860578254825591600101919060010190611845565b5061186c929150611925565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118b15782800160ff19823516178555611860565b82800160010185558215611860579182015b828111156118605782358255916020019190600101906118c3565b50805460018160011615610100020316600290046000825580601f106119045750611922565b601f0160209004906000526020600020908101906119229190611925565b50565b61095891905b8082111561186c576000815560010161192b565b80356106cc8161268e565b80356106cc816126a2565b80516106cc816126a2565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360018202830111156119a257600080fd5b9250929050565b80356106cc816126ab565b6000602082840312156119c657600080fd5b6000610caa848461193f565b600080604083850312156119e557600080fd5b60006119f1858561193f565b9250506020611a028582860161193f565b9150509250929050565b600080600060408486031215611a2157600080fd5b6000611a2d868661193f565b935050602084013567ffffffffffffffff811115611a4a57600080fd5b611a5686828701611960565b92509250509250925092565b60008060408385031215611a7557600080fd5b6000611a81858561193f565b9250506020611a02858286016119a9565b600060208284031215611aa457600080fd5b6000610caa848461194a565b600060208284031215611ac257600080fd5b6000610caa8484611955565b60008060208385031215611ae157600080fd5b823567ffffffffffffffff811115611af857600080fd5b611b0485828601611960565b92509250509250929050565b600080600060408486031215611b2557600080fd5b833567ffffffffffffffff811115611b3c57600080fd5b611b4886828701611960565b93509350506020611b5b868287016119a9565b9150509250925092565b600060208284031215611b7757600080fd5b6000610caa84846119a9565b611b8c8161263a565b82525050565b611b8c8161261e565b611b8c81612629565b611b8c81610958565b6000611bb88261260c565b611bc28185612610565b9350611bd2818560208601612658565b9290920192915050565b611b8c81612641565b6000611bf18385612615565b9350611bfe83858461264c565b611c0783612684565b9093019392505050565b6000611c1d8385612610565b9350611c2a83858461264c565b50500190565b6000611c3b8261260c565b611c458185612615565b9350611c55818560208601612658565b611c0781612684565b600081546001811660008114611c7b5760018114611c9e57611cdd565b607f6002830416611c8c8187612610565b60ff1984168152955085019250611cdd565b60028204611cac8187612610565b9550611cb785612600565b60005b82811015611cd657815488820152600190910190602001611cba565b5050850192505b505092915050565b6000611cf2601c83612615565b7f4450525374616b696e673a2041646472657373206172652073616d6500000000815260200192915050565b6000611d2b602983612615565b7f4450525374616b696e673a205573657220646f6573206e6f74206861766520618152681b9e481c9958dbdc9960ba1b602082015260400192915050565b6000611d76601e83612615565b7f4450525374616b696e673a20445052416464726573732069732073616d650000815260200192915050565b6000611daf601a83612615565b7f4450525374616b696e673a2043616e206f6e6c7920636c61696d000000000000815260200192915050565b6000611de8601e83612615565b7f4450525374616b696e673a20506c65617365205374616b652066697273740000815260200192915050565b6000611e21601b83612615565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611e5a602083612615565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611e93601d83612615565b7f4450525374616b696e673a205374616b696e67206e6f74207374617274000000815260200192915050565b6000611ecc602683612615565b7f4450525374616b696e673a204e6f74207265616368207468652072656c656173815265652074696d6560d01b602082015260400192915050565b6000611f14602e83612615565b7f4450525374616b696e673a205472616e73666572204f776e657273686970207481526d6f207a65726f206164647265737360901b602082015260400192915050565b6000611f64602283612615565b7f4450525374616b696e673a204450524164647265737320616c72656164792073815261195d60f21b602082015260400192915050565b6000611fa8602583612615565b7f4450525374616b696e673a204450524164647265737320616c726561647920698152646e2075736560d81b602082015260400192915050565b6000611fef602d83612615565b7f4450525374616b696e673a204f6c64207573657220646f6573206e6f7420686181526c1d9948185b9e481c9958dbdc99609a1b602082015260400192915050565b600061203e601283612615565b714450525374616b696e673a2050617573652160701b815260200192915050565b600061206c601e83612615565b7f4450525374616b696e673a204e6f742072656c6561736520706572696f640000815260200192915050565b60006120a5602183612615565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006120e8601c83612615565b7f4450525374616b696e673a205573657220737461727420636c61696d00000000815260200192915050565b6000612121601683612615565b754450525374616b696e673a204e6f207374616b696e6760501b815260200192915050565b6000612153602983612615565b7f4450525374616b696e673a204e65772075736572206d757374206120636c65618152686e206164647265737360b81b602082015260400192915050565b600061219e603183612615565b7f4450525374616b696e673a20416c7265616479207374616b652c207573652061815270191914dd185ada5b99c81a5b9cdd195859607a1b602082015260400192915050565b60006121f1603283612615565b7f4450525374616b696e673a20455448206164647265737320616c72656164792081527162696e6420616e204450524164647265737360701b602082015260400192915050565b6000612245602a83612615565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612291601f83612615565b7f4450525374616b696e673a205573657220646f6573206e6f74207374616b6500815260200192915050565b60006122ca603083612615565b7f4450525374616b696e673a204f6e6c79206f776e65722063616e206f7065726181526f3a32903a3434b990333ab731ba34b7b760811b602082015260400192915050565b600061231c601c83612615565b7f4450525374616b696e673a204d757374207374616b6520666972737400000000815260200192915050565b6000612355601f83612615565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061101c8284611bad565b6000610caa828486611c11565b600061101c8284611c5e565b602081016106cc8284611b92565b604081016123c28285611b83565b61101c6020830184611ba4565b606081016123dd8286611b92565b6123ea6020830185611b92565b610caa6040830184611ba4565b604081016123c28285611b92565b602081016106cc8284611b9b565b604081016123c28285611ba4565b602081016106cc8284611bdc565b60208082528101610caa818486611be5565b6020808252810161101c8184611c30565b602080825281016106cc81611ce5565b602080825281016106cc81611d1e565b602080825281016106cc81611d69565b602080825281016106cc81611da2565b602080825281016106cc81611ddb565b602080825281016106cc81611e14565b602080825281016106cc81611e4d565b602080825281016106cc81611e86565b602080825281016106cc81611ebf565b602080825281016106cc81611f07565b602080825281016106cc81611f57565b602080825281016106cc81611f9b565b602080825281016106cc81611fe2565b602080825281016106cc81612031565b602080825281016106cc8161205f565b602080825281016106cc81612098565b602080825281016106cc816120db565b602080825281016106cc81612114565b602080825281016106cc81612146565b602080825281016106cc81612191565b602080825281016106cc816121e4565b602080825281016106cc81612238565b602080825281016106cc81612284565b602080825281016106cc816122bd565b602080825281016106cc8161230f565b602080825281016106cc81612348565b602081016106cc8284611ba4565b60009081526020902090565b5190565b919050565b90815260200190565b60006106cc8261262e565b151590565b6001600160a01b031690565b60006106cc825b60006106cc8261261e565b82818337506000910152565b60005b8381101561267357818101518382015260200161265b565b838111156115655750506000910152565b601f01601f191690565b6126978161261e565b811461192257600080fd5b61269781612629565b6126978161095856fea365627a7a72315820276a5038a1f159ce09a96c68c1c3c6568c2cd015e6eddb97d1e66a9a067731c76c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000f3ae5d769e153ef72b4e3591ac004e89f48107a1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80637218fecf116100f95780639494c8ae11610097578063e266c8b411610071578063e266c8b414610355578063ee75defd14610368578063f2fde38b1461037b578063f63013aa1461038e576101a9565b80639494c8ae1461031a578063bedb86fb1461032d578063d50912ef14610340576101a9565b80638456cb59116100d35780638456cb59146102ef57806387716218146102f75780638da5cb5b1461030a5780638fd3ab8014610312576101a9565b80637218fecf146102c157806373496bce146102d45780637d4c69ff146102dc576101a9565b806339cdf4ed116101665780635f3797e8116101405780635f3797e81461027357806363bba05f146102935780636d538264146102a657806370f8b13b146102b9576101a9565b806339cdf4ed146102385780634122869a1461024b5780634e71d92d1461026b576101a9565b80630cb7eb4c146101ae5780630e8be90f146101d757806311c88633146101f75780632f2b2a6d1461020a57806331fad8281461021d5780633647bdfe14610225575b600080fd5b6101c16101bc3660046119b4565b610396565b6040516101ce91906125f2565b60405180910390f35b6101ea6101e53660046119b4565b6103b1565b6040516101ce9190612405565b6101c16102053660046119b4565b6103cf565b6101ea6102183660046119b4565b6103ea565b6101c16104cc565b6101ea6102333660046119d2565b6104d2565b6101ea6102463660046119b4565b6106d2565b61025e6102593660046119b4565b6106f7565b6040516101ce9190612441565b6101ea6107a2565b610286610281366004611ace565b61095b565b6040516101ce91906123a6565b6101ea6102a1366004611b65565b610990565b6101ea6102b43660046119b4565b610ab3565b6101c1610b2f565b6101ea6102cf366004611a62565b610b4d565b6101ea610bdb565b6101c16102ea3660046119b4565b610c75565b6101ea610cb2565b6101c16103053660046119b4565b610cc2565b610286610cdd565b6101ea610cec565b6101ea610328366004611b10565b610e9c565b6101ea61033b366004611a92565b611023565b610348611071565b6040516101ce9190612421565b6101ea610363366004611a0c565b611080565b6101c16103763660046119b4565b6112af565b6101ea6103893660046119b4565b6112ca565b61034861136b565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b6005546000906001600160a01b031633146104205760405162461bcd60e51b8152600401610417906125c2565b60405180910390fd5b6001600160a01b0382166000908152600760205260409020546104555760405162461bcd60e51b815260040161041790612562565b6001600160a01b03808316600090815260076020526040902054600154610485921690849063ffffffff61137a16565b6104908260016113d8565b6040516001600160a01b038316907f67ddb6d9efe38cd4bb7c866664614d1a43da045b836f71f547f3fd4314d7d19f90600090a2506001919050565b60025481565b6005546000906001600160a01b031633146104ff5760405162461bcd60e51b8152600401610417906125c2565b816001600160a01b0316836001600160a01b031614156105315760405162461bcd60e51b815260040161041790612452565b6001600160a01b0383166000908152600760205260409020546105665760405162461bcd60e51b815260040161041790612512565b6001600160a01b0382166000908152600760205260409020541561059c5760405162461bcd60e51b815260040161041790612572565b6001600160a01b0380841660008181526007602090815260408083205494871680845281842095909555838352600882528083205485845281842055838352600982528083205494835280832094909455918152600a90915281902090518391600b91610609919061239a565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790558583166000908152600a90925280822092851682529020815461066a9290600261010060018316150260001901909116046117eb565b50336000908152600d602052604081204290556106889084906113d8565b816001600160a01b0316836001600160a01b03167f8483c64d8e9cddd729cab04f8100e6205ddab27d86bbbb75360ebe38d5e3817860405160405180910390a35060015b92915050565b6002546001600160a01b0382166000908152600d602052604090205401421015919050565b6001600160a01b0381166000908152600a602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156107965780601f1061076b57610100808354040283529160200191610796565b820191906000526020600020905b81548152906001019060200180831161077957829003601f168201915b50505050509050919050565b600654600090600160a01b900460ff16156107cf5760405162461bcd60e51b815260040161041790612522565b6107d8336106d2565b6107f45760405162461bcd60e51b8152600401610417906124d2565b336000908152600860205260409020544210156108235760405162461bcd60e51b815260040161041790612532565b336000908152600c602052604090205460ff166108445733600052600c6020525b33600090815260076020526040902054806108715760405162461bcd60e51b8152600401610417906125d2565b336000908152600960205260408120546003549091906108aa9061089e856201518063ffffffff61148316565b9063ffffffff6114bd16565b33600090815260086020526040812054919250906108d890620151809061089e90429063ffffffff6114ff16565b3360009081526007602052604090205490915082820290811061090b575033600090815260076020526040812080549190555b33600090815260096020526040812082905561092d828663ffffffff6114ff16565b60015490915061094d906001600160a01b0316338363ffffffff61137a16565b600196505050505050505b90565b6000600b838360405161096f92919061238d565b908152604051908190036020019020546001600160a01b0316905092915050565b600654600090600160a01b900460ff16156109bd5760405162461bcd60e51b815260040161041790612522565b6109c6336106d2565b156109e35760405162461bcd60e51b815260040161041790612482565b3360009081526007602052604090205480610a105760405162461bcd60e51b815260040161041790612492565b600154610a2e906001600160a01b031633308663ffffffff61154116565b33600090815260076020526040902054610a4e908463ffffffff61156b16565b336000818152600760208181526040808420958655600d825280842042908190556002546008845282862091019055919052925492518492917fe2c1bfe296058de814835611e32a9c3c43c9ced4a59565eea909bd4caf22667c91a450600192915050565b6005546000906001600160a01b03163314610ae05760405162461bcd60e51b8152600401610417906125c2565b600680546001600160a01b0319166001600160a01b0384169081179091556040517fe074a544f929ec91e7054c0efa2673b09d6369ab50e0b5f43266f263777b01c390600090a2506001919050565b600354600090610b48906201518063ffffffff6114bd16565b905090565b6005546000906001600160a01b03163314610b7a5760405162461bcd60e51b8152600401610417906125c2565b600554610b9a906001600160a01b0385811691168463ffffffff61137a16565b6005546040516001600160a01b03909116907f98bc5ca0f56697ed898c217b7562d70bd8fe2e90ef8ebc9950ef5470d366deca90600090a250600192915050565b33600090815260076020526040812054610c075760405162461bcd60e51b8152600401610417906125b2565b610c10336103b1565b15610c2d5760405162461bcd60e51b815260040161041790612552565b600254336000818152600860205260408082208054909401909355915190917f9a1442aa3fd2e6bf397fade47d05583718ae099f911c569baed3448808c1543891a250600190565b6001600160a01b0381166000908152600760205260408120546003548290610caa9061089e846201518063ffffffff61148316565b949350505050565b600654600160a01b900460ff1681565b6001600160a01b03166000908152600d602052604090205490565b6005546001600160a01b031681565b3360009081526007602052604081205480610d195760405162461bcd60e51b8152600401610417906125b2565b6006546001600160a01b0316610d415760405162461bcd60e51b8152600401610417906124c2565b610d4c3360016113d8565b60015460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610d8492911690600019906004016123f7565b602060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd69190810190611ab0565b5060065460405163ad68ebf760e01b81526001600160a01b039091169063ad68ebf790610e0990339085906004016123b4565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5b9190810190611ab0565b5060065460405182916001600160a01b0316907fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d90600090a3600191505090565b600654600090600160a01b900460ff1615610ec95760405162461bcd60e51b815260040161041790612522565b3360009081526007602052604090205415610ef65760405162461bcd60e51b815260040161041790612582565b610f363385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159092505050565b6001548290610f56906001600160a01b031633308463ffffffff61154116565b336000908152600760209081526040808320849055600d825280832042908190556002546008845282852091019055600a9091529020610f97908686611870565b5033600b8686604051610fab92919061238d565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b031990931692909217909155819033907fb3b936b14d57c751f127281bf2581efcc913ded277a0d9d5acc68dfd2b9af1b99061100e908990899061242f565b60405180910390a360019150505b9392505050565b6005546000906001600160a01b031633146110505760405162461bcd60e51b8152600401610417906125c2565b5060068054821515600160a01b0260ff60a01b199091161790556001919050565b6006546001600160a01b031681565b6005546000906001600160a01b031633146110ad5760405162461bcd60e51b8152600401610417906125c2565b6001600160a01b0384166000908152600760205260409020546110e25760405162461bcd60e51b815260040161041790612462565b60006001600160a01b0316600b84846040516110ff92919061238d565b908152604051908190036020019020546001600160a01b0316146111355760405162461bcd60e51b815260040161041790612502565b6001600160a01b0384166000908152600a60209081526040808320905161115c920161239a565b6040516020818303038152906040528051906020012090506000848460405160200161118992919061238d565b604051602081830303815290604052805190602001209050808214156111c15760405162461bcd60e51b815260040161041790612472565b6001600160a01b0386166000908152600a602052604090206111e4908686611870565b506001600160a01b0386166000908152600a6020526040908190209051600b9161120d9161239a565b90815260405190819003602001812080546001600160a01b03191690558690600b9061123c908890889061238d565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557f12300d967ae195230c7a1a16b46b4f4d12062911d36901f80d6e5524fadd1ed99061129b9084908490612413565b60405180910390a150600195945050505050565b6001600160a01b031660009081526009602052604090205490565b6005546000906001600160a01b031633146112f75760405162461bcd60e51b8152600401610417906125c2565b6001600160a01b03821661131d5760405162461bcd60e51b8152600401610417906124e2565b600580546001600160a01b0319166001600160a01b03841690811790915560405133907f39aa7b32e39346e4d63b7af2df2424277168303b5e5a6e01b6b1a014d501a7ab90600090a3919050565b6001546001600160a01b031681565b6040516113d390849063a9059cbb60e01b9061139c90869086906024016123f7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261166a565b505050565b6001600160a01b03821660009081526007602090815260408083208390556008825280832083905560098252808320839055600d909152812055801561145e576001600160a01b0382166000908152600a6020526040908190209051600b916114409161239a565b90815260405190819003602001902080546001600160a01b03191690555b6001600160a01b0382166000908152600a6020526040812061147f916118de565b5050565b600082611492575060006106cc565b8282028284828161149f57fe5b041461101c5760405162461bcd60e51b815260040161041790612542565b600061101c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061174f565b600061101c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611786565b6040516115659085906323b872dd60e01b9061139c908790879087906024016123cf565b50505050565b60008282018381101561101c5760405162461bcd60e51b8152600401610417906124a2565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470600a6000846001600160a01b03166001600160a01b031681526020019081526020016000206040516020016115e6919061239a565b60405160208183030381529060405280519060200120146116195760405162461bcd60e51b8152600401610417906124f2565b60006001600160a01b0316600b826040516116349190612381565b908152604051908190036020019020546001600160a01b03161461147f5760405162461bcd60e51b815260040161041790612592565b61167c826001600160a01b03166117b2565b6116985760405162461bcd60e51b8152600401610417906125e2565b60006060836001600160a01b0316836040516116b49190612381565b6000604051808303816000865af19150503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b5091509150816117185760405162461bcd60e51b8152600401610417906124b2565b80511561156557808060200190516117339190810190611ab0565b6115655760405162461bcd60e51b8152600401610417906125a2565b600081836117705760405162461bcd60e51b81526004016104179190612441565b50600083858161177c57fe5b0495945050505050565b600081848411156117aa5760405162461bcd60e51b81526004016104179190612441565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610caa575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118245780548555611860565b8280016001018555821561186057600052602060002091601f016020900482015b82811115611860578254825591600101919060010190611845565b5061186c929150611925565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118b15782800160ff19823516178555611860565b82800160010185558215611860579182015b828111156118605782358255916020019190600101906118c3565b50805460018160011615610100020316600290046000825580601f106119045750611922565b601f0160209004906000526020600020908101906119229190611925565b50565b61095891905b8082111561186c576000815560010161192b565b80356106cc8161268e565b80356106cc816126a2565b80516106cc816126a2565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360018202830111156119a257600080fd5b9250929050565b80356106cc816126ab565b6000602082840312156119c657600080fd5b6000610caa848461193f565b600080604083850312156119e557600080fd5b60006119f1858561193f565b9250506020611a028582860161193f565b9150509250929050565b600080600060408486031215611a2157600080fd5b6000611a2d868661193f565b935050602084013567ffffffffffffffff811115611a4a57600080fd5b611a5686828701611960565b92509250509250925092565b60008060408385031215611a7557600080fd5b6000611a81858561193f565b9250506020611a02858286016119a9565b600060208284031215611aa457600080fd5b6000610caa848461194a565b600060208284031215611ac257600080fd5b6000610caa8484611955565b60008060208385031215611ae157600080fd5b823567ffffffffffffffff811115611af857600080fd5b611b0485828601611960565b92509250509250929050565b600080600060408486031215611b2557600080fd5b833567ffffffffffffffff811115611b3c57600080fd5b611b4886828701611960565b93509350506020611b5b868287016119a9565b9150509250925092565b600060208284031215611b7757600080fd5b6000610caa84846119a9565b611b8c8161263a565b82525050565b611b8c8161261e565b611b8c81612629565b611b8c81610958565b6000611bb88261260c565b611bc28185612610565b9350611bd2818560208601612658565b9290920192915050565b611b8c81612641565b6000611bf18385612615565b9350611bfe83858461264c565b611c0783612684565b9093019392505050565b6000611c1d8385612610565b9350611c2a83858461264c565b50500190565b6000611c3b8261260c565b611c458185612615565b9350611c55818560208601612658565b611c0781612684565b600081546001811660008114611c7b5760018114611c9e57611cdd565b607f6002830416611c8c8187612610565b60ff1984168152955085019250611cdd565b60028204611cac8187612610565b9550611cb785612600565b60005b82811015611cd657815488820152600190910190602001611cba565b5050850192505b505092915050565b6000611cf2601c83612615565b7f4450525374616b696e673a2041646472657373206172652073616d6500000000815260200192915050565b6000611d2b602983612615565b7f4450525374616b696e673a205573657220646f6573206e6f74206861766520618152681b9e481c9958dbdc9960ba1b602082015260400192915050565b6000611d76601e83612615565b7f4450525374616b696e673a20445052416464726573732069732073616d650000815260200192915050565b6000611daf601a83612615565b7f4450525374616b696e673a2043616e206f6e6c7920636c61696d000000000000815260200192915050565b6000611de8601e83612615565b7f4450525374616b696e673a20506c65617365205374616b652066697273740000815260200192915050565b6000611e21601b83612615565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611e5a602083612615565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611e93601d83612615565b7f4450525374616b696e673a205374616b696e67206e6f74207374617274000000815260200192915050565b6000611ecc602683612615565b7f4450525374616b696e673a204e6f74207265616368207468652072656c656173815265652074696d6560d01b602082015260400192915050565b6000611f14602e83612615565b7f4450525374616b696e673a205472616e73666572204f776e657273686970207481526d6f207a65726f206164647265737360901b602082015260400192915050565b6000611f64602283612615565b7f4450525374616b696e673a204450524164647265737320616c72656164792073815261195d60f21b602082015260400192915050565b6000611fa8602583612615565b7f4450525374616b696e673a204450524164647265737320616c726561647920698152646e2075736560d81b602082015260400192915050565b6000611fef602d83612615565b7f4450525374616b696e673a204f6c64207573657220646f6573206e6f7420686181526c1d9948185b9e481c9958dbdc99609a1b602082015260400192915050565b600061203e601283612615565b714450525374616b696e673a2050617573652160701b815260200192915050565b600061206c601e83612615565b7f4450525374616b696e673a204e6f742072656c6561736520706572696f640000815260200192915050565b60006120a5602183612615565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006120e8601c83612615565b7f4450525374616b696e673a205573657220737461727420636c61696d00000000815260200192915050565b6000612121601683612615565b754450525374616b696e673a204e6f207374616b696e6760501b815260200192915050565b6000612153602983612615565b7f4450525374616b696e673a204e65772075736572206d757374206120636c65618152686e206164647265737360b81b602082015260400192915050565b600061219e603183612615565b7f4450525374616b696e673a20416c7265616479207374616b652c207573652061815270191914dd185ada5b99c81a5b9cdd195859607a1b602082015260400192915050565b60006121f1603283612615565b7f4450525374616b696e673a20455448206164647265737320616c72656164792081527162696e6420616e204450524164647265737360701b602082015260400192915050565b6000612245602a83612615565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612291601f83612615565b7f4450525374616b696e673a205573657220646f6573206e6f74207374616b6500815260200192915050565b60006122ca603083612615565b7f4450525374616b696e673a204f6e6c79206f776e65722063616e206f7065726181526f3a32903a3434b990333ab731ba34b7b760811b602082015260400192915050565b600061231c601c83612615565b7f4450525374616b696e673a204d757374207374616b6520666972737400000000815260200192915050565b6000612355601f83612615565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061101c8284611bad565b6000610caa828486611c11565b600061101c8284611c5e565b602081016106cc8284611b92565b604081016123c28285611b83565b61101c6020830184611ba4565b606081016123dd8286611b92565b6123ea6020830185611b92565b610caa6040830184611ba4565b604081016123c28285611b92565b602081016106cc8284611b9b565b604081016123c28285611ba4565b602081016106cc8284611bdc565b60208082528101610caa818486611be5565b6020808252810161101c8184611c30565b602080825281016106cc81611ce5565b602080825281016106cc81611d1e565b602080825281016106cc81611d69565b602080825281016106cc81611da2565b602080825281016106cc81611ddb565b602080825281016106cc81611e14565b602080825281016106cc81611e4d565b602080825281016106cc81611e86565b602080825281016106cc81611ebf565b602080825281016106cc81611f07565b602080825281016106cc81611f57565b602080825281016106cc81611f9b565b602080825281016106cc81611fe2565b602080825281016106cc81612031565b602080825281016106cc8161205f565b602080825281016106cc81612098565b602080825281016106cc816120db565b602080825281016106cc81612114565b602080825281016106cc81612146565b602080825281016106cc81612191565b602080825281016106cc816121e4565b602080825281016106cc81612238565b602080825281016106cc81612284565b602080825281016106cc816122bd565b602080825281016106cc8161230f565b602080825281016106cc81612348565b602081016106cc8284611ba4565b60009081526020902090565b5190565b919050565b90815260200190565b60006106cc8261262e565b151590565b6001600160a01b031690565b60006106cc825b60006106cc8261261e565b82818337506000910152565b60005b8381101561267357818101518382015260200161265b565b838111156115655750506000910152565b601f01601f191690565b6126978161261e565b811461192257600080fd5b61269781612629565b6126978161095856fea365627a7a72315820276a5038a1f159ce09a96c68c1c3c6568c2cd015e6eddb97d1e66a9a067731c76c6578706572696d656e74616cf564736f6c63430005110040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f3ae5d769e153ef72b4e3591ac004e89f48107a1
-----Decoded View---------------
Arg [0] : _dpr (address): 0xf3AE5d769e153Ef72b4e3591aC004E89F48107a1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f3ae5d769e153ef72b4e3591ac004e89f48107a1
Deployed Bytecode Sourcemap
16361:11798:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16361:11798:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26991:117;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28048:108;;;;;;;;;:::i;:::-;;;;;;;;27116:115;;;;;;;;;:::i;23971:319::-;;;;;;;;;:::i;16512:38::-;;;:::i;22521:1001::-;;;;;;;;;:::i;27893:147::-;;;;;;;;;:::i;26705:128::-;;;;;;;;;:::i;:::-;;;;;;;;19961:1210;;;:::i;26839:144::-;;;;;;;;;:::i;:::-;;;;;;;;19209:744;;;;;;;;;:::i;25917:221::-;;;;;;;;;:::i;27636:118::-;;;:::i;23623:207::-;;;;;;;;;:::i;24768:599::-;;;:::i;27239:263::-;;;;;;;;;:::i;16790:17::-;;;:::i;27764:121::-;;;;;;;;;:::i;16724:20::-;;;:::i;25375:530::-;;;:::i;18400:801::-;;;;;;;;;:::i;23841:122::-;;;;;;;;;:::i;16752:31::-;;;:::i;:::-;;;;;;;;21537:829;;;;;;;;;:::i;27510:118::-;;;;;;;;;:::i;21179:259::-;;;;;;;;;:::i;16488:17::-;;;:::i;26991:117::-;-1:-1:-1;;;;;27077:23:0;27051:7;27077:23;;;:17;:23;;;;;;;26991:117::o;28048:108::-;-1:-1:-1;;;;;28126:22:0;28103:4;28126:22;;;:16;:22;;;;;;;;;28048:108::o;27116:115::-;-1:-1:-1;;;;;27198:25:0;27172:7;27198:25;;;:19;:25;;;;;;;27116:115::o;23971:319::-;17313:5;;24043:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24067:25:0;;24094:1;24067:25;;;:19;:25;;;;;;24059:63;;;;-1:-1:-1;;;24059:63:0;;;;;;;;;-1:-1:-1;;;;;24156:25:0;;;;;;;:19;:25;;;;;;24133:3;;:49;;:3;;24150:4;;24133:49;:16;:49;:::i;:::-;24193:24;24206:4;24212;24193:12;:24::i;:::-;24233:27;;-1:-1:-1;;;;;24233:27:0;;;;;;;;-1:-1:-1;24278:4:0;23971:319;;;:::o;16512:38::-;;;;:::o;22521:1001::-;17313:5;;22608:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;22643:7;-1:-1:-1;;;;;22632:18:0;:7;-1:-1:-1;;;;;22632:18:0;;;22624:59;;;;-1:-1:-1;;;22624:59:0;;;;;;;;;-1:-1:-1;;;;;22702:28:0;;22733:1;22702:28;;;:19;:28;;;;;;22694:90;;;;-1:-1:-1;;;22694:90:0;;;;;;;;;-1:-1:-1;;;;;22803:28:0;;;;;;:19;:28;;;;;;:33;22795:87;;;;-1:-1:-1;;;22795:87:0;;;;;;;;;-1:-1:-1;;;;;22957:28:0;;;;;;;:19;:28;;;;;;;;;22926;;;;;;;;;:59;;;;23025:26;;;:17;:26;;;;;;22996;;;;;;:55;23121:25;;;:16;:25;;;;;;23093;;;;;;:53;;;;23212:28;;;:19;:28;;;;;;23192:49;;22946:7;;23192:19;;:49;;23212:28;23192:49;;;;;;;;;;;;;;;;;;:59;;-1:-1:-1;;;;;;23192:59:0;-1:-1:-1;;;;;23192:59:0;;;;;;23293:28;;;-1:-1:-1;23293:28:0;;;:19;:28;;;;;;23262;;;;;;;:59;;;;23293:28;23262:59;23192;-1:-1:-1;23262:59:0;;;;-1:-1:-1;;23262:59:0;;;;;;:::i;:::-;-1:-1:-1;23350:10:0;23332:29;;;;:17;:29;;;;;23364:15;23332:47;;23415:27;;23428:7;;23415:12;:27::i;:::-;23482:7;-1:-1:-1;;;;;23458:32:0;23473:7;-1:-1:-1;;;;;23458:32:0;;;;;;;;;;;-1:-1:-1;23508:4:0;17382:1;22521:1001;;;;:::o;27893:147::-;28019:12;;-1:-1:-1;;;;;27993:23:0;;27950:4;27993:23;;;:17;:23;;;;;;:38;27973:15;:59;;27893:147;;;:::o;26705:128::-;-1:-1:-1;;;;;26800:25:0;;;;;;:19;:25;;;;;;;;;26793:32;;;;;;-1:-1:-1;;26793:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26768:13;;26793:32;;;26800:25;26793:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26705:128;;;:::o;19961:1210::-;17442:5;;20009:4;;-1:-1:-1;;;17442:5:0;;;;:14;17434:45;;;;-1:-1:-1;;;17434:45:0;;;;;;;;;20033:24;20046:10;20033:12;:24::i;:::-;20025:75;;;;-1:-1:-1;;;20025:75:0;;;;;;;;;20156:10;20138:29;;;;:17;:29;;;;;;20119:15;:48;;20111:91;;;;-1:-1:-1;;;20111:91:0;;;;;;;;;20234:10;20217:28;;;;:16;:28;;;;;;;;20213:96;;20278:10;20261:28;;:16;:28;;20213:96;20364:10;20319:22;20344:31;;;:19;:31;;;;;;20394:18;20386:59;;;;-1:-1:-1;;;20386:59:0;;;;;;;;;20496:10;20456:20;20479:28;;;:16;:28;;;;;;20576:18;;20479:28;;20456:20;20545:50;;:26;:14;20564:6;20545:26;:18;:26;:::i;:::-;:30;:50;:30;:50;:::i;:::-;20664:10;20606:17;20646:29;;;:17;:29;;;;;;20518:77;;-1:-1:-1;20606:17:0;20626:62;;20681:6;;20626:50;;:15;;:50;:19;:50;:::i;:62::-;20812:10;20699:26;20792:31;;;:19;:31;;;;;;20606:82;;-1:-1:-1;20728:28:0;;;;20770:53;;20767:186;;-1:-1:-1;20880:10:0;20860:31;;;;:19;:31;;;;;;;20906:35;;;20767:186;20980:10;20963:28;;;;:16;:28;;;;;:49;;;21049:36;20994:18;21072:12;21049:36;:22;:36;:::i;:::-;21096:3;;21023:62;;-1:-1:-1;21096:45:0;;-1:-1:-1;;;;;21096:3:0;21113:10;21023:62;21096:45;:16;:45;:::i;:::-;21159:4;21152:11;;;;;;;;17490:1;19961:1210;:::o;26839:144::-;26926:7;26946:19;26966:11;;26946:32;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26946:32:0;;-1:-1:-1;26839:144:0;;;;:::o;19209:744::-;17442:5;;19286:4;;-1:-1:-1;;;17442:5:0;;;;:14;17434:45;;;;-1:-1:-1;;;17434:45:0;;;;;;;;;19312:24;19325:10;19312:12;:24::i;:::-;19311:25;19303:64;;;;-1:-1:-1;;;19303:64:0;;;;;;;;;19425:10;19378:24;19405:31;;;:19;:31;;;;;;19455:20;19447:63;;;;-1:-1:-1;;;19447:63:0;;;;;;;;;19521:3;;:55;;-1:-1:-1;;;;;19521:3:0;19542:10;19562:4;19569:6;19521:55;:20;:55;:::i;:::-;19679:10;19659:31;;;;:19;:31;;;;;;:43;;19695:6;19659:43;:35;:43;:::i;:::-;19645:10;19625:31;;;;:19;:31;;;;;;;;:77;;;19713:17;:29;;;;;19745:15;19713:47;;;;19821:12;;19771:17;:29;;;;;19803:30;;19771:62;;19891:31;;;;;19849:74;;19873:16;;19645:10;19849:74;;;-1:-1:-1;19941:4:0;;19209:744;-1:-1:-1;;19209:744:0:o;25917:221::-;17313:5;;25997:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;26013:15;:44;;-1:-1:-1;;;;;;26013:44:0;-1:-1:-1;;;;;26013:44:0;;;;;;;;26073:35;;;;-1:-1:-1;;26073:35:0;-1:-1:-1;26126:4:0;25917:221;;;:::o;27636:118::-;27716:18;;27690:7;;27716:30;;27739:6;27716:30;:22;:30;:::i;:::-;27709:37;;27636:118;:::o;23623:207::-;17313:5;;23705:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;23748:5;;23721:40;;-1:-1:-1;;;;;23721:26:0;;;;23748:5;23754:6;23721:40;:26;:40;:::i;:::-;23794:5;;23777:23;;-1:-1:-1;;;;;23794:5:0;;;;23777:23;;23794:5;;23777:23;-1:-1:-1;23818:4:0;23623:207;;;;:::o;24768:599::-;24854:10;24810:4;24834:31;;;:19;:31;;;;;;24826:79;;;;-1:-1:-1;;;24826:79:0;;;;;;;;;24925:23;24937:10;24925:11;:23::i;:::-;24924:24;24916:65;;;;-1:-1:-1;;;24916:65:0;;;;;;;;;25280:12;;25266:10;25248:29;;;;:17;:29;;;;;;;;:44;;;25216:76;;;25308:29;;25266:10;;25308:29;;;-1:-1:-1;25355:4:0;24768:599;:::o;27239:263::-;-1:-1:-1;;;;;27349:25:0;;27305:7;27349:25;;;:19;:25;;;;;;27442:18;;27305:7;;27411:50;;:26;27349:25;27430:6;27411:26;:18;:26;:::i;:50::-;27385:76;27239:263;-1:-1:-1;;;;27239:263:0:o;16790:17::-;;;-1:-1:-1;;;16790:17:0;;;;;:::o;27764:121::-;-1:-1:-1;;;;;27854:23:0;27828:7;27854:23;;;:17;:23;;;;;;;27764:121::o;16724:20::-;;;-1:-1:-1;;;;;16724:20:0;;:::o;25375:530::-;25472:10;25411:4;25452:31;;;:19;:31;;;;;;25502:17;25494:61;;;;-1:-1:-1;;;25494:61:0;;;;;;;;;25582:15;;-1:-1:-1;;;;;25582:15:0;25566:80;;;;-1:-1:-1;;;25566:80:0;;;;;;;;;25657:30;25670:10;25682:4;25657:12;:30::i;:::-;25698:3;;25718:15;;25698:50;;-1:-1:-1;;;25698:50:0;;-1:-1:-1;;;;;25698:3:0;;;;:11;;:50;;25718:15;;;-1:-1:-1;;25744:2:0;25698:50;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25698:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25698:50:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25698:50:0;;;;;;;;;-1:-1:-1;25759:15:0;;:51;;-1:-1:-1;;;25759:51:0;;-1:-1:-1;;;;;25759:15:0;;;;:23;;:51;;25783:10;;25795:14;;25759:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25759:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25759:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25759:51:0;;;;;;;;;-1:-1:-1;25842:15:0;;25826:49;;25860:14;;-1:-1:-1;;;;;25842:15:0;;25826:49;;25842:15;;25826:49;25893:4;25886:11;;;25375:530;:::o;18400:801::-;17442:5;;18490:4;;-1:-1:-1;;;17442:5:0;;;;:14;17434:45;;;;-1:-1:-1;;;17434:45:0;;;;;;;;;18533:10;18513:31;;;;:19;:31;;;;;;:36;18505:98;;;;-1:-1:-1;;;18505:98:0;;;;;;;;;18613:39;18629:10;18641;;18613:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18613:15:0;;-1:-1:-1;;;18613:39:0:i;:::-;18703:3;;18687:6;;18703:63;;-1:-1:-1;;;;;18703:3:0;18724:10;18744:4;18687:6;18703:63;:20;:63;:::i;:::-;18796:10;18776:31;;;;:19;:31;;;;;;;;:48;;;18834:17;:29;;;;;18866:15;18834:47;;;;18941:12;;18891:17;:29;;;;;18923:30;;18891:62;;19014:19;:31;;;;;:44;;19048:10;;19014:44;:::i;:::-;;19102:10;19068:19;19088:10;;19068:31;;;;;;;;;;;;;;;;;;;;;;:44;;-1:-1:-1;;;;;19068:44:0;;;;-1:-1:-1;;;;;;19068:44:0;;;;;;;;;;19157:14;;19133:10;;19127:45;;;;19145:10;;;;19127:45;;;;;;;;;;19189:4;19182:11;;;17490:1;18400:801;;;;;:::o;23841:122::-;17313:5;;23901:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;-1:-1:-1;23917:5:0;:16;;;;;-1:-1:-1;;;23917:16:0;-1:-1:-1;;;;23917:16:0;;;;;;-1:-1:-1;23841:122:0;;;:::o;16752:31::-;;;-1:-1:-1;;;;;16752:31:0;;:::o;21537:829::-;17313:5;;21633:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;-1:-1:-1;;;;;21657:25:0;;21685:1;21657:25;;;:19;:25;;;;;;21649:83;;;;-1:-1:-1;;;21649:83:0;;;;;;;;;21794:1;-1:-1:-1;;;;;21751:45:0;:19;21771:10;;21751:31;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21751:31:0;:45;21743:95;;;;-1:-1:-1;;;21743:95:0;;;;;;;;;-1:-1:-1;;;;;21904:25:0;;21849;21904;;;:19;:25;;;;;;;;21887:43;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21887:43:0;;;21877:54;;;;;;21849:82;;21942:25;21997:10;;21980:28;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21980:28:0;;;21970:39;;;;;;21942:67;;22049:17;22028;:38;;22020:81;;;;-1:-1:-1;;;22020:81:0;;;;;;;;;-1:-1:-1;;;;;22113:25:0;;;;;;:19;:25;;;;;:38;;22141:10;;22113:38;:::i;:::-;-1:-1:-1;;;;;;22189:25:0;;;;;;:19;:25;;;;;;;22169:46;;:19;;:46;;;;;;;;;;;;;;;;;;22162:53;;-1:-1:-1;;;;;;22162:53:0;;;22260:4;;22226:19;;:31;;22246:10;;;;22226:31;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;;;22226:38:0;;;;-1:-1:-1;;;;;;22226:38:0;;;;;;;;;;22280:54;;;;22297:17;;22316;;22280:54;;;;;;;;;;-1:-1:-1;22352:4:0;;21537:829;-1:-1:-1;;;;;21537:829:0:o;27510:118::-;-1:-1:-1;;;;;27598:22:0;27572:7;27598:22;;;:16;:22;;;;;;;27510:118::o;21179:259::-;17313:5;;21251:4;;-1:-1:-1;;;;;17313:5:0;17301:10;:17;17293:78;;;;-1:-1:-1;;;17293:78:0;;;;;;;;;-1:-1:-1;;;;;21275:22:0;;21267:81;;;;-1:-1:-1;;;21267:81:0;;;;;;;;;21359:5;:16;;-1:-1:-1;;;;;;21359:16:0;-1:-1:-1;;;;;21359:16:0;;;;;;;;21391:39;;21409:10;;21391:39;;-1:-1:-1;;21391:39:0;21179:259;;;:::o;16488:17::-;;;-1:-1:-1;;;;;16488:17:0;;:::o;11846:176::-;11955:58;;11929:85;;11948:5;;-1:-1:-1;;;11978:23:0;11955:58;;12003:2;;12007:5;;11955:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;11955:58:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;11955:58:0;;;179:29:-1;;;;160:49;;;11929:18:0;:85::i;:::-;11846:176;;;:::o;24299:458::-;-1:-1:-1;;;;;24383:25:0;;;;;;:19;:25;;;;;;;;24376:32;;;24426:17;:23;;;;;24419:30;;;24467:16;:22;;;;;24460:29;;;24594:17;:23;;;;;24587:30;24628:85;;;;-1:-1:-1;;;;;24681:25:0;;;;;;:19;:25;;;;;;;24661:46;;:19;;:46;;;;;;;;;;;;;;;;;;24654:53;;-1:-1:-1;;;;;;24654:53:0;;;24628:85;-1:-1:-1;;;;;24724:25:0;;;;;;:19;:25;;;;;24717:32;;;:::i;:::-;24299:458;;:::o;2269:471::-;2327:7;2572:6;2568:47;;-1:-1:-1;2602:1:0;2595:8;;2568:47;2639:5;;;2643:1;2639;:5;:1;2663:5;;;;;:10;2655:56;;;;-1:-1:-1;;;2655:56:0;;;;;;;;3208:132;3266:7;3293:39;3297:1;3300;3293:39;;;;;;;;;;;;;;;;;:3;:39::i;1353:136::-;1411:7;1438:43;1442:1;1445;1438:43;;;;;;;;;;;;;;;;;:3;:43::i;12030:204::-;12157:68;;12131:95;;12150:5;;-1:-1:-1;;;12180:27:0;12157:68;;12209:4;;12215:2;;12219:5;;12157:68;;;;12131:95;12030:204;;;;:::o;897:181::-;955:7;987:5;;;1011:6;;;;1003:46;;;;-1:-1:-1;;;1003:46:0;;;;;;;;26148:403;26306:78;26271:19;:29;26291:8;-1:-1:-1;;;;;26271:29:0;-1:-1:-1;;;;;26271:29:0;;;;;;;;;;;;26254:47;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26254:47:0;;;26244:58;;;;;;:140;26236:187;;;;-1:-1:-1;;;26236:187:0;;;;;;;;;26486:1;-1:-1:-1;;;;;26442:46:0;:19;26462:11;26442:32;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26442:32:0;:46;26434:109;;;;-1:-1:-1;;;26434:109:0;;;;;;;;13885:1114;14489:27;14497:5;-1:-1:-1;;;;;14489:25:0;;:27::i;:::-;14481:71;;;;-1:-1:-1;;;14481:71:0;;;;;;;;;14626:12;14640:23;14675:5;-1:-1:-1;;;;;14667:19:0;14687:4;14667:25;;;;;;;;;;;;;;;;;;;;;;;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;;14625:67:0;;;;14711:7;14703:52;;;;-1:-1:-1;;;14703:52:0;;;;;;;;;14772:17;;:21;14768:224;;14914:10;14903:30;;;;;;;;;;;;;;14895:85;;;;-1:-1:-1;;;14895:85:0;;;;;;;;3870:345;3956:7;4058:12;4051:5;4043:28;;;;-1:-1:-1;;;4043:28:0;;;;;;;;;;;4082:9;4098:1;4094;:5;;;;;;;3870:345;-1:-1:-1;;;;;3870:345:0:o;1826:192::-;1912:7;1948:12;1940:6;;;;1932:29;;;;-1:-1:-1;;;1932:29:0;;;;;;;;;;-1:-1:-1;;;1984:5:0;;;1826:192::o;8970:619::-;9030:4;9498:20;;9341:66;9538:23;;;;;;:42;;-1:-1:-1;;9565:15:0;;;9530:51;-1:-1:-1;;8970:619:0:o;16361:11798::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16361:11798:0;;;-1:-1:-1;16361:11798:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16361:11798:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;142:124;206:20;;231:30;206:20;231:30;;273:128;348:13;;366:30;348:13;366:30;;423:337;;;538:3;531:4;523:6;519:17;515:27;505:2;;556:1;553;546:12;505:2;-1:-1;576:20;;616:18;605:30;;602:2;;;648:1;645;638:12;602:2;682:4;674:6;670:17;658:29;;733:3;725:4;717:6;713:17;703:8;699:32;696:41;693:2;;;750:1;747;740:12;693:2;498:262;;;;;;768:130;835:20;;860:33;835:20;860:33;;905:241;;1009:2;997:9;988:7;984:23;980:32;977:2;;;1025:1;1022;1015:12;977:2;1060:1;1077:53;1122:7;1102:9;1077:53;;1153:366;;;1274:2;1262:9;1253:7;1249:23;1245:32;1242:2;;;1290:1;1287;1280:12;1242:2;1325:1;1342:53;1387:7;1367:9;1342:53;;;1332:63;;1304:97;1432:2;1450:53;1495:7;1486:6;1475:9;1471:22;1450:53;;;1440:63;;1411:98;1236:283;;;;;;1526:492;;;;1667:2;1655:9;1646:7;1642:23;1638:32;1635:2;;;1683:1;1680;1673:12;1635:2;1718:1;1735:53;1780:7;1760:9;1735:53;;;1725:63;;1697:97;1853:2;1842:9;1838:18;1825:32;1877:18;1869:6;1866:30;1863:2;;;1909:1;1906;1899:12;1863:2;1937:65;1994:7;1985:6;1974:9;1970:22;1937:65;;;1927:75;;;;1804:204;1629:389;;;;;;2025:366;;;2146:2;2134:9;2125:7;2121:23;2117:32;2114:2;;;2162:1;2159;2152:12;2114:2;2197:1;2214:53;2259:7;2239:9;2214:53;;;2204:63;;2176:97;2304:2;2322:53;2367:7;2358:6;2347:9;2343:22;2322:53;;2398:235;;2499:2;2487:9;2478:7;2474:23;2470:32;2467:2;;;2515:1;2512;2505:12;2467:2;2550:1;2567:50;2609:7;2589:9;2567:50;;2640:257;;2752:2;2740:9;2731:7;2727:23;2723:32;2720:2;;;2768:1;2765;2758:12;2720:2;2803:1;2820:61;2873:7;2853:9;2820:61;;2904:367;;;3028:2;3016:9;3007:7;3003:23;2999:32;2996:2;;;3044:1;3041;3034:12;2996:2;3079:31;;3130:18;3119:30;;3116:2;;;3162:1;3159;3152:12;3116:2;3190:65;3247:7;3238:6;3227:9;3223:22;3190:65;;;3180:75;;;;3058:203;2990:281;;;;;;3278:492;;;;3419:2;3407:9;3398:7;3394:23;3390:32;3387:2;;;3435:1;3432;3425:12;3387:2;3470:31;;3521:18;3510:30;;3507:2;;;3553:1;3550;3543:12;3507:2;3581:65;3638:7;3629:6;3618:9;3614:22;3581:65;;;3571:75;;;;3449:203;3683:2;3701:53;3746:7;3737:6;3726:9;3722:22;3701:53;;;3691:63;;3662:98;3381:389;;;;;;3777:241;;3881:2;3869:9;3860:7;3856:23;3852:32;3849:2;;;3897:1;3894;3887:12;3849:2;3932:1;3949:53;3994:7;3974:9;3949:53;;4025:142;4116:45;4155:5;4116:45;;;4111:3;4104:58;4098:69;;;4174:113;4257:24;4275:5;4257:24;;4294:104;4371:21;4386:5;4371:21;;4405:113;4488:24;4506:5;4488:24;;4525:356;;4653:38;4685:5;4653:38;;;4703:88;4784:6;4779:3;4703:88;;;4696:95;;4796:52;4841:6;4836:3;4829:4;4822:5;4818:16;4796:52;;;4860:16;;;;;4633:248;-1:-1;;4633:248;4888:154;4985:51;5030:5;4985:51;;5239:300;;5355:71;5419:6;5414:3;5355:71;;;5348:78;;5438:43;5474:6;5469:3;5462:5;5438:43;;;5503:29;5525:6;5503:29;;;5494:39;;;;5341:198;-1:-1;;;5341:198;5572:313;;5706:89;5788:6;5783:3;5706:89;;;5699:96;;5807:43;5843:6;5838:3;5831:5;5807:43;;;-1:-1;;5863:16;;5692:193;5893:347;;6005:39;6038:5;6005:39;;;6056:71;6120:6;6115:3;6056:71;;;6049:78;;6132:52;6177:6;6172:3;6165:4;6158:5;6154:16;6132:52;;;6205:29;6227:6;6205:29;;6639:884;;6776:5;6770:12;6810:1;6799:9;6795:17;6823:1;6818:268;;;;7097:1;7092:425;;;;6788:729;;6818:268;6896:4;6892:1;6881:9;6877:17;6873:28;6915:89;6997:6;6992:3;6915:89;;;-1:-1;;7023:25;;7011:38;;6908:96;-1:-1;7063:16;;;-1:-1;6818:268;;7092:425;7161:1;7150:9;7146:17;7177:89;7259:6;7254:3;7177:89;;;7170:96;;7288:38;7320:5;7288:38;;;7342:1;7350:130;7364:6;7361:1;7358:13;7350:130;;;7423:14;;7410:11;;;7403:35;7470:1;7457:15;;;;7386:4;7379:12;7350:130;;;-1:-1;;7494:16;;;-1:-1;6788:729;;6746:777;;;;;;7532:328;;7692:67;7756:2;7751:3;7692:67;;;7792:30;7772:51;;7851:2;7842:12;;7678:182;-1:-1;;7678:182;7869:378;;8029:67;8093:2;8088:3;8029:67;;;8129:34;8109:55;;-1:-1;;;8193:2;8184:12;;8177:33;8238:2;8229:12;;8015:232;-1:-1;;8015:232;8256:330;;8416:67;8480:2;8475:3;8416:67;;;8516:32;8496:53;;8577:2;8568:12;;8402:184;-1:-1;;8402:184;8595:326;;8755:67;8819:2;8814:3;8755:67;;;8855:28;8835:49;;8912:2;8903:12;;8741:180;-1:-1;;8741:180;8930:330;;9090:67;9154:2;9149:3;9090:67;;;9190:32;9170:53;;9251:2;9242:12;;9076:184;-1:-1;;9076:184;9269:327;;9429:67;9493:2;9488:3;9429:67;;;9529:29;9509:50;;9587:2;9578:12;;9415:181;-1:-1;;9415:181;9605:332;;9765:67;9829:2;9824:3;9765:67;;;9865:34;9845:55;;9928:2;9919:12;;9751:186;-1:-1;;9751:186;9946:329;;10106:67;10170:2;10165:3;10106:67;;;10206:31;10186:52;;10266:2;10257:12;;10092:183;-1:-1;;10092:183;10284:375;;10444:67;10508:2;10503:3;10444:67;;;10544:34;10524:55;;-1:-1;;;10608:2;10599:12;;10592:30;10650:2;10641:12;;10430:229;-1:-1;;10430:229;10668:383;;10828:67;10892:2;10887:3;10828:67;;;10928:34;10908:55;;-1:-1;;;10992:2;10983:12;;10976:38;11042:2;11033:12;;10814:237;-1:-1;;10814:237;11060:371;;11220:67;11284:2;11279:3;11220:67;;;11320:34;11300:55;;-1:-1;;;11384:2;11375:12;;11368:26;11422:2;11413:12;;11206:225;-1:-1;;11206:225;11440:374;;11600:67;11664:2;11659:3;11600:67;;;11700:34;11680:55;;-1:-1;;;11764:2;11755:12;;11748:29;11805:2;11796:12;;11586:228;-1:-1;;11586:228;11823:382;;11983:67;12047:2;12042:3;11983:67;;;12083:34;12063:55;;-1:-1;;;12147:2;12138:12;;12131:37;12196:2;12187:12;;11969:236;-1:-1;;11969:236;12214:318;;12374:67;12438:2;12433:3;12374:67;;;-1:-1;;;12454:41;;12523:2;12514:12;;12360:172;-1:-1;;12360:172;12541:330;;12701:67;12765:2;12760:3;12701:67;;;12801:32;12781:53;;12862:2;12853:12;;12687:184;-1:-1;;12687:184;12880:370;;13040:67;13104:2;13099:3;13040:67;;;13140:34;13120:55;;-1:-1;;;13204:2;13195:12;;13188:25;13241:2;13232:12;;13026:224;-1:-1;;13026:224;13259:328;;13419:67;13483:2;13478:3;13419:67;;;13519:30;13499:51;;13578:2;13569:12;;13405:182;-1:-1;;13405:182;13596:322;;13756:67;13820:2;13815:3;13756:67;;;-1:-1;;;13836:45;;13909:2;13900:12;;13742:176;-1:-1;;13742:176;13927:378;;14087:67;14151:2;14146:3;14087:67;;;14187:34;14167:55;;-1:-1;;;14251:2;14242:12;;14235:33;14296:2;14287:12;;14073:232;-1:-1;;14073:232;14314:386;;14474:67;14538:2;14533:3;14474:67;;;14574:34;14554:55;;-1:-1;;;14638:2;14629:12;;14622:41;14691:2;14682:12;;14460:240;-1:-1;;14460:240;14709:387;;14869:67;14933:2;14928:3;14869:67;;;14969:34;14949:55;;-1:-1;;;15033:2;15024:12;;15017:42;15087:2;15078:12;;14855:241;-1:-1;;14855:241;15105:379;;15265:67;15329:2;15324:3;15265:67;;;15365:34;15345:55;;-1:-1;;;15429:2;15420:12;;15413:34;15475:2;15466:12;;15251:233;-1:-1;;15251:233;15493:331;;15653:67;15717:2;15712:3;15653:67;;;15753:33;15733:54;;15815:2;15806:12;;15639:185;-1:-1;;15639:185;15833:385;;15993:67;16057:2;16052:3;15993:67;;;16093:34;16073:55;;-1:-1;;;16157:2;16148:12;;16141:40;16209:2;16200:12;;15979:239;-1:-1;;15979:239;16227:328;;16387:67;16451:2;16446:3;16387:67;;;16487:30;16467:51;;16546:2;16537:12;;16373:182;-1:-1;;16373:182;16564:331;;16724:67;16788:2;16783:3;16724:67;;;16824:33;16804:54;;16886:2;16877:12;;16710:185;-1:-1;;16710:185;17023:262;;17167:93;17256:3;17247:6;17167:93;;17292:286;;17448:105;17549:3;17540:6;17532;17448:105;;17858:260;;18001:92;18089:3;18080:6;18001:92;;18125:213;18243:2;18228:18;;18257:71;18232:9;18301:6;18257:71;;18345:340;18499:2;18484:18;;18513:79;18488:9;18565:6;18513:79;;;18603:72;18671:2;18660:9;18656:18;18647:6;18603:72;;18692:435;18866:2;18851:18;;18880:71;18855:9;18924:6;18880:71;;;18962:72;19030:2;19019:9;19015:18;19006:6;18962:72;;;19045;19113:2;19102:9;19098:18;19089:6;19045:72;;19134:324;19280:2;19265:18;;19294:71;19269:9;19338:6;19294:71;;19465:201;19577:2;19562:18;;19591:65;19566:9;19629:6;19591:65;;19673:324;19819:2;19804:18;;19833:71;19808:9;19877:6;19833:71;;20004:241;20136:2;20121:18;;20150:85;20125:9;20208:6;20150:85;;20504:321;20652:2;20666:47;;;20637:18;;20727:88;20637:18;20801:6;20793;20727:88;;20832:301;20970:2;20984:47;;;20955:18;;21045:78;20955:18;21109:6;21045:78;;21140:407;21331:2;21345:47;;;21316:18;;21406:131;21316:18;21406:131;;21554:407;21745:2;21759:47;;;21730:18;;21820:131;21730:18;21820:131;;21968:407;22159:2;22173:47;;;22144:18;;22234:131;22144:18;22234:131;;22382:407;22573:2;22587:47;;;22558:18;;22648:131;22558:18;22648:131;;22796:407;22987:2;23001:47;;;22972:18;;23062:131;22972:18;23062:131;;23210:407;23401:2;23415:47;;;23386:18;;23476:131;23386:18;23476:131;;23624:407;23815:2;23829:47;;;23800:18;;23890:131;23800:18;23890:131;;24038:407;24229:2;24243:47;;;24214:18;;24304:131;24214:18;24304:131;;24452:407;24643:2;24657:47;;;24628:18;;24718:131;24628:18;24718:131;;24866:407;25057:2;25071:47;;;25042:18;;25132:131;25042:18;25132:131;;25280:407;25471:2;25485:47;;;25456:18;;25546:131;25456:18;25546:131;;25694:407;25885:2;25899:47;;;25870:18;;25960:131;25870:18;25960:131;;26108:407;26299:2;26313:47;;;26284:18;;26374:131;26284:18;26374:131;;26522:407;26713:2;26727:47;;;26698:18;;26788:131;26698:18;26788:131;;26936:407;27127:2;27141:47;;;27112:18;;27202:131;27112:18;27202:131;;27350:407;27541:2;27555:47;;;27526:18;;27616:131;27526:18;27616:131;;27764:407;27955:2;27969:47;;;27940:18;;28030:131;27940:18;28030:131;;28178:407;28369:2;28383:47;;;28354:18;;28444:131;28354:18;28444:131;;28592:407;28783:2;28797:47;;;28768:18;;28858:131;28768:18;28858:131;;29006:407;29197:2;29211:47;;;29182:18;;29272:131;29182:18;29272:131;;29420:407;29611:2;29625:47;;;29596:18;;29686:131;29596:18;29686:131;;29834:407;30025:2;30039:47;;;30010:18;;30100:131;30010:18;30100:131;;30248:407;30439:2;30453:47;;;30424:18;;30514:131;30424:18;30514:131;;30662:407;30853:2;30867:47;;;30838:18;;30928:131;30838:18;30928:131;;31076:407;31267:2;31281:47;;;31252:18;;31342:131;31252:18;31342:131;;31490:407;31681:2;31695:47;;;31666:18;;31756:131;31666:18;31756:131;;31904:213;32022:2;32007:18;;32036:71;32011:9;32080:6;32036:71;;32124:158;;32219:14;;;32261:4;32248:18;;;32178:104;32289:121;32376:12;;32347:63;32547:144;32682:3;32660:31;-1:-1;32660:31;32700:163;32803:19;;;32852:4;32843:14;;32796:67;33025:91;;33087:24;33105:5;33087:24;;33123:85;33189:13;33182:21;;33165:43;33294:121;-1:-1;;;;;33356:54;;33339:76;33501:129;;33588:37;33619:5;33637:149;;33730:51;33775:5;33730:51;;34457:145;34538:6;34533:3;34528;34515:30;-1:-1;34594:1;34576:16;;34569:27;34508:94;34611:268;34676:1;34683:101;34697:6;34694:1;34691:13;34683:101;;;34764:11;;;34758:18;34745:11;;;34738:39;34719:2;34712:10;34683:101;;;34799:6;34796:1;34793:13;34790:2;;;-1:-1;;34864:1;34846:16;;34839:27;34660:219;34887:97;34975:2;34955:14;-1:-1;;34951:28;;34935:49;34992:117;35061:24;35079:5;35061:24;;;35054:5;35051:35;35041:2;;35100:1;35097;35090:12;35116:111;35182:21;35197:5;35182:21;;35234:117;35303:24;35321:5;35303:24;
Swarm Source
bzzr://276a5038a1f159ce09a96c68c1c3c6568c2cd015e6eddb97d1e66a9a067731c7
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.