ERC-20
Overview
Max Total Supply
414,000,000 FOLO
Holders
1,173 (0.00%)
Market
Price
$0.00 @ 0.000002 ETH (-4.30%)
Onchain Market Cap
$1,645,898.40
Circulating Supply Market Cap
$1,150,388.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,999.99999999916 FOLOValue
$11.93 ( ~0.00483453238154133 Eth) [0.0007%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Follow
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-06 */ // File: @openzeppelin/[email protected]/utils/Context.sol 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) { return msg.data; } } // File: @openzeppelin/[email protected]/access/Ownable.sol pragma solidity ^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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/[email protected]/security/Pausable.sol pragma solidity ^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() { _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: @openzeppelin/[email protected]/token/ERC20/IERC20.sol 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); } // File: @openzeppelin/[email protected]/token/ERC20/extensions/IERC20Metadata.sol pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/[email protected]/token/ERC20/ERC20.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * 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 ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @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 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. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/[email protected]/token/ERC20/extensions/ERC20Burnable.sol pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } } // File: contract-10171b5e87.sol pragma solidity ^0.8.2; contract Follow is ERC20, ERC20Burnable, Pausable, Ownable { constructor() ERC20("Follow", "FOLO") { _mint(msg.sender, 424128123 * 10 ** decimals()); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override { super._beforeTokenTransfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","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":"account","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040805180820182526006815265466f6c6c6f7760d01b602080830191825283518085019094526004845263464f4c4f60e01b9084015281519192916200005c916003916200026f565b508051620000729060049060208401906200026f565b50506005805460ff19169055506200008a33620000b9565b620000b3336200009d6012600a62000379565b620000ad90631947ae7b62000447565b62000113565b620004bc565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200016f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200017d600083836200020a565b806002600082825462000191919062000315565b90915550506001600160a01b03821660009081526020819052604081208054839290620001c090849062000315565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60055460ff1615620002525760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640162000166565b6200026a8383836200026a60201b620006181760201c565b505050565b8280546200027d9062000469565b90600052602060002090601f016020900481019282620002a15760008555620002ec565b82601f10620002bc57805160ff1916838001178555620002ec565b82800160010185558215620002ec579182015b82811115620002ec578251825591602001919060010190620002cf565b50620002fa929150620002fe565b5090565b5b80821115620002fa5760008155600101620002ff565b600082198211156200032b576200032b620004a6565b500190565b600181815b8085111562000371578160001904821115620003555762000355620004a6565b808516156200036357918102915b93841c939080029062000335565b509250929050565b60006200038a60ff84168362000391565b9392505050565b600082620003a25750600162000441565b81620003b15750600062000441565b8160018114620003ca5760028114620003d557620003f5565b600191505062000441565b60ff841115620003e957620003e9620004a6565b50506001821b62000441565b5060208310610133831016604e8410600b84101617156200041a575081810a62000441565b62000426838362000330565b80600019048211156200043d576200043d620004a6565b0290505b92915050565b6000816000190483118215151615620004645762000464620004a6565b500290565b600181811c908216806200047e57607f821691505b60208210811415620004a057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61117680620004cc6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd57806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610296578063dd62ed3e146102a9578063f2fde38b146102e257600080fd5b806395d89b411461027b578063a457c2d71461028357600080fd5b806379cc6790116100b257806379cc6790146102375780638456cb591461024a5780638da5cb5b1461025257600080fd5b806370a0823114610206578063715018a61461022f57600080fd5b8063313ce567116101245780633f4ba83a116101095780633f4ba83a146101de57806342966c68146101e85780635c975abb146101fb57600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6102f5565b60405161016b919061101b565b60405180910390f35b610187610182366004610fd8565b610387565b604051901515815260200161016b565b6002545b60405190815260200161016b565b6101876101b7366004610f9c565b61039d565b6040516012815260200161016b565b6101876101d9366004610fd8565b610461565b6101e661049d565b005b6101e66101f6366004611002565b610507565b60055460ff16610187565b61019b610214366004610f47565b6001600160a01b031660009081526020819052604090205490565b6101e6610514565b6101e6610245366004610fd8565b61057e565b6101e661061d565b60055461010090046001600160a01b03166040516001600160a01b03909116815260200161016b565b61015e610685565b610187610291366004610fd8565b610694565b6101876102a4366004610fd8565b610745565b61019b6102b7366004610f69565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101e66102f0366004610f47565b610752565b606060038054610304906110bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610330906110bd565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b6000610394338484610837565b50600192915050565b60006103aa84848461098f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104495760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104568533858403610837565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161039491859061049890869061108e565b610837565b6005546001600160a01b036101009091041633146104fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b610505610bb2565b565b6105113382610c4e565b50565b6005546001600160a01b036101009091041633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b6105056000610ddf565b600061058a83336102b7565b9050818110156106015760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610440565b61060e8333848403610837565b6106188383610c4e565b505050565b6005546001600160a01b0361010090910416331461067d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b610505610e50565b606060048054610304906110bd565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561072e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610440565b61073b3385858403610837565b5060019392505050565b600061039433848461098f565b6005546001600160a01b036101009091041633146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b6001600160a01b03811661082e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610440565b61051181610ddf565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a0b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b038216610a875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610440565b610a92838383610ed8565b6001600160a01b03831660009081526020819052604090205481811015610b215760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610b5890849061108e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a350505050565b60055460ff16610c045760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610440565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610cca5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610440565b610cd682600083610ed8565b6001600160a01b03821660009081526020819052604090205481811015610d655760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610d949084906110a6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60055460ff1615610ea35760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610440565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c313390565b60055460ff16156106185760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610440565b80356001600160a01b0381168114610f4257600080fd5b919050565b600060208284031215610f5957600080fd5b610f6282610f2b565b9392505050565b60008060408385031215610f7c57600080fd5b610f8583610f2b565b9150610f9360208401610f2b565b90509250929050565b600080600060608486031215610fb157600080fd5b610fba84610f2b565b9250610fc860208501610f2b565b9150604084013590509250925092565b60008060408385031215610feb57600080fd5b610ff483610f2b565b946020939093013593505050565b60006020828403121561101457600080fd5b5035919050565b600060208083528351808285015260005b818110156110485785810183015185820160400152820161102c565b8181111561105a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156110a1576110a1611111565b500190565b6000828210156110b8576110b8611111565b500390565b600181811c908216806110d157607f821691505b6020821081141561110b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122076c6b932e9838777aa1e32b4bdacd7950794361b1bf85075f2542c07cc38304e64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd57806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610296578063dd62ed3e146102a9578063f2fde38b146102e257600080fd5b806395d89b411461027b578063a457c2d71461028357600080fd5b806379cc6790116100b257806379cc6790146102375780638456cb591461024a5780638da5cb5b1461025257600080fd5b806370a0823114610206578063715018a61461022f57600080fd5b8063313ce567116101245780633f4ba83a116101095780633f4ba83a146101de57806342966c68146101e85780635c975abb146101fb57600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6102f5565b60405161016b919061101b565b60405180910390f35b610187610182366004610fd8565b610387565b604051901515815260200161016b565b6002545b60405190815260200161016b565b6101876101b7366004610f9c565b61039d565b6040516012815260200161016b565b6101876101d9366004610fd8565b610461565b6101e661049d565b005b6101e66101f6366004611002565b610507565b60055460ff16610187565b61019b610214366004610f47565b6001600160a01b031660009081526020819052604090205490565b6101e6610514565b6101e6610245366004610fd8565b61057e565b6101e661061d565b60055461010090046001600160a01b03166040516001600160a01b03909116815260200161016b565b61015e610685565b610187610291366004610fd8565b610694565b6101876102a4366004610fd8565b610745565b61019b6102b7366004610f69565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101e66102f0366004610f47565b610752565b606060038054610304906110bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610330906110bd565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b6000610394338484610837565b50600192915050565b60006103aa84848461098f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104495760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104568533858403610837565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161039491859061049890869061108e565b610837565b6005546001600160a01b036101009091041633146104fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b610505610bb2565b565b6105113382610c4e565b50565b6005546001600160a01b036101009091041633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b6105056000610ddf565b600061058a83336102b7565b9050818110156106015760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610440565b61060e8333848403610837565b6106188383610c4e565b505050565b6005546001600160a01b0361010090910416331461067d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b610505610e50565b606060048054610304906110bd565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561072e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610440565b61073b3385858403610837565b5060019392505050565b600061039433848461098f565b6005546001600160a01b036101009091041633146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610440565b6001600160a01b03811661082e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610440565b61051181610ddf565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a0b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b038216610a875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610440565b610a92838383610ed8565b6001600160a01b03831660009081526020819052604090205481811015610b215760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610b5890849061108e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a350505050565b60055460ff16610c045760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610440565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610cca5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610440565b610cd682600083610ed8565b6001600160a01b03821660009081526020819052604090205481811015610d655760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610440565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610d949084906110a6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60055460ff1615610ea35760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610440565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c313390565b60055460ff16156106185760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610440565b80356001600160a01b0381168114610f4257600080fd5b919050565b600060208284031215610f5957600080fd5b610f6282610f2b565b9392505050565b60008060408385031215610f7c57600080fd5b610f8583610f2b565b9150610f9360208401610f2b565b90509250929050565b600080600060608486031215610fb157600080fd5b610fba84610f2b565b9250610fc860208501610f2b565b9150604084013590509250925092565b60008060408385031215610feb57600080fd5b610ff483610f2b565b946020939093013593505050565b60006020828403121561101457600080fd5b5035919050565b600060208083528351808285015260005b818110156110485785810183015185820160400152820161102c565b8181111561105a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082198211156110a1576110a1611111565b500190565b6000828210156110b8576110b8611111565b500390565b600181811c908216806110d157607f821691505b6020821081141561110b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122076c6b932e9838777aa1e32b4bdacd7950794361b1bf85075f2542c07cc38304e64736f6c63430008070033
Deployed Bytecode Sourcemap
22296:522:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10980:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:169;;;;;;:::i;:::-;;:::i;:::-;;;1844:14:1;;1837:22;1819:41;;1807:2;1792:18;13147:169:0;1679:187:1;12100:108:0;12188:12;;12100:108;;;8190:25:1;;;8178:2;8163:18;12100:108:0;8044:177:1;13798:492:0;;;;;;:::i;:::-;;:::i;11942:93::-;;;12025:2;8368:36:1;;8356:2;8341:18;11942:93:0;8226:184:1;14699:215:0;;;;;;:::i;:::-;;:::i;22543:65::-;;;:::i;:::-;;21438:91;;;;;;:::i;:::-;;:::i;4209:86::-;4280:7;;;;4209:86;;12271:127;;;;;;:::i;:::-;-1:-1:-1;;;;;12372:18:0;12345:7;12372:18;;;;;;;;;;;;12271:127;2500:94;;;:::i;21848:368::-;;;;;;:::i;:::-;;:::i;22474:61::-;;;:::i;1849:87::-;1922:6;;;;;-1:-1:-1;;;;;1922:6:0;1849:87;;-1:-1:-1;;;;;1612:55:1;;;1594:74;;1582:2;1567:18;1849:87:0;1448:226:1;11199:104:0;;;:::i;15417:413::-;;;;;;:::i;:::-;;:::i;12611:175::-;;;;;;:::i;:::-;;:::i;12849:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;12965:18:0;;;12938:7;12965:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12849:151;2749:192;;;;;;:::i;:::-;;:::i;10980:100::-;11034:13;11067:5;11060:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10980:100;:::o;13147:169::-;13230:4;13247:39;711:10;13270:7;13279:6;13247:8;:39::i;:::-;-1:-1:-1;13304:4:0;13147:169;;;;:::o;13798:492::-;13938:4;13955:36;13965:6;13973:9;13984:6;13955:9;:36::i;:::-;-1:-1:-1;;;;;14031:19:0;;14004:24;14031:19;;;:11;:19;;;;;;;;711:10;14031:33;;;;;;;;14083:26;;;;14075:79;;;;-1:-1:-1;;;14075:79:0;;5452:2:1;14075:79:0;;;5434:21:1;5491:2;5471:18;;;5464:30;5530:34;5510:18;;;5503:62;5601:10;5581:18;;;5574:38;5629:19;;14075:79:0;;;;;;;;;14190:57;14199:6;711:10;14240:6;14221:16;:25;14190:8;:57::i;:::-;-1:-1:-1;14278:4:0;;13798:492;-1:-1:-1;;;;13798:492:0:o;14699:215::-;711:10;14787:4;14836:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14836:34:0;;;;;;;;;;14787:4;;14804:80;;14827:7;;14836:47;;14873:10;;14836:47;:::i;:::-;14804:8;:80::i;22543:65::-;1922:6;;-1:-1:-1;;;;;1922:6:0;;;;;711:10;2069:23;2061:68;;;;-1:-1:-1;;;2061:68:0;;5861:2:1;2061:68:0;;;5843:21:1;;;5880:18;;;5873:30;5939:34;5919:18;;;5912:62;5991:18;;2061:68:0;5659:356:1;2061:68:0;22590:10:::1;:8;:10::i;:::-;22543:65::o:0;21438:91::-;21494:27;711:10;21514:6;21494:5;:27::i;:::-;21438:91;:::o;2500:94::-;1922:6;;-1:-1:-1;;;;;1922:6:0;;;;;711:10;2069:23;2061:68;;;;-1:-1:-1;;;2061:68:0;;5861:2:1;2061:68:0;;;5843:21:1;;;5880:18;;;5873:30;5939:34;5919:18;;;5912:62;5991:18;;2061:68:0;5659:356:1;2061:68:0;2565:21:::1;2583:1;2565:9;:21::i;21848:368::-:0;21925:24;21952:32;21962:7;711:10;12849:151;:::i;21952:32::-;21925:59;;22023:6;22003:16;:26;;21995:75;;;;-1:-1:-1;;;21995:75:0;;6222:2:1;21995:75:0;;;6204:21:1;6261:2;6241:18;;;6234:30;6300:34;6280:18;;;6273:62;6371:6;6351:18;;;6344:34;6395:19;;21995:75:0;6020:400:1;21995:75:0;22106:58;22115:7;711:10;22157:6;22138:16;:25;22106:8;:58::i;:::-;22186:22;22192:7;22201:6;22186:5;:22::i;:::-;21914:302;21848:368;;:::o;22474:61::-;1922:6;;-1:-1:-1;;;;;1922:6:0;;;;;711:10;2069:23;2061:68;;;;-1:-1:-1;;;2061:68:0;;5861:2:1;2061:68:0;;;5843:21:1;;;5880:18;;;5873:30;5939:34;5919:18;;;5912:62;5991:18;;2061:68:0;5659:356:1;2061:68:0;22519:8:::1;:6;:8::i;11199:104::-:0;11255:13;11288:7;11281:14;;;;;:::i;15417:413::-;711:10;15510:4;15554:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15554:34:0;;;;;;;;;;15607:35;;;;15599:85;;;;-1:-1:-1;;;15599:85:0;;7840:2:1;15599:85:0;;;7822:21:1;7879:2;7859:18;;;7852:30;7918:34;7898:18;;;7891:62;7989:7;7969:18;;;7962:35;8014:19;;15599:85:0;7638:401:1;15599:85:0;15720:67;711:10;15743:7;15771:15;15752:16;:34;15720:8;:67::i;:::-;-1:-1:-1;15818:4:0;;15417:413;-1:-1:-1;;;15417:413:0:o;12611:175::-;12697:4;12714:42;711:10;12738:9;12749:6;12714:9;:42::i;2749:192::-;1922:6;;-1:-1:-1;;;;;1922:6:0;;;;;711:10;2069:23;2061:68;;;;-1:-1:-1;;;2061:68:0;;5861:2:1;2061:68:0;;;5843:21:1;;;5880:18;;;5873:30;5939:34;5919:18;;;5912:62;5991:18;;2061:68:0;5659:356:1;2061:68:0;-1:-1:-1;;;;;2838:22:0;::::1;2830:73;;;::::0;-1:-1:-1;;;2830:73:0;;3890:2:1;2830:73:0::1;::::0;::::1;3872:21:1::0;3929:2;3909:18;;;3902:30;3968:34;3948:18;;;3941:62;4039:8;4019:18;;;4012:36;4065:19;;2830:73:0::1;3688:402:1::0;2830:73:0::1;2914:19;2924:8;2914:9;:19::i;19101:380::-:0;-1:-1:-1;;;;;19237:19:0;;19229:68;;;;-1:-1:-1;;;19229:68:0;;7435:2:1;19229:68:0;;;7417:21:1;7474:2;7454:18;;;7447:30;7513:34;7493:18;;;7486:62;7584:6;7564:18;;;7557:34;7608:19;;19229:68:0;7233:400:1;19229:68:0;-1:-1:-1;;;;;19316:21:0;;19308:68;;;;-1:-1:-1;;;19308:68:0;;4297:2:1;19308:68:0;;;4279:21:1;4336:2;4316:18;;;4309:30;4375:34;4355:18;;;4348:62;4446:4;4426:18;;;4419:32;4468:19;;19308:68:0;4095:398:1;19308:68:0;-1:-1:-1;;;;;19389:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19441:32;;8190:25:1;;;19441:32:0;;8163:18:1;19441:32:0;;;;;;;19101:380;;;:::o;16320:733::-;-1:-1:-1;;;;;16460:20:0;;16452:70;;;;-1:-1:-1;;;16452:70:0;;7029:2:1;16452:70:0;;;7011:21:1;7068:2;7048:18;;;7041:30;7107:34;7087:18;;;7080:62;7178:7;7158:18;;;7151:35;7203:19;;16452:70:0;6827:401:1;16452:70:0;-1:-1:-1;;;;;16541:23:0;;16533:71;;;;-1:-1:-1;;;16533:71:0;;2734:2:1;16533:71:0;;;2716:21:1;2773:2;2753:18;;;2746:30;2812:34;2792:18;;;2785:62;2883:5;2863:18;;;2856:33;2906:19;;16533:71:0;2532:399:1;16533:71:0;16617:47;16638:6;16646:9;16657:6;16617:20;:47::i;:::-;-1:-1:-1;;;;;16701:17:0;;16677:21;16701:17;;;;;;;;;;;16737:23;;;;16729:74;;;;-1:-1:-1;;;16729:74:0;;4700:2:1;16729:74:0;;;4682:21:1;4739:2;4719:18;;;4712:30;4778:34;4758:18;;;4751:62;4849:8;4829:18;;;4822:36;4875:19;;16729:74:0;4498:402:1;16729:74:0;-1:-1:-1;;;;;16839:17:0;;;:9;:17;;;;;;;;;;;16859:22;;;16839:42;;16903:20;;;;;;;;:30;;16875:6;;16839:9;16903:30;;16875:6;;16903:30;:::i;:::-;;;;;;;;16968:9;-1:-1:-1;;;;;16951:35:0;16960:6;-1:-1:-1;;;;;16951:35:0;;16979:6;16951:35;;;;8190:25:1;;8178:2;8163:18;;8044:177;16951:35:0;;;;;;;;16441:612;16320:733;;;:::o;5268:120::-;4280:7;;;;4804:41;;;;-1:-1:-1;;;4804:41:0;;3138:2:1;4804:41:0;;;3120:21:1;3177:2;3157:18;;;3150:30;3216:22;3196:18;;;3189:50;3256:18;;4804:41:0;2936:344:1;4804:41:0;5327:7:::1;:15:::0;;-1:-1:-1;;5327:15:0::1;::::0;;5358:22:::1;711:10:::0;5367:12:::1;5358:22;::::0;-1:-1:-1;;;;;1612:55:1;;;1594:74;;1582:2;1567:18;5358:22:0::1;;;;;;;5268:120::o:0;18072:591::-;-1:-1:-1;;;;;18156:21:0;;18148:67;;;;-1:-1:-1;;;18148:67:0;;6627:2:1;18148:67:0;;;6609:21:1;6666:2;6646:18;;;6639:30;6705:34;6685:18;;;6678:62;6776:3;6756:18;;;6749:31;6797:19;;18148:67:0;6425:397:1;18148:67:0;18228:49;18249:7;18266:1;18270:6;18228:20;:49::i;:::-;-1:-1:-1;;;;;18315:18:0;;18290:22;18315:18;;;;;;;;;;;18352:24;;;;18344:71;;;;-1:-1:-1;;;18344:71:0;;3487:2:1;18344:71:0;;;3469:21:1;3526:2;3506:18;;;3499:30;3565:34;3545:18;;;3538:62;3636:4;3616:18;;;3609:32;3658:19;;18344:71:0;3285:398:1;18344:71:0;-1:-1:-1;;;;;18451:18:0;;:9;:18;;;;;;;;;;18472:23;;;18451:44;;18517:12;:22;;18489:6;;18451:9;18517:22;;18489:6;;18517:22;:::i;:::-;;;;-1:-1:-1;;18557:37:0;;8190:25:1;;;18583:1:0;;-1:-1:-1;;;;;18557:37:0;;;;;8178:2:1;8163:18;18557:37:0;;;;;;;21914:302;21848:368;;:::o;2949:173::-;3024:6;;;-1:-1:-1;;;;;3041:17:0;;;3024:6;3041:17;;;;;;;;;;3074:40;;3024:6;;;;;;;;3074:40;;3005:16;;3074:40;2994:128;2949:173;:::o;5009:118::-;4280:7;;;;4534:9;4526:38;;;;-1:-1:-1;;;4526:38:0;;5107:2:1;4526:38:0;;;5089:21:1;5146:2;5126:18;;;5119:30;5185:18;5165;;;5158:46;5221:18;;4526:38:0;4905:340:1;4526:38:0;5069:7:::1;:14:::0;;-1:-1:-1;;5069:14:0::1;5079:4;5069:14;::::0;;5099:20:::1;5106:12;711:10:::0;;631:98;22616:199;4280:7;;;;4534:9;4526:38;;;;-1:-1:-1;;;4526:38:0;;5107:2:1;4526:38:0;;;5089:21:1;5146:2;5126:18;;;5119:30;5185:18;5165;;;5158:46;5221:18;;4526:38:0;4905:340:1;14:196;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:1:o;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:1:o;1263:180::-;1322:6;1375:2;1363:9;1354:7;1350:23;1346:32;1343:52;;;1391:1;1388;1381:12;1343:52;-1:-1:-1;1414:23:1;;1263:180;-1:-1:-1;1263:180:1:o;1871:656::-;1983:4;2012:2;2041;2030:9;2023:21;2073:6;2067:13;2116:6;2111:2;2100:9;2096:18;2089:34;2141:1;2151:140;2165:6;2162:1;2159:13;2151:140;;;2260:14;;;2256:23;;2250:30;2226:17;;;2245:2;2222:26;2215:66;2180:10;;2151:140;;;2309:6;2306:1;2303:13;2300:91;;;2379:1;2374:2;2365:6;2354:9;2350:22;2346:31;2339:42;2300:91;-1:-1:-1;2443:2:1;2431:15;2448:66;2427:88;2412:104;;;;2518:2;2408:113;;1871:656;-1:-1:-1;;;1871:656:1:o;8415:128::-;8455:3;8486:1;8482:6;8479:1;8476:13;8473:39;;;8492:18;;:::i;:::-;-1:-1:-1;8528:9:1;;8415:128::o;8548:125::-;8588:4;8616:1;8613;8610:8;8607:34;;;8621:18;;:::i;:::-;-1:-1:-1;8658:9:1;;8548:125::o;8678:437::-;8757:1;8753:12;;;;8800;;;8821:61;;8875:4;8867:6;8863:17;8853:27;;8821:61;8928:2;8920:6;8917:14;8897:18;8894:38;8891:218;;;8965:77;8962:1;8955:88;9066:4;9063:1;9056:15;9094:4;9091:1;9084:15;8891:218;;8678:437;;;:::o;9120:184::-;9172:77;9169:1;9162:88;9269:4;9266:1;9259:15;9293:4;9290:1;9283:15
Swarm Source
ipfs://76c6b932e9838777aa1e32b4bdacd7950794361b1bf85075f2542c07cc38304e
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.