ERC-20
Overview
Max Total Supply
280,794.192544475305888408 covKEEP
Holders
54
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
74.278372014494389307 covKEEPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
UnderwriterToken
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity Standard Json-Input format)
// ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄ // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓ // ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀ // ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ // ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ // // Trust math, not hardware. // SPDX-License-Identifier: MIT pragma solidity 0.8.5; import "@thesis/solidity-contracts/contracts/token/ERC20WithPermit.sol"; /// @title UnderwriterToken /// @notice Underwriter tokens represent an ownership share in the underlying /// collateral of the asset-specific pool. Underwriter tokens are minted /// when a user deposits ERC20 tokens into asset-specific pool and they /// are burned when a user exits the position. Underwriter tokens /// natively support meta transactions. Users can authorize a transfer /// of their underwriter tokens with a signature conforming EIP712 /// standard instead of an on-chain transaction from their address. /// Anyone can submit this signature on the user's behalf by calling the /// permit function, as specified in EIP2612 standard, paying gas fees, /// and possibly performing other actions in the same transaction. contract UnderwriterToken is ERC20WithPermit { constructor(string memory _name, string memory _symbol) ERC20WithPermit(_name, _symbol) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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 () { 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity ^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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/access/Ownable.sol"; import "./IERC20WithPermit.sol"; import "./IReceiveApproval.sol"; /// @title ERC20WithPermit /// @notice Burnable ERC20 token with EIP2612 permit functionality. User can /// authorize a transfer of their token with a signature conforming /// EIP712 standard instead of an on-chain transaction from their /// address. Anyone can submit this signature on the user's behalf by /// calling the permit function, as specified in EIP2612 standard, /// paying gas fees, and possibly performing other actions in the same /// transaction. contract ERC20WithPermit is IERC20WithPermit, Ownable { /// @notice The amount of tokens owned by the given account. mapping(address => uint256) public override balanceOf; /// @notice The remaining number of tokens that spender will be /// allowed to spend on behalf of owner through `transferFrom` and /// `burnFrom`. This is zero by default. mapping(address => mapping(address => uint256)) public override allowance; /// @notice Returns the current nonce for EIP2612 permission for the /// provided token owner for a replay protection. Used to construct /// EIP2612 signature provided to `permit` function. mapping(address => uint256) public override nonces; uint256 public immutable cachedChainId; bytes32 public immutable cachedDomainSeparator; /// @notice Returns EIP2612 Permit message hash. Used to construct EIP2612 /// signature provided to `permit` function. bytes32 public constant override PERMIT_TYPEHASH = keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ); /// @notice The amount of tokens in existence. uint256 public override totalSupply; /// @notice The name of the token. string public override name; /// @notice The symbol of the token. string public override symbol; /// @notice The decimals places of the token. uint8 public constant override decimals = 18; constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; cachedChainId = block.chainid; cachedDomainSeparator = buildDomainSeparator(); } /// @notice Moves `amount` tokens from the caller's account to `recipient`. /// @return True if the operation succeeded, reverts otherwise. /// @dev Requirements: /// - `recipient` cannot be the zero address, /// - the caller must have a balance of at least `amount`. function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /// @notice Moves `amount` tokens from `sender` to `recipient` using the /// allowance mechanism. `amount` is then deducted from the caller's /// allowance unless the allowance was made for `type(uint256).max`. /// @return True if the operation succeeded, reverts otherwise. /// @dev Requirements: /// - `sender` and `recipient` cannot be the zero address, /// - `sender` must have a balance of at least `amount`, /// - the caller must have allowance for `sender`'s tokens of at least /// `amount`. function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { uint256 currentAllowance = allowance[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "Transfer amount exceeds allowance" ); _approve(sender, msg.sender, currentAllowance - amount); } _transfer(sender, recipient, amount); return true; } /// @notice EIP2612 approval made with secp256k1 signature. /// Users can authorize a transfer of their tokens with a signature /// conforming EIP712 standard, rather than an on-chain transaction /// from their address. Anyone can submit this signature on the /// user's behalf by calling the permit function, paying gas fees, /// and possibly performing other actions in the same transaction. /// @dev The deadline argument can be set to `type(uint256).max to create /// permits that effectively never expire. If the `amount` is set /// to `type(uint256).max` then `transferFrom` and `burnFrom` will /// not reduce an allowance. function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external override { /* solhint-disable-next-line not-rely-on-time */ require(deadline >= block.timestamp, "Permission expired"); // Validate `s` and `v` values for a malleability concern described in EIP2. // Only signatures with `s` value in the lower half of the secp256k1 // curve's order and `v` value of 27 or 28 are considered valid. require( uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "Invalid signature 's' value" ); require(v == 27 || v == 28, "Invalid signature 'v' value"); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256( abi.encode( PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline ) ) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require( recoveredAddress != address(0) && recoveredAddress == owner, "Invalid signature" ); _approve(owner, spender, amount); } /// @notice Creates `amount` tokens and assigns them to `account`, /// increasing the total supply. /// @dev Requirements: /// - `recipient` cannot be the zero address. function mint(address recipient, uint256 amount) external onlyOwner { require(recipient != address(0), "Mint to the zero address"); beforeTokenTransfer(address(0), recipient, amount); totalSupply += amount; balanceOf[recipient] += amount; emit Transfer(address(0), recipient, amount); } /// @notice Destroys `amount` tokens from the caller. /// @dev Requirements: /// - the caller must have a balance of at least `amount`. function burn(uint256 amount) external override { _burn(msg.sender, amount); } /// @notice Destroys `amount` of tokens from `account` using the allowance /// mechanism. `amount` is then deducted from the caller's allowance /// unless the allowance was made for `type(uint256).max`. /// @dev Requirements: /// - `account` must have a balance of at least `amount`, /// - the caller must have allowance for `account`'s tokens of at least /// `amount`. function burnFrom(address account, uint256 amount) external override { uint256 currentAllowance = allowance[account][msg.sender]; if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "Burn amount exceeds allowance" ); _approve(account, msg.sender, currentAllowance - amount); } _burn(account, amount); } /// @notice Calls `receiveApproval` function on spender previously approving /// the spender to withdraw from the caller multiple times, up to /// the `amount` amount. If this function is called again, it /// overwrites the current allowance with `amount`. Reverts if the /// approval reverted or if `receiveApproval` call on the spender /// reverted. /// @return True if both approval and `receiveApproval` calls succeeded. /// @dev If the `amount` is set to `type(uint256).max` then /// `transferFrom` and `burnFrom` will not reduce an allowance. function approveAndCall( address spender, uint256 amount, bytes memory extraData ) external override returns (bool) { if (approve(spender, amount)) { IReceiveApproval(spender).receiveApproval( msg.sender, amount, address(this), extraData ); return true; } return false; } /// @notice Sets `amount` as the allowance of `spender` over the caller's /// tokens. /// @return True if the operation succeeded. /// @dev If the `amount` is set to `type(uint256).max` then /// `transferFrom` and `burnFrom` will not reduce an allowance. /// 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 function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } /// @notice Returns hash of EIP712 Domain struct with the token name as /// a signing domain and token contract as a verifying contract. /// Used to construct EIP2612 signature provided to `permit` /// function. /* solhint-disable-next-line func-name-mixedcase */ function DOMAIN_SEPARATOR() public view override returns (bytes32) { // As explained in EIP-2612, if the DOMAIN_SEPARATOR contains the // chainId and is defined at contract deployment instead of // reconstructed for every signature, there is a risk of possible replay // attacks between chains in the event of a future chain split. // To address this issue, we check the cached chain ID against the // current one and in case they are different, we build domain separator // from scratch. if (block.chainid == cachedChainId) { return cachedDomainSeparator; } else { return buildDomainSeparator(); } } /// @dev Hook that is called before any transfer of tokens. This includes /// minting and burning. /// /// Calling conditions: /// - when `from` and `to` are both non-zero, `amount` of `from`'s tokens /// will be to transferred to `to`. /// - when `from` is zero, `amount` tokens will be minted for `to`. /// - when `to` is zero, `amount` of ``from``'s tokens will be burned. /// - `from` and `to` are never both zero. // slither-disable-next-line dead-code function beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _burn(address account, uint256 amount) internal { uint256 currentBalance = balanceOf[account]; require(currentBalance >= amount, "Burn amount exceeds balance"); beforeTokenTransfer(account, address(0), amount); balanceOf[account] = currentBalance - amount; totalSupply -= amount; emit Transfer(account, address(0), amount); } function _transfer( address sender, address recipient, uint256 amount ) private { require(sender != address(0), "Transfer from the zero address"); require(recipient != address(0), "Transfer to the zero address"); require(recipient != address(this), "Transfer to the token address"); beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = balanceOf[sender]; require(senderBalance >= amount, "Transfer amount exceeds balance"); balanceOf[sender] = senderBalance - amount; balanceOf[recipient] += amount; emit Transfer(sender, recipient, amount); } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "Approve from the zero address"); require(spender != address(0), "Approve to the zero address"); allowance[owner][spender] = amount; emit Approval(owner, spender, amount); } function buildDomainSeparator() private view returns (bytes32) { return keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(name)), keccak256(bytes("1")), block.chainid, address(this) ) ); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice An interface that should be implemented by tokens supporting /// `approveAndCall`/`receiveApproval` pattern. interface IApproveAndCall { /// @notice Executes `receiveApproval` function on spender as specified in /// `IReceiveApproval` interface. Approves spender to withdraw from /// the caller multiple times, up to the `amount`. If this /// function is called again, it overwrites the current allowance /// with `amount`. Reverts if the approval reverted or if /// `receiveApproval` call on the spender reverted. function approveAndCall( address spender, uint256 amount, bytes memory extraData ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import "./IApproveAndCall.sol"; /// @title IERC20WithPermit /// @notice Burnable ERC20 token with EIP2612 permit functionality. User can /// authorize a transfer of their token with a signature conforming /// EIP712 standard instead of an on-chain transaction from their /// address. Anyone can submit this signature on the user's behalf by /// calling the permit function, as specified in EIP2612 standard, /// paying gas fees, and possibly performing other actions in the same /// transaction. interface IERC20WithPermit is IERC20, IERC20Metadata, IApproveAndCall { /// @notice EIP2612 approval made with secp256k1 signature. /// Users can authorize a transfer of their tokens with a signature /// conforming EIP712 standard, rather than an on-chain transaction /// from their address. Anyone can submit this signature on the /// user's behalf by calling the permit function, paying gas fees, /// and possibly performing other actions in the same transaction. /// @dev The deadline argument can be set to `type(uint256).max to create /// permits that effectively never expire. function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /// @notice Destroys `amount` tokens from the caller. function burn(uint256 amount) external; /// @notice Destroys `amount` of tokens from `account`, deducting the amount /// from caller's allowance. function burnFrom(address account, uint256 amount) external; /// @notice Returns hash of EIP712 Domain struct with the token name as /// a signing domain and token contract as a verifying contract. /// Used to construct EIP2612 signature provided to `permit` /// function. /* solhint-disable-next-line func-name-mixedcase */ function DOMAIN_SEPARATOR() external view returns (bytes32); /// @notice Returns the current nonce for EIP2612 permission for the /// provided token owner for a replay protection. Used to construct /// EIP2612 signature provided to `permit` function. function nonces(address owner) external view returns (uint256); /// @notice Returns EIP2612 Permit message hash. Used to construct EIP2612 /// signature provided to `permit` function. /* solhint-disable-next-line func-name-mixedcase */ function PERMIT_TYPEHASH() external pure returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice An interface that should be implemented by contracts supporting /// `approveAndCall`/`receiveApproval` pattern. interface IReceiveApproval { /// @notice Receives approval to spend tokens. Called as a result of /// `approveAndCall` call on the token. function receiveApproval( address from, uint256 amount, address token, bytes calldata extraData ) external; }
{ "evmVersion": "berlin", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": false, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cachedChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cachedDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b50604051620030de380380620030de833981810160405281019062000037919062000326565b818160006200004b6200014460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350816005908051906020019062000101929190620001f8565b5080600690805190602001906200011a929190620001f8565b504660808181525050620001336200014c60201b60201c565b60a0818152505050505050620006cb565b600033905090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600560405162000180919062000469565b60405180910390206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001620001dd95949392919062000482565b60405160208183030381529060405280519060200120905090565b8280546200020690620005dc565b90600052602060002090601f0160209004810192826200022a576000855562000276565b82601f106200024557805160ff191683800117855562000276565b8280016001018555821562000276579182015b828111156200027557825182559160200191906001019062000258565b5b50905062000285919062000289565b5090565b5b80821115620002a45760008160009055506001016200028a565b5090565b6000620002bf620002b98462000508565b620004df565b905082815260208101848484011115620002de57620002dd620006ab565b5b620002eb848285620005a6565b509392505050565b600082601f8301126200030b576200030a620006a6565b5b81516200031d848260208601620002a8565b91505092915050565b6000806040838503121562000340576200033f620006b5565b5b600083015167ffffffffffffffff811115620003615762000360620006b0565b5b6200036f85828601620002f3565b925050602083015167ffffffffffffffff811115620003935762000392620006b0565b5b620003a185828601620002f3565b9150509250929050565b620003b6816200055e565b82525050565b620003c78162000572565b82525050565b60008154620003dc81620005dc565b620003e8818662000553565b9450600182166000811462000406576001811462000418576200044f565b60ff198316865281860193506200044f565b62000423856200053e565b60005b83811015620004475781548189015260018201915060208101905062000426565b838801955050505b50505092915050565b62000463816200059c565b82525050565b6000620004778284620003cd565b915081905092915050565b600060a082019050620004996000830188620003bc565b620004a86020830187620003bc565b620004b76040830186620003bc565b620004c6606083018562000458565b620004d56080830184620003ab565b9695505050505050565b6000620004eb620004fe565b9050620004f9828262000612565b919050565b6000604051905090565b600067ffffffffffffffff82111562000526576200052562000677565b5b6200053182620006ba565b9050602081019050919050565b60008190508160005260206000209050919050565b600081905092915050565b60006200056b826200057c565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620005c6578082015181840152602081019050620005a9565b83811115620005d6576000848401525b50505050565b60006002820490506001821680620005f557607f821691505b602082108114156200060c576200060b62000648565b5b50919050565b6200061d82620006ba565b810181811067ffffffffffffffff821117156200063f576200063e62000677565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60805160a0516129df620006ff600039600081816106550152610bd601526000818161062d01526109bb01526129df6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063771da5c5116100b8578063a9059cbb1161007c578063a9059cbb14610355578063b4f94b2e14610385578063cae9ca51146103a3578063d505accf146103d3578063dd62ed3e146103ef578063f2fde38b1461041f57610142565b8063771da5c5146102af57806379cc6790146102cd5780637ecebe00146102e95780638da5cb5b1461031957806395d89b411461033757610142565b8063313ce5671161010a578063313ce567146102015780633644e5151461021f57806340c10f191461023d57806342966c681461025957806370a0823114610275578063715018a6146102a557610142565b806306fdde0314610147578063095ea7b31461016557806318160ddd1461019557806323b872dd146101b357806330adf81f146101e3575b600080fd5b61014f61043b565b60405161015c91906120a4565b60405180910390f35b61017f600480360381019061017a9190611a3e565b6104c9565b60405161018c9190611f75565b60405180910390f35b61019d6104e0565b6040516101aa91906122c6565b60405180910390f35b6101cd60048036038101906101c89190611949565b6104e6565b6040516101da9190611f75565b60405180910390f35b6101eb610600565b6040516101f89190611f90565b60405180910390f35b610209610624565b60405161021691906122e1565b60405180910390f35b610227610629565b6040516102349190611f90565b60405180910390f35b61025760048036038101906102529190611a3e565b610689565b005b610273600480360381019061026e9190611aed565b61085a565b005b61028f600480360381019061028a91906118dc565b610867565b60405161029c91906122c6565b60405180910390f35b6102ad61087f565b005b6102b76109b9565b6040516102c491906122c6565b60405180910390f35b6102e760048036038101906102e29190611a3e565b6109dd565b005b61030360048036038101906102fe91906118dc565b610aee565b60405161031091906122c6565b60405180910390f35b610321610b06565b60405161032e9190611f0e565b60405180910390f35b61033f610b2f565b60405161034c91906120a4565b60405180910390f35b61036f600480360381019061036a9190611a3e565b610bbd565b60405161037c9190611f75565b60405180910390f35b61038d610bd4565b60405161039a9190611f90565b60405180910390f35b6103bd60048036038101906103b89190611a7e565b610bf8565b6040516103ca9190611f75565b60405180910390f35b6103ed60048036038101906103e8919061199c565b610c8f565b005b61040960048036038101906104049190611909565b610f73565b60405161041691906122c6565b60405180910390f35b610439600480360381019061043491906118dc565b610f98565b005b60058054610448906124e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610474906124e0565b80156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b505050505081565b60006104d6338484611141565b6001905092915050565b60045481565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105e957828110156105d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c990612106565b60405180910390fd5b6105e8853385846105e3919061240b565b611141565b5b6105f485858561130c565b60019150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60007f000000000000000000000000000000000000000000000000000000000000000046141561067b577f00000000000000000000000000000000000000000000000000000000000000009050610686565b6106836115fd565b90505b90565b6106916116a5565b73ffffffffffffffffffffffffffffffffffffffff166106af610b06565b73ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90612266565b60405180910390fd5b610781600083836116ad565b806004600082825461079391906123b5565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107e991906123b5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161084e91906122c6565b60405180910390a35050565b61086433826116b2565b50565b60016020528060005260406000206000915090505481565b6108876116a5565b73ffffffffffffffffffffffffffffffffffffffff166108a5610b06565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610adf5781811015610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf906121a6565b60405180910390fd5b610ade83338484610ad9919061240b565b611141565b5b610ae983836116b2565b505050565b60036020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054610b3c906124e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b68906124e0565b8015610bb55780601f10610b8a57610100808354040283529160200191610bb5565b820191906000526020600020905b815481529060010190602001808311610b9857829003601f168201915b505050505081565b6000610bca33848461130c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0484846104c9565b15610c83578373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401610c489493929190611f29565b600060405180830381600087803b158015610c6257600080fd5b505af1158015610c76573d6000803e3d6000fd5b5050505060019050610c88565b600090505b9392505050565b42841015610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612226565b60405180910390fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08160001c1115610d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2f90612246565b60405180910390fd5b601b8360ff161480610d4d5750601c8360ff16145b610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612126565b60405180910390fd5b6000610d96610629565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9898989600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e0a90612543565b919050558a604051602001610e2496959493929190611fab565b60405160208183030381529060405280519060200120604051602001610e4b929190611ed7565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051610e88949392919061205f565b6020604051602081039080840390855afa158015610eaa573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610f1e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612166565b60405180910390fd5b610f68898989611141565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b610fa06116a5565b73ffffffffffffffffffffffffffffffffffffffff16610fbe610b06565b73ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b90612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b906120e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890612186565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906120c6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ff91906122c6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561137c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611373906122a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612286565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612146565b60405180910390fd5b6114668383836116ad565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4906121c6565b60405180910390fd5b81816114f9919061240b565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461158b91906123b5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ef91906122c6565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600560405161162f9190611ec0565b60405180910390206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161168a95949392919061200c565b60405160208183030381529060405280519060200120905090565b600033905090565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906121e6565b60405180910390fd5b611745836000846116ad565b8181611751919061240b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546117a6919061240b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161180b91906122c6565b60405180910390a3505050565b600061182b61182684612321565b6122fc565b90508281526020810184848401111561184757611846612628565b5b61185284828561249e565b509392505050565b6000813590506118698161294d565b92915050565b60008135905061187e81612964565b92915050565b600082601f83011261189957611898612623565b5b81356118a9848260208601611818565b91505092915050565b6000813590506118c18161297b565b92915050565b6000813590506118d681612992565b92915050565b6000602082840312156118f2576118f1612632565b5b60006119008482850161185a565b91505092915050565b600080604083850312156119205761191f612632565b5b600061192e8582860161185a565b925050602061193f8582860161185a565b9150509250929050565b60008060006060848603121561196257611961612632565b5b60006119708682870161185a565b93505060206119818682870161185a565b9250506040611992868287016118b2565b9150509250925092565b600080600080600080600060e0888a0312156119bb576119ba612632565b5b60006119c98a828b0161185a565b97505060206119da8a828b0161185a565b96505060406119eb8a828b016118b2565b95505060606119fc8a828b016118b2565b9450506080611a0d8a828b016118c7565b93505060a0611a1e8a828b0161186f565b92505060c0611a2f8a828b0161186f565b91505092959891949750929550565b60008060408385031215611a5557611a54612632565b5b6000611a638582860161185a565b9250506020611a74858286016118b2565b9150509250929050565b600080600060608486031215611a9757611a96612632565b5b6000611aa58682870161185a565b9350506020611ab6868287016118b2565b925050604084013567ffffffffffffffff811115611ad757611ad661262d565b5b611ae386828701611884565b9150509250925092565b600060208284031215611b0357611b02612632565b5b6000611b11848285016118b2565b91505092915050565b611b238161243f565b82525050565b611b3281612451565b82525050565b611b418161245d565b82525050565b611b58611b538261245d565b61258c565b82525050565b6000611b6982612367565b611b73818561237d565b9350611b838185602086016124ad565b611b8c81612637565b840191505092915050565b60008154611ba4816124e0565b611bae818661238e565b94506001821660008114611bc95760018114611bda57611c0d565b60ff19831686528186019350611c0d565b611be385612352565b60005b83811015611c0557815481890152600182019150602081019050611be6565b838801955050505b50505092915050565b6000611c2182612372565b611c2b8185612399565b9350611c3b8185602086016124ad565b611c4481612637565b840191505092915050565b6000611c5c601b83612399565b9150611c6782612648565b602082019050919050565b6000611c7f602683612399565b9150611c8a82612671565b604082019050919050565b6000611ca2602183612399565b9150611cad826126c0565b604082019050919050565b6000611cc56002836123aa565b9150611cd08261270f565b600282019050919050565b6000611ce8601b83612399565b9150611cf382612738565b602082019050919050565b6000611d0b601d83612399565b9150611d1682612761565b602082019050919050565b6000611d2e601183612399565b9150611d398261278a565b602082019050919050565b6000611d51601d83612399565b9150611d5c826127b3565b602082019050919050565b6000611d74601d83612399565b9150611d7f826127dc565b602082019050919050565b6000611d97601f83612399565b9150611da282612805565b602082019050919050565b6000611dba601b83612399565b9150611dc58261282e565b602082019050919050565b6000611ddd602083612399565b9150611de882612857565b602082019050919050565b6000611e00601283612399565b9150611e0b82612880565b602082019050919050565b6000611e23601b83612399565b9150611e2e826128a9565b602082019050919050565b6000611e46601883612399565b9150611e51826128d2565b602082019050919050565b6000611e69601c83612399565b9150611e74826128fb565b602082019050919050565b6000611e8c601e83612399565b9150611e9782612924565b602082019050919050565b611eab81612487565b82525050565b611eba81612491565b82525050565b6000611ecc8284611b97565b915081905092915050565b6000611ee282611cb8565b9150611eee8285611b47565b602082019150611efe8284611b47565b6020820191508190509392505050565b6000602082019050611f236000830184611b1a565b92915050565b6000608082019050611f3e6000830187611b1a565b611f4b6020830186611ea2565b611f586040830185611b1a565b8181036060830152611f6a8184611b5e565b905095945050505050565b6000602082019050611f8a6000830184611b29565b92915050565b6000602082019050611fa56000830184611b38565b92915050565b600060c082019050611fc06000830189611b38565b611fcd6020830188611b1a565b611fda6040830187611b1a565b611fe76060830186611ea2565b611ff46080830185611ea2565b61200160a0830184611ea2565b979650505050505050565b600060a0820190506120216000830188611b38565b61202e6020830187611b38565b61203b6040830186611b38565b6120486060830185611ea2565b6120556080830184611b1a565b9695505050505050565b60006080820190506120746000830187611b38565b6120816020830186611eb1565b61208e6040830185611b38565b61209b6060830184611b38565b95945050505050565b600060208201905081810360008301526120be8184611c16565b905092915050565b600060208201905081810360008301526120df81611c4f565b9050919050565b600060208201905081810360008301526120ff81611c72565b9050919050565b6000602082019050818103600083015261211f81611c95565b9050919050565b6000602082019050818103600083015261213f81611cdb565b9050919050565b6000602082019050818103600083015261215f81611cfe565b9050919050565b6000602082019050818103600083015261217f81611d21565b9050919050565b6000602082019050818103600083015261219f81611d44565b9050919050565b600060208201905081810360008301526121bf81611d67565b9050919050565b600060208201905081810360008301526121df81611d8a565b9050919050565b600060208201905081810360008301526121ff81611dad565b9050919050565b6000602082019050818103600083015261221f81611dd0565b9050919050565b6000602082019050818103600083015261223f81611df3565b9050919050565b6000602082019050818103600083015261225f81611e16565b9050919050565b6000602082019050818103600083015261227f81611e39565b9050919050565b6000602082019050818103600083015261229f81611e5c565b9050919050565b600060208201905081810360008301526122bf81611e7f565b9050919050565b60006020820190506122db6000830184611ea2565b92915050565b60006020820190506122f66000830184611eb1565b92915050565b6000612306612317565b90506123128282612512565b919050565b6000604051905090565b600067ffffffffffffffff82111561233c5761233b6125f4565b5b61234582612637565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006123c082612487565b91506123cb83612487565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612400576123ff612596565b5b828201905092915050565b600061241682612487565b915061242183612487565b92508282101561243457612433612596565b5b828203905092915050565b600061244a82612467565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156124cb5780820151818401526020810190506124b0565b838111156124da576000848401525b50505050565b600060028204905060018216806124f857607f821691505b6020821081141561250c5761250b6125c5565b5b50919050565b61251b82612637565b810181811067ffffffffffffffff8211171561253a576125396125f4565b5b80604052505050565b600061254e82612487565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561258157612580612596565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f496e76616c6964207369676e6174757265202776272076616c75650000000000600082015250565b7f5472616e7366657220746f2074686520746f6b656e2061646472657373000000600082015250565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b7f4275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b7f4275726e20616d6f756e7420657863656564732062616c616e63650000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5065726d697373696f6e20657870697265640000000000000000000000000000600082015250565b7f496e76616c6964207369676e6174757265202773272076616c75650000000000600082015250565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6129568161243f565b811461296157600080fd5b50565b61296d8161245d565b811461297857600080fd5b50565b61298481612487565b811461298f57600080fd5b50565b61299b81612491565b81146129a657600080fd5b5056fea264697066735822122021a908b81de327bb92c8bb6ef7b2b9b0c6769fcad6347c9bed19317f88bc629b64736f6c63430008050033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000019636f764b45455020756e64657277726974657220746f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000007636f764b45455000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063771da5c5116100b8578063a9059cbb1161007c578063a9059cbb14610355578063b4f94b2e14610385578063cae9ca51146103a3578063d505accf146103d3578063dd62ed3e146103ef578063f2fde38b1461041f57610142565b8063771da5c5146102af57806379cc6790146102cd5780637ecebe00146102e95780638da5cb5b1461031957806395d89b411461033757610142565b8063313ce5671161010a578063313ce567146102015780633644e5151461021f57806340c10f191461023d57806342966c681461025957806370a0823114610275578063715018a6146102a557610142565b806306fdde0314610147578063095ea7b31461016557806318160ddd1461019557806323b872dd146101b357806330adf81f146101e3575b600080fd5b61014f61043b565b60405161015c91906120a4565b60405180910390f35b61017f600480360381019061017a9190611a3e565b6104c9565b60405161018c9190611f75565b60405180910390f35b61019d6104e0565b6040516101aa91906122c6565b60405180910390f35b6101cd60048036038101906101c89190611949565b6104e6565b6040516101da9190611f75565b60405180910390f35b6101eb610600565b6040516101f89190611f90565b60405180910390f35b610209610624565b60405161021691906122e1565b60405180910390f35b610227610629565b6040516102349190611f90565b60405180910390f35b61025760048036038101906102529190611a3e565b610689565b005b610273600480360381019061026e9190611aed565b61085a565b005b61028f600480360381019061028a91906118dc565b610867565b60405161029c91906122c6565b60405180910390f35b6102ad61087f565b005b6102b76109b9565b6040516102c491906122c6565b60405180910390f35b6102e760048036038101906102e29190611a3e565b6109dd565b005b61030360048036038101906102fe91906118dc565b610aee565b60405161031091906122c6565b60405180910390f35b610321610b06565b60405161032e9190611f0e565b60405180910390f35b61033f610b2f565b60405161034c91906120a4565b60405180910390f35b61036f600480360381019061036a9190611a3e565b610bbd565b60405161037c9190611f75565b60405180910390f35b61038d610bd4565b60405161039a9190611f90565b60405180910390f35b6103bd60048036038101906103b89190611a7e565b610bf8565b6040516103ca9190611f75565b60405180910390f35b6103ed60048036038101906103e8919061199c565b610c8f565b005b61040960048036038101906104049190611909565b610f73565b60405161041691906122c6565b60405180910390f35b610439600480360381019061043491906118dc565b610f98565b005b60058054610448906124e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610474906124e0565b80156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b505050505081565b60006104d6338484611141565b6001905092915050565b60045481565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105e957828110156105d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c990612106565b60405180910390fd5b6105e8853385846105e3919061240b565b611141565b5b6105f485858561130c565b60019150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60007f000000000000000000000000000000000000000000000000000000000000000146141561067b577f7ea667d286f0fb7a630afcb816b0725cb88e232332e125dd71b81f5bb92f7b4d9050610686565b6106836115fd565b90505b90565b6106916116a5565b73ffffffffffffffffffffffffffffffffffffffff166106af610b06565b73ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90612266565b60405180910390fd5b610781600083836116ad565b806004600082825461079391906123b5565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107e991906123b5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161084e91906122c6565b60405180910390a35050565b61086433826116b2565b50565b60016020528060005260406000206000915090505481565b6108876116a5565b73ffffffffffffffffffffffffffffffffffffffff166108a5610b06565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f000000000000000000000000000000000000000000000000000000000000000181565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610adf5781811015610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf906121a6565b60405180910390fd5b610ade83338484610ad9919061240b565b611141565b5b610ae983836116b2565b505050565b60036020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054610b3c906124e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b68906124e0565b8015610bb55780601f10610b8a57610100808354040283529160200191610bb5565b820191906000526020600020905b815481529060010190602001808311610b9857829003601f168201915b505050505081565b6000610bca33848461130c565b6001905092915050565b7f7ea667d286f0fb7a630afcb816b0725cb88e232332e125dd71b81f5bb92f7b4d81565b6000610c0484846104c9565b15610c83578373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401610c489493929190611f29565b600060405180830381600087803b158015610c6257600080fd5b505af1158015610c76573d6000803e3d6000fd5b5050505060019050610c88565b600090505b9392505050565b42841015610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612226565b60405180910390fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08160001c1115610d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2f90612246565b60405180910390fd5b601b8360ff161480610d4d5750601c8360ff16145b610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612126565b60405180910390fd5b6000610d96610629565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9898989600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e0a90612543565b919050558a604051602001610e2496959493929190611fab565b60405160208183030381529060405280519060200120604051602001610e4b929190611ed7565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051610e88949392919061205f565b6020604051602081039080840390855afa158015610eaa573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610f1e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612166565b60405180910390fd5b610f68898989611141565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b610fa06116a5565b73ffffffffffffffffffffffffffffffffffffffff16610fbe610b06565b73ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b90612206565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b906120e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890612186565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906120c6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ff91906122c6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561137c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611373906122a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612286565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612146565b60405180910390fd5b6114668383836116ad565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4906121c6565b60405180910390fd5b81816114f9919061240b565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461158b91906123b5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ef91906122c6565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600560405161162f9190611ec0565b60405180910390206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161168a95949392919061200c565b60405160208183030381529060405280519060200120905090565b600033905090565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906121e6565b60405180910390fd5b611745836000846116ad565b8181611751919061240b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546117a6919061240b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161180b91906122c6565b60405180910390a3505050565b600061182b61182684612321565b6122fc565b90508281526020810184848401111561184757611846612628565b5b61185284828561249e565b509392505050565b6000813590506118698161294d565b92915050565b60008135905061187e81612964565b92915050565b600082601f83011261189957611898612623565b5b81356118a9848260208601611818565b91505092915050565b6000813590506118c18161297b565b92915050565b6000813590506118d681612992565b92915050565b6000602082840312156118f2576118f1612632565b5b60006119008482850161185a565b91505092915050565b600080604083850312156119205761191f612632565b5b600061192e8582860161185a565b925050602061193f8582860161185a565b9150509250929050565b60008060006060848603121561196257611961612632565b5b60006119708682870161185a565b93505060206119818682870161185a565b9250506040611992868287016118b2565b9150509250925092565b600080600080600080600060e0888a0312156119bb576119ba612632565b5b60006119c98a828b0161185a565b97505060206119da8a828b0161185a565b96505060406119eb8a828b016118b2565b95505060606119fc8a828b016118b2565b9450506080611a0d8a828b016118c7565b93505060a0611a1e8a828b0161186f565b92505060c0611a2f8a828b0161186f565b91505092959891949750929550565b60008060408385031215611a5557611a54612632565b5b6000611a638582860161185a565b9250506020611a74858286016118b2565b9150509250929050565b600080600060608486031215611a9757611a96612632565b5b6000611aa58682870161185a565b9350506020611ab6868287016118b2565b925050604084013567ffffffffffffffff811115611ad757611ad661262d565b5b611ae386828701611884565b9150509250925092565b600060208284031215611b0357611b02612632565b5b6000611b11848285016118b2565b91505092915050565b611b238161243f565b82525050565b611b3281612451565b82525050565b611b418161245d565b82525050565b611b58611b538261245d565b61258c565b82525050565b6000611b6982612367565b611b73818561237d565b9350611b838185602086016124ad565b611b8c81612637565b840191505092915050565b60008154611ba4816124e0565b611bae818661238e565b94506001821660008114611bc95760018114611bda57611c0d565b60ff19831686528186019350611c0d565b611be385612352565b60005b83811015611c0557815481890152600182019150602081019050611be6565b838801955050505b50505092915050565b6000611c2182612372565b611c2b8185612399565b9350611c3b8185602086016124ad565b611c4481612637565b840191505092915050565b6000611c5c601b83612399565b9150611c6782612648565b602082019050919050565b6000611c7f602683612399565b9150611c8a82612671565b604082019050919050565b6000611ca2602183612399565b9150611cad826126c0565b604082019050919050565b6000611cc56002836123aa565b9150611cd08261270f565b600282019050919050565b6000611ce8601b83612399565b9150611cf382612738565b602082019050919050565b6000611d0b601d83612399565b9150611d1682612761565b602082019050919050565b6000611d2e601183612399565b9150611d398261278a565b602082019050919050565b6000611d51601d83612399565b9150611d5c826127b3565b602082019050919050565b6000611d74601d83612399565b9150611d7f826127dc565b602082019050919050565b6000611d97601f83612399565b9150611da282612805565b602082019050919050565b6000611dba601b83612399565b9150611dc58261282e565b602082019050919050565b6000611ddd602083612399565b9150611de882612857565b602082019050919050565b6000611e00601283612399565b9150611e0b82612880565b602082019050919050565b6000611e23601b83612399565b9150611e2e826128a9565b602082019050919050565b6000611e46601883612399565b9150611e51826128d2565b602082019050919050565b6000611e69601c83612399565b9150611e74826128fb565b602082019050919050565b6000611e8c601e83612399565b9150611e9782612924565b602082019050919050565b611eab81612487565b82525050565b611eba81612491565b82525050565b6000611ecc8284611b97565b915081905092915050565b6000611ee282611cb8565b9150611eee8285611b47565b602082019150611efe8284611b47565b6020820191508190509392505050565b6000602082019050611f236000830184611b1a565b92915050565b6000608082019050611f3e6000830187611b1a565b611f4b6020830186611ea2565b611f586040830185611b1a565b8181036060830152611f6a8184611b5e565b905095945050505050565b6000602082019050611f8a6000830184611b29565b92915050565b6000602082019050611fa56000830184611b38565b92915050565b600060c082019050611fc06000830189611b38565b611fcd6020830188611b1a565b611fda6040830187611b1a565b611fe76060830186611ea2565b611ff46080830185611ea2565b61200160a0830184611ea2565b979650505050505050565b600060a0820190506120216000830188611b38565b61202e6020830187611b38565b61203b6040830186611b38565b6120486060830185611ea2565b6120556080830184611b1a565b9695505050505050565b60006080820190506120746000830187611b38565b6120816020830186611eb1565b61208e6040830185611b38565b61209b6060830184611b38565b95945050505050565b600060208201905081810360008301526120be8184611c16565b905092915050565b600060208201905081810360008301526120df81611c4f565b9050919050565b600060208201905081810360008301526120ff81611c72565b9050919050565b6000602082019050818103600083015261211f81611c95565b9050919050565b6000602082019050818103600083015261213f81611cdb565b9050919050565b6000602082019050818103600083015261215f81611cfe565b9050919050565b6000602082019050818103600083015261217f81611d21565b9050919050565b6000602082019050818103600083015261219f81611d44565b9050919050565b600060208201905081810360008301526121bf81611d67565b9050919050565b600060208201905081810360008301526121df81611d8a565b9050919050565b600060208201905081810360008301526121ff81611dad565b9050919050565b6000602082019050818103600083015261221f81611dd0565b9050919050565b6000602082019050818103600083015261223f81611df3565b9050919050565b6000602082019050818103600083015261225f81611e16565b9050919050565b6000602082019050818103600083015261227f81611e39565b9050919050565b6000602082019050818103600083015261229f81611e5c565b9050919050565b600060208201905081810360008301526122bf81611e7f565b9050919050565b60006020820190506122db6000830184611ea2565b92915050565b60006020820190506122f66000830184611eb1565b92915050565b6000612306612317565b90506123128282612512565b919050565b6000604051905090565b600067ffffffffffffffff82111561233c5761233b6125f4565b5b61234582612637565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006123c082612487565b91506123cb83612487565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612400576123ff612596565b5b828201905092915050565b600061241682612487565b915061242183612487565b92508282101561243457612433612596565b5b828203905092915050565b600061244a82612467565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156124cb5780820151818401526020810190506124b0565b838111156124da576000848401525b50505050565b600060028204905060018216806124f857607f821691505b6020821081141561250c5761250b6125c5565b5b50919050565b61251b82612637565b810181811067ffffffffffffffff8211171561253a576125396125f4565b5b80604052505050565b600061254e82612487565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561258157612580612596565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f496e76616c6964207369676e6174757265202776272076616c75650000000000600082015250565b7f5472616e7366657220746f2074686520746f6b656e2061646472657373000000600082015250565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b7f4275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b7f4275726e20616d6f756e7420657863656564732062616c616e63650000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5065726d697373696f6e20657870697265640000000000000000000000000000600082015250565b7f496e76616c6964207369676e6174757265202773272076616c75650000000000600082015250565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6129568161243f565b811461296157600080fd5b50565b61296d8161245d565b811461297857600080fd5b50565b61298481612487565b811461298f57600080fd5b50565b61299b81612491565b81146129a657600080fd5b5056fea264697066735822122021a908b81de327bb92c8bb6ef7b2b9b0c6769fcad6347c9bed19317f88bc629b64736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000019636f764b45455020756e64657277726974657220746f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000007636f764b45455000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): covKEEP underwriter token
Arg [1] : _symbol (string): covKEEP
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [3] : 636f764b45455020756e64657277726974657220746f6b656e00000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [5] : 636f764b45455000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.