Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 1,339 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 19718206 | 693 days ago | IN | 0 ETH | 0.00095391 | ||||
| Claim | 19718201 | 693 days ago | IN | 0 ETH | 0.00128974 | ||||
| Claim | 19697780 | 696 days ago | IN | 0 ETH | 0.00077499 | ||||
| Claim | 18914607 | 806 days ago | IN | 0 ETH | 0.00077965 | ||||
| Claim | 18685654 | 838 days ago | IN | 0 ETH | 0.00290778 | ||||
| Claim | 18137326 | 915 days ago | IN | 0 ETH | 0.00224582 | ||||
| Claim | 17792073 | 963 days ago | IN | 0 ETH | 0.002716 | ||||
| Claim | 17218567 | 1044 days ago | IN | 0 ETH | 0.00604961 | ||||
| Claim | 16984914 | 1077 days ago | IN | 0 ETH | 0.0024841 | ||||
| Claim | 16869015 | 1093 days ago | IN | 0 ETH | 0.00143077 | ||||
| Claim | 16688178 | 1118 days ago | IN | 0 ETH | 0.00240354 | ||||
| Claim | 16562662 | 1136 days ago | IN | 0 ETH | 0.00140137 | ||||
| Claim | 16535043 | 1140 days ago | IN | 0 ETH | 0.00231283 | ||||
| Claim | 16261389 | 1178 days ago | IN | 0 ETH | 0.00092092 | ||||
| Claim | 15982343 | 1217 days ago | IN | 0 ETH | 0.00104507 | ||||
| Claim | 15919496 | 1226 days ago | IN | 0 ETH | 0.00165675 | ||||
| Claim | 15811726 | 1241 days ago | IN | 0 ETH | 0.00084144 | ||||
| Claim | 15625215 | 1267 days ago | IN | 0 ETH | 0.00133345 | ||||
| Claim | 15452848 | 1293 days ago | IN | 0 ETH | 0.00088763 | ||||
| Claim | 15445300 | 1294 days ago | IN | 0 ETH | 0.00038715 | ||||
| Claim | 15160139 | 1339 days ago | IN | 0 ETH | 0.00120332 | ||||
| Claim | 15070213 | 1353 days ago | IN | 0 ETH | 0.00122067 | ||||
| Claim | 15065397 | 1354 days ago | IN | 0 ETH | 0.00082345 | ||||
| Claim | 14957346 | 1373 days ago | IN | 0 ETH | 0.00322226 | ||||
| Claim | 14807426 | 1398 days ago | IN | 0 ETH | 0.00240426 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VestingTimelock
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-05-25
*/
// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/math/SafeMath.sol
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @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) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @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) {
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, reverting 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) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting 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) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity >=0.6.2 <0.8.0;
/**
* @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) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
pragma solidity >=0.6.0 <0.8.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` 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));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
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. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// File: @openzeppelin/contracts/utils/Context.sol
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// File: @openzeppelin/contracts/utils/Pausable.sol
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor () internal {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File: contracts/VestingTimelock.sol
pragma solidity >=0.6.2 <0.8.0;
contract VestingTimelock is Ownable, Pausable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
IERC20 private _token;
mapping (address => uint256) private _balances;
mapping (address => uint256) private _claims;
uint256 private _totalBalance;
uint256 private _totalClaimed;
uint256 private _startTime;
uint256 private _endTime;
event Claimed(address indexed to, uint256 value, uint256 progress);
constructor (IERC20 token_, uint256 startTime_, uint256 endTime_) public {
require(endTime_ > currentTime(), "VestingTimelock: end before current time");
require(endTime_ > startTime_, "VestingTimelock: end before start time");
_token = token_;
_endTime = endTime_;
_startTime = startTime_;
if (_startTime == 0)
_startTime = currentTime();
}
/**************************
View Functions
**************************/
function token() public view virtual returns (IERC20) {
return _token;
}
function currentTime() public view virtual returns (uint256) {
// solhint-disable-next-line not-rely-on-time
return block.timestamp;
}
function totalBalance() public view virtual returns (uint256) {
return _totalBalance;
}
function totalClaimed() public view virtual returns (uint256) {
return _totalClaimed;
}
function totalVested() public view virtual returns (uint256) {
return totalBalance().mul(getProgress()).div(1e18);
}
function totalAvailable() public view virtual returns (uint256) {
return totalVested().sub(totalClaimed());
}
function startTime() public view virtual returns (uint256) {
return _startTime;
}
function endTime() public view virtual returns (uint256) {
return _endTime;
}
function getProgress() public view returns (uint256) {
if (currentTime() > _endTime)
return 1e18;
else if (currentTime() < _startTime)
return 0;
else
return currentTime().sub(_startTime).mul(1e18).div(_endTime.sub(_startTime));
}
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
function claimedOf(address account) public view virtual returns (uint256) {
return _claims[account];
}
function vestedOf(address account) public view virtual returns (uint256) {
return _balances[account].mul(getProgress()).div(1e18);
}
function availableOf(address account) public view virtual returns (uint256) {
return vestedOf(account).sub(claimedOf(account));
}
/**************************
Public Functions
**************************/
function claim() public virtual whenNotPaused {
uint256 amount = availableOf(msg.sender);
require(amount > 0, "VestingTimelock: no tokens vested yet");
_claims[msg.sender] = _claims[msg.sender].add(amount);
_totalClaimed = _totalClaimed.add(amount);
token().safeTransfer(msg.sender, amount);
emit Claimed(msg.sender, amount, getProgress());
}
/**************************
Owner Functions
**************************/
function pause() public virtual onlyOwner {
_pause();
}
function unpause() public virtual onlyOwner {
unpause();
}
function recover() public virtual onlyOwner {
token().safeTransfer(msg.sender, token().balanceOf(address(this)));
}
function replaceAddress(address account1, address account2) external onlyOwner {
require(_balances[account1] > 0, "replacement address has no balance");
require(_balances[account2] == 0, "replacement address has balance");
_balances[account2] = _balances[account1];
_claims[account2] = _claims[account1];
_balances[account1] = 0;
_claims[account1] = 0;
}
function setClaimed(address account, uint256 value) external onlyOwner {
require(value <= _balances[account], "balance cannot be less than claimed");
_totalClaimed = _totalClaimed.add(value).sub(_claims[account]);
_claims[account] = value;
}
function setBalance(address account, uint256 value) external onlyOwner {
require(value >= _claims[account], "balance cannot be less than claimed");
_totalBalance = _totalBalance.add(value).sub(_balances[account]);
_balances[account] = value;
}
function setBalances(address[] calldata recipients, uint256[] calldata values) external onlyOwner {
require(recipients.length > 0 && recipients.length == values.length, "values and recipient parameters have different lengths or their length is zero");
for (uint256 i = 0; i < recipients.length; i++) {
_totalBalance = _totalBalance.add(values[i]).sub(_balances[recipients[i]]);
_balances[recipients[i]] = values[i];
}
}
function addBalances(address[] calldata recipients, uint256[] calldata values) external onlyOwner {
require(recipients.length > 0 && recipients.length == values.length, "values and recipient parameters have different lengths or their length is zero");
for (uint256 i = 0; i < recipients.length; i++) {
_totalBalance = _totalBalance.add(values[i]);
_balances[recipients[i]] = _balances[recipients[i]].add(values[i]);
}
}
function setClaims(address[] calldata recipients, uint256[] calldata values) external onlyOwner {
require(recipients.length > 0 && recipients.length == values.length, "values and recipient parameters have different lengths or their length is zero");
for (uint256 i = 0; i < recipients.length; i++) {
_totalClaimed = _totalClaimed.add(values[i]);
_claims[recipients[i]] = values[i];
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"uint256","name":"startTime_","type":"uint256"},{"internalType":"uint256","name":"endTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"progress","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"addBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"availableOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProgress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recover","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"name":"replaceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"setBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setClaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"setClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162002d8b38038062002d8b833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060006200006e6200026460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008060146101000a81548160ff021916908315150217905550620001366200026c60201b60201c565b81116200018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062002d636028913960400191505060405180910390fd5b818111620001e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018062002d3d6026913960400191505060405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060078190555081600681905550600060065414156200025b57620002546200026c60201b60201c565b6006819055505b50505062000274565b600033905090565b600042905090565b612ab980620002846000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806394477104116100f9578063d546da9011610097578063ddf0c07011610071578063ddf0c070146106d2578063e30443bc146107a0578063f2fde38b146107ee578063fc0c546a14610832576101a9565b8063d546da901461063e578063d54ad2a114610696578063d85d7f5b146106b4576101a9565b8063b7e39b4f116100d3578063b7e39b4f146104f0578063baa3f7ee146105be578063ce74602414610616578063d18e81b314610620576101a9565b80639447710414610416578063ad66b3c61461046e578063ad7a672f146104d2576101a9565b80635c975abb1161016657806378e979251161014057806378e979251461039c5780638456cb59146103ba5780638da5cb5b146103c4578063939c4456146103f8576101a9565b80635c975abb1461031a57806370a082311461033a578063715018a614610392576101a9565b8063199cbc54146101ae5780632fab59ed146101cc5780633197cbb61461021a5780633b650d29146102385780633f4ba83a146103065780634e71d92d14610310575b600080fd5b6101b6610866565b6040518082815260200191505060405180910390f35b610218600480360360408110156101e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a8565b005b610222610aa3565b6040518082815260200191505060405180910390f35b6103046004803603604081101561024e57600080fd5b810190808035906020019064010000000081111561026b57600080fd5b82018360208201111561027d57600080fd5b8035906020019184602083028401116401000000008311171561029f57600080fd5b9091929391929390803590602001906401000000008111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111640100000000831117156102f457600080fd5b9091929391929390505050610aad565b005b61030e610c96565b005b610318610d4f565b005b610322610f72565b60405180821515815260200191505060405180910390f35b61037c6004803603602081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f88565b6040518082815260200191505060405180910390f35b61039a610fd1565b005b6103a461113e565b6040518082815260200191505060405180910390f35b6103c2611148565b005b6103cc611201565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040061122a565b6040518082815260200191505060405180910390f35b6104586004803603602081101561042c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112cb565b6040518082815260200191505060405180910390f35b6104d06004803603604081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611347565b005b6104da6116d7565b6040518082815260200191505060405180910390f35b6105bc6004803603604081101561050657600080fd5b810190808035906020019064010000000081111561052357600080fd5b82018360208201111561053557600080fd5b8035906020019184602083028401116401000000008311171561055757600080fd5b90919293919293908035906020019064010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460208302840111640100000000831117156105ac57600080fd5b90919293919293905050506116e1565b005b610600600480360360208110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611943565b6040518082815260200191505060405180910390f35b61061e61198c565b005b610628611b17565b6040518082815260200191505060405180910390f35b6106806004803603602081101561065457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b61069e611b4b565b6040518082815260200191505060405180910390f35b6106bc611b55565b6040518082815260200191505060405180910390f35b61079e600480360360408110156106e857600080fd5b810190808035906020019064010000000081111561070557600080fd5b82018360208201111561071757600080fd5b8035906020019184602083028401116401000000008311171561073957600080fd5b90919293919293908035906020019064010000000081111561075a57600080fd5b82018360208201111561076c57600080fd5b8035906020019184602083028401116401000000008311171561078e57600080fd5b9091929391929390505050611b7d565b005b6107ec600480360360408110156107b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ddf565b005b6108306004803603602081101561080457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fda565b005b61083a6121cc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006108a3670de0b6b3a764000061089561087f61122a565b6108876116d7565b6121f690919063ffffffff16565b61227c90919063ffffffff16565b905090565b6108b0612305565b73ffffffffffffffffffffffffffffffffffffffff166108ce611201565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129816023913960400191505060405180910390fd5b610a55600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a478360055461230d90919063ffffffff16565b61239590919063ffffffff16565b60058190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600754905090565b610ab5612305565b73ffffffffffffffffffffffffffffffffffffffff16610ad3611201565b73ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600084849050118015610b7457508181905084849050145b610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b84849050811015610c8f57610bfe838383818110610be657fe5b9050602002013560055461230d90919063ffffffff16565b600581905550828282818110610c1057fe5b9050602002013560036000878785818110610c2757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050610bcc565b5050505050565b610c9e612305565b73ffffffffffffffffffffffffffffffffffffffff16610cbc611201565b73ffffffffffffffffffffffffffffffffffffffff1614610d45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d4d610c96565b565b610d57610f72565b15610dca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6000610dd533611b1f565b905060008111610e30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b610e8281600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230d90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eda8160055461230d90919063ffffffff16565b600581905550610f123382610eed6121cc565b73ffffffffffffffffffffffffffffffffffffffff166124189092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a82610f5361122a565b604051808381526020018281526020019250505060405180910390a250565b60008060149054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fd9612305565b73ffffffffffffffffffffffffffffffffffffffff16610ff7611201565b73ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600654905090565b611150612305565b73ffffffffffffffffffffffffffffffffffffffff1661116e611201565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111ff6124ba565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600754611237611b17565b111561124d57670de0b6b3a764000090506112c8565b600654611258611b17565b101561126757600090506112c8565b6112c561128160065460075461239590919063ffffffff16565b6112b7670de0b6b3a76400006112a960065461129b611b17565b61239590919063ffffffff16565b6121f690919063ffffffff16565b61227c90919063ffffffff16565b90505b90565b6000611340670de0b6b3a76400006113326112e461122a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f690919063ffffffff16565b61227c90919063ffffffff16565b9050919050565b61134f612305565b73ffffffffffffffffffffffffffffffffffffffff1661136d611201565b73ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161148e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a626022913960400191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f7265706c6163656d656e742061646472657373206861732062616c616e63650081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600454905090565b6116e9612305565b73ffffffffffffffffffffffffffffffffffffffff16611707611201565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000848490501180156117a857508181905084849050145b6117fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b8484905081101561193c576118ab6002600087878581811061181e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461189d85858581811061188557fe5b9050602002013560045461230d90919063ffffffff16565b61239590919063ffffffff16565b6004819055508282828181106118bd57fe5b90506020020135600260008787858181106118d457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611800565b5050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611994612305565b73ffffffffffffffffffffffffffffffffffffffff166119b2611201565b73ffffffffffffffffffffffffffffffffffffffff1614611a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611b1533611a476121cc565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611aad57600080fd5b505afa158015611ac1573d6000803e3d6000fd5b505050506040513d6020811015611ad757600080fd5b8101908080519060200190929190505050611af06121cc565b73ffffffffffffffffffffffffffffffffffffffff166124189092919063ffffffff16565b565b600042905090565b6000611b44611b2d83611943565b611b36846112cb565b61239590919063ffffffff16565b9050919050565b6000600554905090565b6000611b78611b62611b4b565b611b6a610866565b61239590919063ffffffff16565b905090565b611b85612305565b73ffffffffffffffffffffffffffffffffffffffff16611ba3611201565b73ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600084849050118015611c4457508181905084849050145b611c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b84849050811015611dd857611cce838383818110611cb657fe5b9050602002013560045461230d90919063ffffffff16565b600481905550611d60838383818110611ce357fe5b9050602002013560026000888886818110611cfa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230d90919063ffffffff16565b60026000878785818110611d7057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611c9c565b5050505050565b611de7612305565b73ffffffffffffffffffffffffffffffffffffffff16611e05611201565b73ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015611f26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129816023913960400191505060405180910390fd5b611f8c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7e8360045461230d90919063ffffffff16565b61239590919063ffffffff16565b60048190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611fe2612305565b73ffffffffffffffffffffffffffffffffffffffff16612000611201565b73ffffffffffffffffffffffffffffffffffffffff1614612089576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129356026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808314156122095760009050612276565b600082840290508284828161221a57fe5b0414612271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129a46021913960400191505060405180910390fd5b809150505b92915050565b60008082116122f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816122fc57fe5b04905092915050565b600033905090565b60008082840190508381101561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6124b58363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125a6565b505050565b6124c2610f72565b15612535576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612579612305565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000612608826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126959092919063ffffffff16565b90506000815111156126905780806020019051602081101561262957600080fd5b810190808051906020019092919050505061268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a38602a913960400191505060405180910390fd5b5b505050565b60606126a484846000856126ad565b90509392505050565b606082471015612708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061295b6026913960400191505060405180910390fd5b61271185612855565b612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106127d257805182526020820191506020810190506020830392506127af565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612834576040519150601f19603f3d011682016040523d82523d6000602084013e612839565b606091505b5091509150612849828286612868565b92505050949350505050565b600080823b905060008111915050919050565b606083156128785782905061292d565b60008351111561288b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128f25780820151818401526020810190506128d7565b50505050905090810190601f16801561291f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c62616c616e63652063616e6e6f74206265206c657373207468616e20636c61696d6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756657374696e6754696d656c6f636b3a206e6f20746f6b656e73207665737465642079657476616c75657320616e6420726563697069656e7420706172616d6574657273206861766520646966666572656e74206c656e67746873206f72207468656972206c656e677468206973207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565647265706c6163656d656e74206164647265737320686173206e6f2062616c616e6365a264697066735822122036946eccab9dc1efabc98b74ac4fe90cd0d2544c5242c1c535c94fa7540b9f0864736f6c6343000706003356657374696e6754696d656c6f636b3a20656e64206265666f72652073746172742074696d6556657374696e6754696d656c6f636b3a20656e64206265666f72652063757272656e742074696d650000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba0590000000000000000000000000000000000000000000000000000000060ae7e9000000000000000000000000000000000000000000000000000000000621a5c90
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806394477104116100f9578063d546da9011610097578063ddf0c07011610071578063ddf0c070146106d2578063e30443bc146107a0578063f2fde38b146107ee578063fc0c546a14610832576101a9565b8063d546da901461063e578063d54ad2a114610696578063d85d7f5b146106b4576101a9565b8063b7e39b4f116100d3578063b7e39b4f146104f0578063baa3f7ee146105be578063ce74602414610616578063d18e81b314610620576101a9565b80639447710414610416578063ad66b3c61461046e578063ad7a672f146104d2576101a9565b80635c975abb1161016657806378e979251161014057806378e979251461039c5780638456cb59146103ba5780638da5cb5b146103c4578063939c4456146103f8576101a9565b80635c975abb1461031a57806370a082311461033a578063715018a614610392576101a9565b8063199cbc54146101ae5780632fab59ed146101cc5780633197cbb61461021a5780633b650d29146102385780633f4ba83a146103065780634e71d92d14610310575b600080fd5b6101b6610866565b6040518082815260200191505060405180910390f35b610218600480360360408110156101e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a8565b005b610222610aa3565b6040518082815260200191505060405180910390f35b6103046004803603604081101561024e57600080fd5b810190808035906020019064010000000081111561026b57600080fd5b82018360208201111561027d57600080fd5b8035906020019184602083028401116401000000008311171561029f57600080fd5b9091929391929390803590602001906401000000008111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111640100000000831117156102f457600080fd5b9091929391929390505050610aad565b005b61030e610c96565b005b610318610d4f565b005b610322610f72565b60405180821515815260200191505060405180910390f35b61037c6004803603602081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f88565b6040518082815260200191505060405180910390f35b61039a610fd1565b005b6103a461113e565b6040518082815260200191505060405180910390f35b6103c2611148565b005b6103cc611201565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040061122a565b6040518082815260200191505060405180910390f35b6104586004803603602081101561042c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112cb565b6040518082815260200191505060405180910390f35b6104d06004803603604081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611347565b005b6104da6116d7565b6040518082815260200191505060405180910390f35b6105bc6004803603604081101561050657600080fd5b810190808035906020019064010000000081111561052357600080fd5b82018360208201111561053557600080fd5b8035906020019184602083028401116401000000008311171561055757600080fd5b90919293919293908035906020019064010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460208302840111640100000000831117156105ac57600080fd5b90919293919293905050506116e1565b005b610600600480360360208110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611943565b6040518082815260200191505060405180910390f35b61061e61198c565b005b610628611b17565b6040518082815260200191505060405180910390f35b6106806004803603602081101561065457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b61069e611b4b565b6040518082815260200191505060405180910390f35b6106bc611b55565b6040518082815260200191505060405180910390f35b61079e600480360360408110156106e857600080fd5b810190808035906020019064010000000081111561070557600080fd5b82018360208201111561071757600080fd5b8035906020019184602083028401116401000000008311171561073957600080fd5b90919293919293908035906020019064010000000081111561075a57600080fd5b82018360208201111561076c57600080fd5b8035906020019184602083028401116401000000008311171561078e57600080fd5b9091929391929390505050611b7d565b005b6107ec600480360360408110156107b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ddf565b005b6108306004803603602081101561080457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fda565b005b61083a6121cc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006108a3670de0b6b3a764000061089561087f61122a565b6108876116d7565b6121f690919063ffffffff16565b61227c90919063ffffffff16565b905090565b6108b0612305565b73ffffffffffffffffffffffffffffffffffffffff166108ce611201565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129816023913960400191505060405180910390fd5b610a55600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a478360055461230d90919063ffffffff16565b61239590919063ffffffff16565b60058190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600754905090565b610ab5612305565b73ffffffffffffffffffffffffffffffffffffffff16610ad3611201565b73ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600084849050118015610b7457508181905084849050145b610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b84849050811015610c8f57610bfe838383818110610be657fe5b9050602002013560055461230d90919063ffffffff16565b600581905550828282818110610c1057fe5b9050602002013560036000878785818110610c2757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050610bcc565b5050505050565b610c9e612305565b73ffffffffffffffffffffffffffffffffffffffff16610cbc611201565b73ffffffffffffffffffffffffffffffffffffffff1614610d45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d4d610c96565b565b610d57610f72565b15610dca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6000610dd533611b1f565b905060008111610e30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129c56025913960400191505060405180910390fd5b610e8281600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230d90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eda8160055461230d90919063ffffffff16565b600581905550610f123382610eed6121cc565b73ffffffffffffffffffffffffffffffffffffffff166124189092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a82610f5361122a565b604051808381526020018281526020019250505060405180910390a250565b60008060149054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fd9612305565b73ffffffffffffffffffffffffffffffffffffffff16610ff7611201565b73ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600654905090565b611150612305565b73ffffffffffffffffffffffffffffffffffffffff1661116e611201565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111ff6124ba565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600754611237611b17565b111561124d57670de0b6b3a764000090506112c8565b600654611258611b17565b101561126757600090506112c8565b6112c561128160065460075461239590919063ffffffff16565b6112b7670de0b6b3a76400006112a960065461129b611b17565b61239590919063ffffffff16565b6121f690919063ffffffff16565b61227c90919063ffffffff16565b90505b90565b6000611340670de0b6b3a76400006113326112e461122a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f690919063ffffffff16565b61227c90919063ffffffff16565b9050919050565b61134f612305565b73ffffffffffffffffffffffffffffffffffffffff1661136d611201565b73ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161148e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a626022913960400191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f7265706c6163656d656e742061646472657373206861732062616c616e63650081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600454905090565b6116e9612305565b73ffffffffffffffffffffffffffffffffffffffff16611707611201565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000848490501180156117a857508181905084849050145b6117fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b8484905081101561193c576118ab6002600087878581811061181e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461189d85858581811061188557fe5b9050602002013560045461230d90919063ffffffff16565b61239590919063ffffffff16565b6004819055508282828181106118bd57fe5b90506020020135600260008787858181106118d457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611800565b5050505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611994612305565b73ffffffffffffffffffffffffffffffffffffffff166119b2611201565b73ffffffffffffffffffffffffffffffffffffffff1614611a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611b1533611a476121cc565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611aad57600080fd5b505afa158015611ac1573d6000803e3d6000fd5b505050506040513d6020811015611ad757600080fd5b8101908080519060200190929190505050611af06121cc565b73ffffffffffffffffffffffffffffffffffffffff166124189092919063ffffffff16565b565b600042905090565b6000611b44611b2d83611943565b611b36846112cb565b61239590919063ffffffff16565b9050919050565b6000600554905090565b6000611b78611b62611b4b565b611b6a610866565b61239590919063ffffffff16565b905090565b611b85612305565b73ffffffffffffffffffffffffffffffffffffffff16611ba3611201565b73ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600084849050118015611c4457508181905084849050145b611c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001806129ea604e913960600191505060405180910390fd5b60005b84849050811015611dd857611cce838383818110611cb657fe5b9050602002013560045461230d90919063ffffffff16565b600481905550611d60838383818110611ce357fe5b9050602002013560026000888886818110611cfa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230d90919063ffffffff16565b60026000878785818110611d7057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611c9c565b5050505050565b611de7612305565b73ffffffffffffffffffffffffffffffffffffffff16611e05611201565b73ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015611f26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129816023913960400191505060405180910390fd5b611f8c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7e8360045461230d90919063ffffffff16565b61239590919063ffffffff16565b60048190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611fe2612305565b73ffffffffffffffffffffffffffffffffffffffff16612000611201565b73ffffffffffffffffffffffffffffffffffffffff1614612089576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129356026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808314156122095760009050612276565b600082840290508284828161221a57fe5b0414612271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129a46021913960400191505060405180910390fd5b809150505b92915050565b60008082116122f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816122fc57fe5b04905092915050565b600033905090565b60008082840190508381101561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6124b58363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125a6565b505050565b6124c2610f72565b15612535576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612579612305565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000612608826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126959092919063ffffffff16565b90506000815111156126905780806020019051602081101561262957600080fd5b810190808051906020019092919050505061268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a38602a913960400191505060405180910390fd5b5b505050565b60606126a484846000856126ad565b90509392505050565b606082471015612708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061295b6026913960400191505060405180910390fd5b61271185612855565b612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106127d257805182526020820191506020810190506020830392506127af565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612834576040519150601f19603f3d011682016040523d82523d6000602084013e612839565b606091505b5091509150612849828286612868565b92505050949350505050565b600080823b905060008111915050919050565b606083156128785782905061292d565b60008351111561288b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128f25780820151818401526020810190506128d7565b50505050905090810190601f16801561291f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c62616c616e63652063616e6e6f74206265206c657373207468616e20636c61696d6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756657374696e6754696d656c6f636b3a206e6f20746f6b656e73207665737465642079657476616c75657320616e6420726563697069656e7420706172616d6574657273206861766520646966666572656e74206c656e67746873206f72207468656972206c656e677468206973207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565647265706c6163656d656e74206164647265737320686173206e6f2062616c616e6365a264697066735822122036946eccab9dc1efabc98b74ac4fe90cd0d2544c5242c1c535c94fa7540b9f0864736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba0590000000000000000000000000000000000000000000000000000000060ae7e9000000000000000000000000000000000000000000000000000000000621a5c90
-----Decoded View---------------
Arg [0] : token_ (address): 0x0CDF9acd87E940837ff21BB40c9fd55F68bba059
Arg [1] : startTime_ (uint256): 1622048400
Arg [2] : endTime_ (uint256): 1645894800
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000cdf9acd87e940837ff21bb40c9fd55f68bba059
Arg [1] : 0000000000000000000000000000000000000000000000000000000060ae7e90
Arg [2] : 00000000000000000000000000000000000000000000000000000000621a5c90
Deployed Bytecode Sourcemap
27720:5749:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29106:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31597:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29460:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33047:419;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30999:66;;;:::i;:::-;;30446:393;;;:::i;:::-;;26449:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29827:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24810:148;;;:::i;:::-;;29363:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30930:63;;;:::i;:::-;;24159:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29553:268;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30065:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31200:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28900:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32129:453;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29947:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31071:123;;;:::i;:::-;;28747:147;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30213:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29003:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29238:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32588:453;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31862:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25113:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28659:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29106:126;29158:7;29183:43;29221:4;29183:33;29202:13;:11;:13::i;:::-;29183:14;:12;:14::i;:::-;:18;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;29176:50;;29106:126;:::o;31597:259::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31692:9:::1;:18;31702:7;31692:18;;;;;;;;;;;;;;;;31683:5;:27;;31675:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31773:46;31802:7;:16;31810:7;31802:16;;;;;;;;;;;;;;;;31773:24;31791:5;31773:13;;:17;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;31757:13;:62;;;;31845:5;31826:7;:16;31834:7;31826:16;;;;;;;;;;;;;;;:24;;;;31597:259:::0;;:::o;29460:87::-;29508:7;29533:8;;29526:15;;29460:87;:::o;33047:419::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33178:1:::1;33158:10;;:17;;:21;:59;;;;;33204:6;;:13;;33183:10;;:17;;:34;33158:59;33150:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33314:9;33309:152;33333:10;;:17;;33329:1;:21;33309:152;;;33382:28;33400:6;;33407:1;33400:9;;;;;;;;;;;;;33382:13;;:17;;:28;;;;:::i;:::-;33366:13;:44;;;;33444:6;;33451:1;33444:9;;;;;;;;;;;;;33419:7;:22;33427:10;;33438:1;33427:13;;;;;;;;;;;;;;;33419:22;;;;;;;;;;;;;;;:34;;;;33352:3;;;;;;;33309:152;;;;33047:419:::0;;;;:::o;30999:66::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31050:9:::1;:7;:9::i;:::-;30999:66::o:0;30446:393::-;26775:8;:6;:8::i;:::-;26774:9;26766:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30501:14:::1;30518:23;30530:10;30518:11;:23::i;:::-;30501:40;;30567:1;30558:6;:10;30550:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30643:31;30667:6;30643:7;:19;30651:10;30643:19;;;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;30621:7;:19;30629:10;30621:19;;;;;;;;;;;;;;;:53;;;;30699:25;30717:6;30699:13;;:17;;:25;;;;:::i;:::-;30683:13;:41;;;;30735:40;30756:10;30768:6;30735:7;:5;:7::i;:::-;:20;;;;:40;;;;;:::i;:::-;30799:10;30791:42;;;30811:6;30819:13;:11;:13::i;:::-;30791:42;;;;;;;;;;;;;;;;;;;;;;;;26815:1;30446:393::o:0;26449:86::-;26496:4;26520:7;;;;;;;;;;;26513:14;;26449:86;:::o;29827:114::-;29892:7;29917:9;:18;29927:7;29917:18;;;;;;;;;;;;;;;;29910:25;;29827:114;;;:::o;24810:148::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24917:1:::1;24880:40;;24901:6;::::0;::::1;;;;;;;;24880:40;;;;;;;;;;;;24948:1;24931:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;24810:148::o:0;29363:91::-;29413:7;29438:10;;29431:17;;29363:91;:::o;30930:63::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30979:8:::1;:6;:8::i;:::-;30930:63::o:0;24159:87::-;24205:7;24232:6;;;;;;;;;;;24225:13;;24159:87;:::o;29553:268::-;29597:7;29633:8;;29617:13;:11;:13::i;:::-;:24;29613:202;;;29657:4;29650:11;;;;29613:202;29693:10;;29677:13;:11;:13::i;:::-;:26;29673:142;;;29719:1;29712:8;;;;29673:142;29746:69;29790:24;29803:10;;29790:8;;:12;;:24;;;;:::i;:::-;29746:39;29780:4;29746:29;29764:10;;29746:13;:11;:13::i;:::-;:17;;:29;;;;:::i;:::-;:33;;:39;;;;:::i;:::-;:43;;:69;;;;:::i;:::-;29739:76;;29553:268;;:::o;30065:142::-;30129:7;30154:47;30196:4;30154:37;30177:13;:11;:13::i;:::-;30154:9;:18;30164:7;30154:18;;;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;30147:54;;30065:142;;;:::o;31200:391::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31316:1:::1;31294:9;:19;31304:8;31294:19;;;;;;;;;;;;;;;;:23;31286:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31394:1;31371:9;:19;31381:8;31371:19;;;;;;;;;;;;;;;;:24;31363:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31462:9;:19;31472:8;31462:19;;;;;;;;;;;;;;;;31440:9;:19;31450:8;31440:19;;;;;;;;;;;;;;;:41;;;;31508:7;:17;31516:8;31508:17;;;;;;;;;;;;;;;;31488:7;:17;31496:8;31488:17;;;;;;;;;;;;;;;:37;;;;31556:1;31534:9;:19;31544:8;31534:19;;;;;;;;;;;;;;;:23;;;;31584:1;31564:7;:17;31572:8;31564:17;;;;;;;;;;;;;;;:21;;;;31200:391:::0;;:::o;28900:97::-;28953:7;28978:13;;28971:20;;28900:97;:::o;32129:453::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32262:1:::1;32242:10;;:17;;:21;:59;;;;;32288:6;;:13;;32267:10;;:17;;:34;32242:59;32234:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32398:9;32393:184;32417:10;;:17;;32413:1;:21;32393:184;;;32466:58;32499:9;:24;32509:10;;32520:1;32509:13;;;;;;;;;;;;;;;32499:24;;;;;;;;;;;;;;;;32466:28;32484:6;;32491:1;32484:9;;;;;;;;;;;;;32466:13;;:17;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;32450:13;:74;;;;32560:6;;32567:1;32560:9;;;;;;;;;;;;;32533;:24;32543:10;;32554:1;32543:13;;;;;;;;;;;;;;;32533:24;;;;;;;;;;;;;;;:36;;;;32436:3;;;;;;;32393:184;;;;32129:453:::0;;;;:::o;29947:112::-;30012:7;30037;:16;30045:7;30037:16;;;;;;;;;;;;;;;;30030:23;;29947:112;;;:::o;31071:123::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31122:66:::1;31143:10;31155:7;:5;:7::i;:::-;:17;;;31181:4;31155:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;31122:7;:5;:7::i;:::-;:20;;;;:66;;;;;:::i;:::-;31071:123::o:0;28747:147::-;28799:7;28873:15;28866:22;;28747:147;:::o;30213:139::-;30280:7;30305:41;30327:18;30337:7;30327:9;:18::i;:::-;30305:17;30314:7;30305:8;:17::i;:::-;:21;;:41;;;;:::i;:::-;30298:48;;30213:139;;;:::o;29003:97::-;29056:7;29081:13;;29074:20;;29003:97;:::o;29238:119::-;29293:7;29318:33;29336:14;:12;:14::i;:::-;29318:13;:11;:13::i;:::-;:17;;:33;;;;:::i;:::-;29311:40;;29238:119;:::o;32588:453::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32721:1:::1;32701:10;;:17;;:21;:59;;;;;32747:6;;:13;;32726:10;;:17;;:34;32701:59;32693:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32857:9;32852:184;32876:10;;:17;;32872:1;:21;32852:184;;;32925:28;32943:6;;32950:1;32943:9;;;;;;;;;;;;;32925:13;;:17;;:28;;;;:::i;:::-;32909:13;:44;;;;32989:39;33018:6;;33025:1;33018:9;;;;;;;;;;;;;32989;:24;32999:10;;33010:1;32999:13;;;;;;;;;;;;;;;32989:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;32962:9;:24;32972:10;;32983:1;32972:13;;;;;;;;;;;;;;;32962:24;;;;;;;;;;;;;;;:66;;;;32895:3;;;;;;;32852:184;;;;32588:453:::0;;;;:::o;31862:261::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31957:7:::1;:16;31965:7;31957:16;;;;;;;;;;;;;;;;31948:5;:25;;31940:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32036:48;32065:9;:18;32075:7;32065:18;;;;;;;;;;;;;;;;32036:24;32054:5;32036:13;;:17;;:24;;;;:::i;:::-;:28;;:48;;;;:::i;:::-;32020:13;:64;;;;32112:5;32091:9;:18;32101:7;32091:18;;;;;;;;;;;;;;;:26;;;;31862:261:::0;;:::o;25113:244::-;24390:12;:10;:12::i;:::-;24379:23;;:7;:5;:7::i;:::-;:23;;;24371:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25222:1:::1;25202:22;;:8;:22;;;;25194:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25312:8;25283:38;;25304:6;::::0;::::1;;;;;;;;25283:38;;;;;;;;;;;;25341:8;25332:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;25113:244:::0;:::o;28659:82::-;28705:6;28729;;;;;;;;;;;28722:13;;28659:82;:::o;3707:220::-;3765:7;3794:1;3789;:6;3785:20;;;3804:1;3797:8;;;;3785:20;3816:9;3832:1;3828;:5;3816:17;;3861:1;3856;3852;:5;;;;;;:10;3844:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3918:1;3911:8;;;3707:220;;;;;:::o;4405:153::-;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4549:1;4545;:5;;;;;;4538:12;;4405:153;;;;:::o;22698:106::-;22751:15;22786:10;22779:17;;22698:106;:::o;2828:179::-;2886:7;2906:9;2922:1;2918;:5;2906:17;;2947:1;2942;:6;;2934:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:1;2991:8;;;2828:179;;;;:::o;3290:158::-;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3439:1;3435;:5;3428:12;;3290:158;;;;:::o;18993:177::-;19076:86;19096:5;19126:23;;;19151:2;19155:5;19103:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19076:19;:86::i;:::-;18993:177;;;:::o;27249:118::-;26775:8;:6;:8::i;:::-;26774:9;26766:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27319:4:::1;27309:7;;:14;;;;;;;;;;;;;;;;;;27339:20;27346:12;:10;:12::i;:::-;27339:20;;;;;;;;;;;;;;;;;;;;27249:118::o:0;21298:761::-;21722:23;21748:69;21776:4;21748:69;;;;;;;;;;;;;;;;;21756:5;21748:27;;;;:69;;;;;:::i;:::-;21722:95;;21852:1;21832:10;:17;:21;21828:224;;;21974:10;21963:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21955:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21828:224;21298:761;;;:::o;13990:195::-;14093:12;14125:52;14147:6;14155:4;14161:1;14164:12;14125:21;:52::i;:::-;14118:59;;13990:195;;;;;:::o;15042:530::-;15169:12;15227:5;15202:21;:30;;15194:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15294:18;15305:6;15294:10;:18::i;:::-;15286:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15420:12;15434:23;15461:6;:11;;15481:5;15489:4;15461:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15419:75;;;;15512:52;15530:7;15539:10;15551:12;15512:17;:52::i;:::-;15505:59;;;;15042:530;;;;;;:::o;11072:422::-;11132:4;11340:12;11451:7;11439:20;11431:28;;11485:1;11478:4;:8;11471:15;;;11072:422;;;:::o;17582:742::-;17697:12;17726:7;17722:595;;;17757:10;17750:17;;;;17722:595;17891:1;17871:10;:17;:21;17867:439;;;18134:10;18128:17;18195:15;18182:10;18178:2;18174:19;18167:44;18082:148;18277:12;18270:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17582:742;;;;;;:::o
Swarm Source
ipfs://36946eccab9dc1efabc98b74ac4fe90cd0d2544c5242c1c535c94fa7540b9f08
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,174.25
Net Worth in ETH
0.503421
Token Allocations
MINT
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.000094 | 12,468,186.0043 | $1,174.25 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.