ERC-20
Overview
Max Total Supply
33,080,000 FGLD
Holders
816
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
10,000 FGLDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FirstGold
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-06 */ // SPDX-License-Identifier: UNLICENSED 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; } } /** * @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 ); } /** * @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); } /** * @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 {} } pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } contract FirstGold is Context, ERC20 { address public firstContractAddress = 0xc9Cb0FEe73f060Db66D2693D92d75c825B1afdbF; IERC721Enumerable public firstContract; uint256 public firstGoldPerTokenId = 10000 * (10**decimals()); mapping(uint256 => bool) public hasClaimed; constructor() ERC20("First Gold", "FGLD") { firstContract = IERC721Enumerable(firstContractAddress); } function claimById(uint256 tokenId) external { require( _msgSender() == firstContract.ownerOf(tokenId), "MUST_OWN_TOKEN_ID" ); _claim(tokenId, _msgSender()); } function claimAllForOwner() external { uint256 tokenBalanceOwner = firstContract.balanceOf(_msgSender()); require(tokenBalanceOwner > 0, "NO_TOKENS_OWNED"); for (uint256 i = 0; i < tokenBalanceOwner; i++) { _claim( firstContract.tokenOfOwnerByIndex(_msgSender(), i), _msgSender() ); } } function claimRangeForOwner(uint256 ownerIndexStart, uint256 ownerIndexEnd) external { uint256 tokenBalanceOwner = firstContract.balanceOf(_msgSender()); require(tokenBalanceOwner > 0, "NO_TOKENS_OWNED"); require( ownerIndexStart >= 0 && ownerIndexEnd < tokenBalanceOwner, "INDEX_OUT_OF_RANGE" ); for (uint256 i = ownerIndexStart; i <= ownerIndexEnd; i++) { _claim( firstContract.tokenOfOwnerByIndex(_msgSender(), i), _msgSender() ); } } function _claim(uint256 tokenId,address tokenOwner) internal { require( !hasClaimed[tokenId], "GOLD_CLAIMED_FOR_TOKEN_ID" ); hasClaimed[tokenId] = true; _mint(tokenOwner, firstGoldPerTokenId); } }
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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","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":[],"name":"claimAllForOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claimById","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ownerIndexStart","type":"uint256"},{"internalType":"uint256","name":"ownerIndexEnd","type":"uint256"}],"name":"claimRangeForOwner","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":[],"name":"firstContract","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstGoldPerTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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"}]
Contract Creation Code
608060405273c9cb0fee73f060db66d2693d92d75c825b1afdbf600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000069620001a060201b60201c565b600a620000779190620002b4565b612710620000869190620003f1565b6007553480156200009657600080fd5b506040518060400160405280600a81526020017f466972737420476f6c64000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f46474c440000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011b929190620001a9565b50806004908051906020019062000134929190620001a9565b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050a565b60006012905090565b828054620001b79062000469565b90600052602060002090601f016020900481019282620001db576000855562000227565b82601f10620001f657805160ff191683800117855562000227565b8280016001018555821562000227579182015b828111156200022657825182559160200191906001019062000209565b5b5090506200023691906200023a565b5090565b5b80821115620002555760008160009055506001016200023b565b5090565b6000808291508390505b6001851115620002ab578086048111156200028357620002826200049f565b5b6001851615620002935780820291505b8081029050620002a385620004fd565b945062000263565b94509492505050565b6000620002c18262000452565b9150620002ce836200045c565b9250620002fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000305565b905092915050565b600082620003175760019050620003ea565b81620003275760009050620003ea565b81600181146200034057600281146200034b5762000381565b6001915050620003ea565b60ff84111562000360576200035f6200049f565b5b8360020a9150848211156200037a57620003796200049f565b5b50620003ea565b5060208310610133831016604e8410600b8410161715620003bb5782820a905083811115620003b557620003b46200049f565b5b620003ea565b620003ca848484600162000259565b92509050818404811115620003e457620003e36200049f565b5b81810290505b9392505050565b6000620003fe8262000452565b91506200040b8362000452565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200044757620004466200049f565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200048257607f821691505b60208210811415620004995762000498620004ce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b61209f806200051a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806395d89b41116100a2578063cbf0b27611610071578063cbf0b27614610309578063ce51650714610313578063dc5178e714610343578063dd62ed3e14610361578063fb98d0af1461039157610116565b806395d89b411461026f578063a457c2d71461028d578063a9059cbb146102bd578063becf7741146102ed57610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806370a082311461020557806378afda0714610235578063878e7ea51461025357610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103af565b604051610130919061194e565b60405180910390f35b610153600480360381019061014e91906115d2565b610441565b6040516101609190611918565b60405180910390f35b61017161045f565b60405161017e9190611af0565b60405180910390f35b6101a1600480360381019061019c919061157f565b610469565b6040516101ae9190611918565b60405180910390f35b6101bf610561565b6040516101cc9190611b0b565b60405180910390f35b6101ef60048036038101906101ea91906115d2565b61056a565b6040516101fc9190611918565b60405180910390f35b61021f600480360381019061021a91906114e5565b610616565b60405161022c9190611af0565b60405180910390f35b61023d61065e565b60405161024a91906118d4565b60405180910390f35b61026d6004803603810190610268919061166c565b610684565b005b6102776108b6565b604051610284919061194e565b60405180910390f35b6102a760048036038101906102a291906115d2565b610948565b6040516102b49190611918565b60405180910390f35b6102d760048036038101906102d291906115d2565b610a33565b6040516102e49190611918565b60405180910390f35b61030760048036038101906103029190611612565b610a51565b005b610311610b84565b005b61032d60048036038101906103289190611612565b610d63565b60405161033a9190611918565b60405180910390f35b61034b610d83565b6040516103589190611933565b60405180910390f35b61037b6004803603810190610376919061153f565b610da9565b6040516103889190611af0565b60405180910390f35b610399610e30565b6040516103a69190611af0565b60405180910390f35b6060600380546103be90611c56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ea90611c56565b80156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b600061045561044e610e36565b8484610e3e565b6001905092915050565b6000600254905090565b6000610476848484611009565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104c1610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611a10565b60405180910390fd5b6105558561054d610e36565b858403610e3e565b60019150509392505050565b60006012905090565b600061060c610577610e36565b848460016000610585610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106079190611b42565b610e3e565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316106cc610e36565b6040518263ffffffff1660e01b81526004016106e891906118d4565b60206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061163f565b90506000811161077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490611a90565b60405180910390fd5b6000831015801561078d57508082105b6107cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c390611990565b60405180910390fd5b60008390505b8281116108b05761089d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c59610822610e36565b846040518363ffffffff1660e01b81526004016108409291906118ef565b60206040518083038186803b15801561085857600080fd5b505afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610890919061163f565b610898610e36565b61128a565b80806108a890611c88565b9150506107d2565b50505050565b6060600480546108c590611c56565b80601f01602080910402602001604051908101604052809291908181526020018280546108f190611c56565b801561093e5780601f106109135761010080835404028352916020019161093e565b820191906000526020600020905b81548152906001019060200180831161092157829003601f168201915b5050505050905090565b60008060016000610957610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90611ab0565b60405180910390fd5b610a28610a1f610e36565b85858403610e3e565b600191505092915050565b6000610a47610a40610e36565b8484611009565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b8152600401610aac9190611af0565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc9190611512565b73ffffffffffffffffffffffffffffffffffffffff16610b1a610e36565b73ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b67906119f0565b60405180910390fd5b610b8181610b7c610e36565b61128a565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231610bcc610e36565b6040518263ffffffff1660e01b8152600401610be891906118d4565b60206040518083038186803b158015610c0057600080fd5b505afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c38919061163f565b905060008111610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490611a90565b60405180910390fd5b60005b81811015610d5f57610d4c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c59610cd1610e36565b846040518363ffffffff1660e01b8152600401610cef9291906118ef565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061163f565b610d47610e36565b61128a565b8080610d5790611c88565b915050610c80565b5050565b60086020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590611a70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906119b0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ffc9190611af0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090611a30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090611970565b60405180910390fd5b6110f4838383611327565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611171906119d0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461120d9190611b42565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112719190611af0565b60405180910390a361128484848461132c565b50505050565b6008600083815260200190815260200160002060009054906101000a900460ff16156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290611a50565b60405180910390fd5b60016008600084815260200190815260200160002060006101000a81548160ff02191690831515021790555061132381600754611331565b5050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890611ad0565b60405180910390fd5b6113ad60008383611327565b80600260008282546113bf9190611b42565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114149190611b42565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114799190611af0565b60405180910390a361148d6000838361132c565b5050565b6000813590506114a08161203b565b92915050565b6000815190506114b58161203b565b92915050565b6000813590506114ca81612052565b92915050565b6000815190506114df81612052565b92915050565b6000602082840312156114fb576114fa611d2f565b5b600061150984828501611491565b91505092915050565b60006020828403121561152857611527611d2f565b5b6000611536848285016114a6565b91505092915050565b6000806040838503121561155657611555611d2f565b5b600061156485828601611491565b925050602061157585828601611491565b9150509250929050565b60008060006060848603121561159857611597611d2f565b5b60006115a686828701611491565b93505060206115b786828701611491565b92505060406115c8868287016114bb565b9150509250925092565b600080604083850312156115e9576115e8611d2f565b5b60006115f785828601611491565b9250506020611608858286016114bb565b9150509250929050565b60006020828403121561162857611627611d2f565b5b6000611636848285016114bb565b91505092915050565b60006020828403121561165557611654611d2f565b5b6000611663848285016114d0565b91505092915050565b6000806040838503121561168357611682611d2f565b5b6000611691858286016114bb565b92505060206116a2858286016114bb565b9150509250929050565b6116b581611b98565b82525050565b6116c481611baa565b82525050565b6116d381611bed565b82525050565b60006116e482611b26565b6116ee8185611b31565b93506116fe818560208601611c23565b61170781611d34565b840191505092915050565b600061171f602383611b31565b915061172a82611d45565b604082019050919050565b6000611742601283611b31565b915061174d82611d94565b602082019050919050565b6000611765602283611b31565b915061177082611dbd565b604082019050919050565b6000611788602683611b31565b915061179382611e0c565b604082019050919050565b60006117ab601183611b31565b91506117b682611e5b565b602082019050919050565b60006117ce602883611b31565b91506117d982611e84565b604082019050919050565b60006117f1602583611b31565b91506117fc82611ed3565b604082019050919050565b6000611814601983611b31565b915061181f82611f22565b602082019050919050565b6000611837602483611b31565b915061184282611f4b565b604082019050919050565b600061185a600f83611b31565b915061186582611f9a565b602082019050919050565b600061187d602583611b31565b915061188882611fc3565b604082019050919050565b60006118a0601f83611b31565b91506118ab82612012565b602082019050919050565b6118bf81611bd6565b82525050565b6118ce81611be0565b82525050565b60006020820190506118e960008301846116ac565b92915050565b600060408201905061190460008301856116ac565b61191160208301846118b6565b9392505050565b600060208201905061192d60008301846116bb565b92915050565b600060208201905061194860008301846116ca565b92915050565b6000602082019050818103600083015261196881846116d9565b905092915050565b6000602082019050818103600083015261198981611712565b9050919050565b600060208201905081810360008301526119a981611735565b9050919050565b600060208201905081810360008301526119c981611758565b9050919050565b600060208201905081810360008301526119e98161177b565b9050919050565b60006020820190508181036000830152611a098161179e565b9050919050565b60006020820190508181036000830152611a29816117c1565b9050919050565b60006020820190508181036000830152611a49816117e4565b9050919050565b60006020820190508181036000830152611a6981611807565b9050919050565b60006020820190508181036000830152611a898161182a565b9050919050565b60006020820190508181036000830152611aa98161184d565b9050919050565b60006020820190508181036000830152611ac981611870565b9050919050565b60006020820190508181036000830152611ae981611893565b9050919050565b6000602082019050611b0560008301846118b6565b92915050565b6000602082019050611b2060008301846118c5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b4d82611bd6565b9150611b5883611bd6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b8d57611b8c611cd1565b5b828201905092915050565b6000611ba382611bb6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611bf882611bff565b9050919050565b6000611c0a82611c11565b9050919050565b6000611c1c82611bb6565b9050919050565b60005b83811015611c41578082015181840152602081019050611c26565b83811115611c50576000848401525b50505050565b60006002820490506001821680611c6e57607f821691505b60208210811415611c8257611c81611d00565b5b50919050565b6000611c9382611bd6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cc657611cc5611cd1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f494e4445585f4f55545f4f465f52414e47450000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4d5553545f4f574e5f544f4b454e5f4944000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f474f4c445f434c41494d45445f464f525f544f4b454e5f494400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f5f544f4b454e535f4f574e45440000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61204481611b98565b811461204f57600080fd5b50565b61205b81611bd6565b811461206657600080fd5b5056fea264697066735822122029dca7ab20bd0331bd071cacf24e609466f1a7880c40603c291c25a11758a23364736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c806395d89b41116100a2578063cbf0b27611610071578063cbf0b27614610309578063ce51650714610313578063dc5178e714610343578063dd62ed3e14610361578063fb98d0af1461039157610116565b806395d89b411461026f578063a457c2d71461028d578063a9059cbb146102bd578063becf7741146102ed57610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806370a082311461020557806378afda0714610235578063878e7ea51461025357610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103af565b604051610130919061194e565b60405180910390f35b610153600480360381019061014e91906115d2565b610441565b6040516101609190611918565b60405180910390f35b61017161045f565b60405161017e9190611af0565b60405180910390f35b6101a1600480360381019061019c919061157f565b610469565b6040516101ae9190611918565b60405180910390f35b6101bf610561565b6040516101cc9190611b0b565b60405180910390f35b6101ef60048036038101906101ea91906115d2565b61056a565b6040516101fc9190611918565b60405180910390f35b61021f600480360381019061021a91906114e5565b610616565b60405161022c9190611af0565b60405180910390f35b61023d61065e565b60405161024a91906118d4565b60405180910390f35b61026d6004803603810190610268919061166c565b610684565b005b6102776108b6565b604051610284919061194e565b60405180910390f35b6102a760048036038101906102a291906115d2565b610948565b6040516102b49190611918565b60405180910390f35b6102d760048036038101906102d291906115d2565b610a33565b6040516102e49190611918565b60405180910390f35b61030760048036038101906103029190611612565b610a51565b005b610311610b84565b005b61032d60048036038101906103289190611612565b610d63565b60405161033a9190611918565b60405180910390f35b61034b610d83565b6040516103589190611933565b60405180910390f35b61037b6004803603810190610376919061153f565b610da9565b6040516103889190611af0565b60405180910390f35b610399610e30565b6040516103a69190611af0565b60405180910390f35b6060600380546103be90611c56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ea90611c56565b80156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b600061045561044e610e36565b8484610e3e565b6001905092915050565b6000600254905090565b6000610476848484611009565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104c1610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611a10565b60405180910390fd5b6105558561054d610e36565b858403610e3e565b60019150509392505050565b60006012905090565b600061060c610577610e36565b848460016000610585610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106079190611b42565b610e3e565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316106cc610e36565b6040518263ffffffff1660e01b81526004016106e891906118d4565b60206040518083038186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610738919061163f565b90506000811161077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490611a90565b60405180910390fd5b6000831015801561078d57508082105b6107cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c390611990565b60405180910390fd5b60008390505b8281116108b05761089d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c59610822610e36565b846040518363ffffffff1660e01b81526004016108409291906118ef565b60206040518083038186803b15801561085857600080fd5b505afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610890919061163f565b610898610e36565b61128a565b80806108a890611c88565b9150506107d2565b50505050565b6060600480546108c590611c56565b80601f01602080910402602001604051908101604052809291908181526020018280546108f190611c56565b801561093e5780601f106109135761010080835404028352916020019161093e565b820191906000526020600020905b81548152906001019060200180831161092157829003601f168201915b5050505050905090565b60008060016000610957610e36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90611ab0565b60405180910390fd5b610a28610a1f610e36565b85858403610e3e565b600191505092915050565b6000610a47610a40610e36565b8484611009565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b8152600401610aac9190611af0565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc9190611512565b73ffffffffffffffffffffffffffffffffffffffff16610b1a610e36565b73ffffffffffffffffffffffffffffffffffffffff1614610b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b67906119f0565b60405180910390fd5b610b8181610b7c610e36565b61128a565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231610bcc610e36565b6040518263ffffffff1660e01b8152600401610be891906118d4565b60206040518083038186803b158015610c0057600080fd5b505afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c38919061163f565b905060008111610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490611a90565b60405180910390fd5b60005b81811015610d5f57610d4c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c59610cd1610e36565b846040518363ffffffff1660e01b8152600401610cef9291906118ef565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061163f565b610d47610e36565b61128a565b8080610d5790611c88565b915050610c80565b5050565b60086020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590611a70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906119b0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ffc9190611af0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090611a30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090611970565b60405180910390fd5b6110f4838383611327565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611171906119d0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461120d9190611b42565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112719190611af0565b60405180910390a361128484848461132c565b50505050565b6008600083815260200190815260200160002060009054906101000a900460ff16156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290611a50565b60405180910390fd5b60016008600084815260200190815260200160002060006101000a81548160ff02191690831515021790555061132381600754611331565b5050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890611ad0565b60405180910390fd5b6113ad60008383611327565b80600260008282546113bf9190611b42565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114149190611b42565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114799190611af0565b60405180910390a361148d6000838361132c565b5050565b6000813590506114a08161203b565b92915050565b6000815190506114b58161203b565b92915050565b6000813590506114ca81612052565b92915050565b6000815190506114df81612052565b92915050565b6000602082840312156114fb576114fa611d2f565b5b600061150984828501611491565b91505092915050565b60006020828403121561152857611527611d2f565b5b6000611536848285016114a6565b91505092915050565b6000806040838503121561155657611555611d2f565b5b600061156485828601611491565b925050602061157585828601611491565b9150509250929050565b60008060006060848603121561159857611597611d2f565b5b60006115a686828701611491565b93505060206115b786828701611491565b92505060406115c8868287016114bb565b9150509250925092565b600080604083850312156115e9576115e8611d2f565b5b60006115f785828601611491565b9250506020611608858286016114bb565b9150509250929050565b60006020828403121561162857611627611d2f565b5b6000611636848285016114bb565b91505092915050565b60006020828403121561165557611654611d2f565b5b6000611663848285016114d0565b91505092915050565b6000806040838503121561168357611682611d2f565b5b6000611691858286016114bb565b92505060206116a2858286016114bb565b9150509250929050565b6116b581611b98565b82525050565b6116c481611baa565b82525050565b6116d381611bed565b82525050565b60006116e482611b26565b6116ee8185611b31565b93506116fe818560208601611c23565b61170781611d34565b840191505092915050565b600061171f602383611b31565b915061172a82611d45565b604082019050919050565b6000611742601283611b31565b915061174d82611d94565b602082019050919050565b6000611765602283611b31565b915061177082611dbd565b604082019050919050565b6000611788602683611b31565b915061179382611e0c565b604082019050919050565b60006117ab601183611b31565b91506117b682611e5b565b602082019050919050565b60006117ce602883611b31565b91506117d982611e84565b604082019050919050565b60006117f1602583611b31565b91506117fc82611ed3565b604082019050919050565b6000611814601983611b31565b915061181f82611f22565b602082019050919050565b6000611837602483611b31565b915061184282611f4b565b604082019050919050565b600061185a600f83611b31565b915061186582611f9a565b602082019050919050565b600061187d602583611b31565b915061188882611fc3565b604082019050919050565b60006118a0601f83611b31565b91506118ab82612012565b602082019050919050565b6118bf81611bd6565b82525050565b6118ce81611be0565b82525050565b60006020820190506118e960008301846116ac565b92915050565b600060408201905061190460008301856116ac565b61191160208301846118b6565b9392505050565b600060208201905061192d60008301846116bb565b92915050565b600060208201905061194860008301846116ca565b92915050565b6000602082019050818103600083015261196881846116d9565b905092915050565b6000602082019050818103600083015261198981611712565b9050919050565b600060208201905081810360008301526119a981611735565b9050919050565b600060208201905081810360008301526119c981611758565b9050919050565b600060208201905081810360008301526119e98161177b565b9050919050565b60006020820190508181036000830152611a098161179e565b9050919050565b60006020820190508181036000830152611a29816117c1565b9050919050565b60006020820190508181036000830152611a49816117e4565b9050919050565b60006020820190508181036000830152611a6981611807565b9050919050565b60006020820190508181036000830152611a898161182a565b9050919050565b60006020820190508181036000830152611aa98161184d565b9050919050565b60006020820190508181036000830152611ac981611870565b9050919050565b60006020820190508181036000830152611ae981611893565b9050919050565b6000602082019050611b0560008301846118b6565b92915050565b6000602082019050611b2060008301846118c5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b4d82611bd6565b9150611b5883611bd6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b8d57611b8c611cd1565b5b828201905092915050565b6000611ba382611bb6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611bf882611bff565b9050919050565b6000611c0a82611c11565b9050919050565b6000611c1c82611bb6565b9050919050565b60005b83811015611c41578082015181840152602081019050611c26565b83811115611c50576000848401525b50505050565b60006002820490506001821680611c6e57607f821691505b60208210811415611c8257611c81611d00565b5b50919050565b6000611c9382611bd6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cc657611cc5611cd1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f494e4445585f4f55545f4f465f52414e47450000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4d5553545f4f574e5f544f4b454e5f4944000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f474f4c445f434c41494d45445f464f525f544f4b454e5f494400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f5f544f4b454e535f4f574e45440000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61204481611b98565b811461204f57600080fd5b50565b61205b81611bd6565b811461206657600080fd5b5056fea264697066735822122029dca7ab20bd0331bd071cacf24e609466f1a7880c40603c291c25a11758a23364736f6c63430008070033
Deployed Bytecode Sourcemap
23792:1927:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8481:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7293:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9173:529;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7135:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10111:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23836:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24841:602;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6392:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10911:482;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7854:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24215:219;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24442:391;;;:::i;:::-;;24040:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23923:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8133:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23970:61;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:100;6227:13;6260:5;6253:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:100;:::o;8481:210::-;8600:4;8622:39;8631:12;:10;:12::i;:::-;8645:7;8654:6;8622:8;:39::i;:::-;8679:4;8672:11;;8481:210;;;;:::o;7293:108::-;7354:7;7381:12;;7374:19;;7293:108;:::o;9173:529::-;9313:4;9330:36;9340:6;9348:9;9359:6;9330:9;:36::i;:::-;9379:24;9406:11;:19;9418:6;9406:19;;;;;;;;;;;;;;;:33;9426:12;:10;:12::i;:::-;9406:33;;;;;;;;;;;;;;;;9379:60;;9492:6;9472:16;:26;;9450:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;9602:57;9611:6;9619:12;:10;:12::i;:::-;9652:6;9633:16;:25;9602:8;:57::i;:::-;9690:4;9683:11;;;9173:529;;;;;:::o;7135:93::-;7193:5;7218:2;7211:9;;7135:93;:::o;10111:297::-;10226:4;10248:130;10271:12;:10;:12::i;:::-;10298:7;10357:10;10320:11;:25;10332:12;:10;:12::i;:::-;10320:25;;;;;;;;;;;;;;;:34;10346:7;10320:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10248:8;:130::i;:::-;10396:4;10389:11;;10111:297;;;;:::o;7464:177::-;7583:7;7615:9;:18;7625:7;7615:18;;;;;;;;;;;;;;;;7608:25;;7464:177;;;:::o;23836:80::-;;;;;;;;;;;;;:::o;24841:602::-;24951:25;24979:13;;;;;;;;;;;:23;;;25003:12;:10;:12::i;:::-;24979:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24951:65;;25057:1;25037:17;:21;25029:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25132:1;25113:15;:20;;:57;;;;;25153:17;25137:13;:33;25113:57;25091:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;25234:9;25246:15;25234:27;;25229:207;25268:13;25263:1;:18;25229:207;;25303:121;25328:13;;;;;;;;;;;:33;;;25362:12;:10;:12::i;:::-;25376:1;25328:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25397:12;:10;:12::i;:::-;25303:6;:121::i;:::-;25283:3;;;;;:::i;:::-;;;;25229:207;;;;24940:503;24841:602;;:::o;6392:104::-;6448:13;6481:7;6474:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6392:104;:::o;10911:482::-;11031:4;11053:24;11080:11;:25;11092:12;:10;:12::i;:::-;11080:25;;;;;;;;;;;;;;;:34;11106:7;11080:34;;;;;;;;;;;;;;;;11053:61;;11167:15;11147:16;:35;;11125:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11283:67;11292:12;:10;:12::i;:::-;11306:7;11334:15;11315:16;:34;11283:8;:67::i;:::-;11381:4;11374:11;;;10911:482;;;;:::o;7854:216::-;7976:4;7998:42;8008:12;:10;:12::i;:::-;8022:9;8033:6;7998:9;:42::i;:::-;8058:4;8051:11;;7854:216;;;;:::o;24215:219::-;24309:13;;;;;;;;;;;:21;;;24331:7;24309:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24293:46;;:12;:10;:12::i;:::-;:46;;;24271:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;24397:29;24404:7;24413:12;:10;:12::i;:::-;24397:6;:29::i;:::-;24215:219;:::o;24442:391::-;24490:25;24518:13;;;;;;;;;;;:23;;;24542:12;:10;:12::i;:::-;24518:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24490:65;;24596:1;24576:17;:21;24568:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24635:9;24630:196;24654:17;24650:1;:21;24630:196;;;24693:121;24718:13;;;;;;;;;;;:33;;;24752:12;:10;:12::i;:::-;24766:1;24718:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24787:12;:10;:12::i;:::-;24693:6;:121::i;:::-;24673:3;;;;;:::i;:::-;;;;24630:196;;;;24479:354;24442:391::o;24040:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;23923:38::-;;;;;;;;;;;;;:::o;8133:201::-;8267:7;8299:11;:18;8311:5;8299:18;;;;;;;;;;;;;;;:27;8318:7;8299:27;;;;;;;;;;;;;;;;8292:34;;8133:201;;;;:::o;23970:61::-;;;;:::o;609:98::-;662:7;689:10;682:17;;609:98;:::o;14701:380::-;14854:1;14837:19;;:5;:19;;;;14829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14935:1;14916:21;;:7;:21;;;;14908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15019:6;14989:11;:18;15001:5;14989:18;;;;;;;;;;;;;;;:27;15008:7;14989:27;;;;;;;;;;;;;;;:36;;;;15057:7;15041:32;;15050:5;15041:32;;;15066:6;15041:32;;;;;;:::i;:::-;;;;;;;;14701:380;;;:::o;11883:770::-;12041:1;12023:20;;:6;:20;;;;12015:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12125:1;12104:23;;:9;:23;;;;12096:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12180:47;12201:6;12209:9;12220:6;12180:20;:47::i;:::-;12240:21;12264:9;:17;12274:6;12264:17;;;;;;;;;;;;;;;;12240:41;;12331:6;12314:13;:23;;12292:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12475:6;12459:13;:22;12439:9;:17;12449:6;12439:17;;;;;;;;;;;;;;;:42;;;;12527:6;12503:9;:20;12513:9;12503:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12568:9;12551:35;;12560:6;12551:35;;;12579:6;12551:35;;;;;;:::i;:::-;;;;;;;;12599:46;12619:6;12627:9;12638:6;12599:19;:46::i;:::-;12004:649;11883:770;;;:::o;25451:265::-;25546:10;:19;25557:7;25546:19;;;;;;;;;;;;;;;;;;;;;25545:20;25523:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;25653:4;25631:10;:19;25642:7;25631:19;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25670:38;25676:10;25688:19;;25670:5;:38::i;:::-;25451:265;;:::o;15681:125::-;;;;:::o;16410:124::-;;;;:::o;12940:399::-;13043:1;13024:21;;:7;:21;;;;13016:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13094:49;13123:1;13127:7;13136:6;13094:20;:49::i;:::-;13172:6;13156:12;;:22;;;;;;;:::i;:::-;;;;;;;;13211:6;13189:9;:18;13199:7;13189:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13254:7;13233:37;;13250:1;13233:37;;;13263:6;13233:37;;;;;;:::i;:::-;;;;;;;;13283:48;13311:1;13315:7;13324:6;13283:19;:48::i;:::-;12940:399;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;301:139;;;;:::o;446:143::-;503:5;534:6;528:13;519:22;;550:33;577:5;550:33;:::i;:::-;446:143;;;;:::o;595:329::-;654:6;703:2;691:9;682:7;678:23;674:32;671:119;;;709:79;;:::i;:::-;671:119;829:1;854:53;899:7;890:6;879:9;875:22;854:53;:::i;:::-;844:63;;800:117;595:329;;;;:::o;930:351::-;1000:6;1049:2;1037:9;1028:7;1024:23;1020:32;1017:119;;;1055:79;;:::i;:::-;1017:119;1175:1;1200:64;1256:7;1247:6;1236:9;1232:22;1200:64;:::i;:::-;1190:74;;1146:128;930:351;;;;:::o;1287:474::-;1355:6;1363;1412:2;1400:9;1391:7;1387:23;1383:32;1380:119;;;1418:79;;:::i;:::-;1380:119;1538:1;1563:53;1608:7;1599:6;1588:9;1584:22;1563:53;:::i;:::-;1553:63;;1509:117;1665:2;1691:53;1736:7;1727:6;1716:9;1712:22;1691:53;:::i;:::-;1681:63;;1636:118;1287:474;;;;;:::o;1767:619::-;1844:6;1852;1860;1909:2;1897:9;1888:7;1884:23;1880:32;1877:119;;;1915:79;;:::i;:::-;1877:119;2035:1;2060:53;2105:7;2096:6;2085:9;2081:22;2060:53;:::i;:::-;2050:63;;2006:117;2162:2;2188:53;2233:7;2224:6;2213:9;2209:22;2188:53;:::i;:::-;2178:63;;2133:118;2290:2;2316:53;2361:7;2352:6;2341:9;2337:22;2316:53;:::i;:::-;2306:63;;2261:118;1767:619;;;;;:::o;2392:474::-;2460:6;2468;2517:2;2505:9;2496:7;2492:23;2488:32;2485:119;;;2523:79;;:::i;:::-;2485:119;2643:1;2668:53;2713:7;2704:6;2693:9;2689:22;2668:53;:::i;:::-;2658:63;;2614:117;2770:2;2796:53;2841:7;2832:6;2821:9;2817:22;2796:53;:::i;:::-;2786:63;;2741:118;2392:474;;;;;:::o;2872:329::-;2931:6;2980:2;2968:9;2959:7;2955:23;2951:32;2948:119;;;2986:79;;:::i;:::-;2948:119;3106:1;3131:53;3176:7;3167:6;3156:9;3152:22;3131:53;:::i;:::-;3121:63;;3077:117;2872:329;;;;:::o;3207:351::-;3277:6;3326:2;3314:9;3305:7;3301:23;3297:32;3294:119;;;3332:79;;:::i;:::-;3294:119;3452:1;3477:64;3533:7;3524:6;3513:9;3509:22;3477:64;:::i;:::-;3467:74;;3423:128;3207:351;;;;:::o;3564:474::-;3632:6;3640;3689:2;3677:9;3668:7;3664:23;3660:32;3657:119;;;3695:79;;:::i;:::-;3657:119;3815:1;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;:::i;:::-;3830:63;;3786:117;3942:2;3968:53;4013:7;4004:6;3993:9;3989:22;3968:53;:::i;:::-;3958:63;;3913:118;3564:474;;;;;:::o;4044:118::-;4131:24;4149:5;4131:24;:::i;:::-;4126:3;4119:37;4044:118;;:::o;4168:109::-;4249:21;4264:5;4249:21;:::i;:::-;4244:3;4237:34;4168:109;;:::o;4283:181::-;4395:62;4451:5;4395:62;:::i;:::-;4390:3;4383:75;4283:181;;:::o;4470:364::-;4558:3;4586:39;4619:5;4586:39;:::i;:::-;4641:71;4705:6;4700:3;4641:71;:::i;:::-;4634:78;;4721:52;4766:6;4761:3;4754:4;4747:5;4743:16;4721:52;:::i;:::-;4798:29;4820:6;4798:29;:::i;:::-;4793:3;4789:39;4782:46;;4562:272;4470:364;;;;:::o;4840:366::-;4982:3;5003:67;5067:2;5062:3;5003:67;:::i;:::-;4996:74;;5079:93;5168:3;5079:93;:::i;:::-;5197:2;5192:3;5188:12;5181:19;;4840:366;;;:::o;5212:::-;5354:3;5375:67;5439:2;5434:3;5375:67;:::i;:::-;5368:74;;5451:93;5540:3;5451:93;:::i;:::-;5569:2;5564:3;5560:12;5553:19;;5212:366;;;:::o;5584:::-;5726:3;5747:67;5811:2;5806:3;5747:67;:::i;:::-;5740:74;;5823:93;5912:3;5823:93;:::i;:::-;5941:2;5936:3;5932:12;5925:19;;5584:366;;;:::o;5956:::-;6098:3;6119:67;6183:2;6178:3;6119:67;:::i;:::-;6112:74;;6195:93;6284:3;6195:93;:::i;:::-;6313:2;6308:3;6304:12;6297:19;;5956:366;;;:::o;6328:::-;6470:3;6491:67;6555:2;6550:3;6491:67;:::i;:::-;6484:74;;6567:93;6656:3;6567:93;:::i;:::-;6685:2;6680:3;6676:12;6669:19;;6328:366;;;:::o;6700:::-;6842:3;6863:67;6927:2;6922:3;6863:67;:::i;:::-;6856:74;;6939:93;7028:3;6939:93;:::i;:::-;7057:2;7052:3;7048:12;7041:19;;6700:366;;;:::o;7072:::-;7214:3;7235:67;7299:2;7294:3;7235:67;:::i;:::-;7228:74;;7311:93;7400:3;7311:93;:::i;:::-;7429:2;7424:3;7420:12;7413:19;;7072:366;;;:::o;7444:::-;7586:3;7607:67;7671:2;7666:3;7607:67;:::i;:::-;7600:74;;7683:93;7772:3;7683:93;:::i;:::-;7801:2;7796:3;7792:12;7785:19;;7444:366;;;:::o;7816:::-;7958:3;7979:67;8043:2;8038:3;7979:67;:::i;:::-;7972:74;;8055:93;8144:3;8055:93;:::i;:::-;8173:2;8168:3;8164:12;8157:19;;7816:366;;;:::o;8188:::-;8330:3;8351:67;8415:2;8410:3;8351:67;:::i;:::-;8344:74;;8427:93;8516:3;8427:93;:::i;:::-;8545:2;8540:3;8536:12;8529:19;;8188:366;;;:::o;8560:::-;8702:3;8723:67;8787:2;8782:3;8723:67;:::i;:::-;8716:74;;8799:93;8888:3;8799:93;:::i;:::-;8917:2;8912:3;8908:12;8901:19;;8560:366;;;:::o;8932:::-;9074:3;9095:67;9159:2;9154:3;9095:67;:::i;:::-;9088:74;;9171:93;9260:3;9171:93;:::i;:::-;9289:2;9284:3;9280:12;9273:19;;8932:366;;;:::o;9304:118::-;9391:24;9409:5;9391:24;:::i;:::-;9386:3;9379:37;9304:118;;:::o;9428:112::-;9511:22;9527:5;9511:22;:::i;:::-;9506:3;9499:35;9428:112;;:::o;9546:222::-;9639:4;9677:2;9666:9;9662:18;9654:26;;9690:71;9758:1;9747:9;9743:17;9734:6;9690:71;:::i;:::-;9546:222;;;;:::o;9774:332::-;9895:4;9933:2;9922:9;9918:18;9910:26;;9946:71;10014:1;10003:9;9999:17;9990:6;9946:71;:::i;:::-;10027:72;10095:2;10084:9;10080:18;10071:6;10027:72;:::i;:::-;9774:332;;;;;:::o;10112:210::-;10199:4;10237:2;10226:9;10222:18;10214:26;;10250:65;10312:1;10301:9;10297:17;10288:6;10250:65;:::i;:::-;10112:210;;;;:::o;10328:272::-;10446:4;10484:2;10473:9;10469:18;10461:26;;10497:96;10590:1;10579:9;10575:17;10566:6;10497:96;:::i;:::-;10328:272;;;;:::o;10606:313::-;10719:4;10757:2;10746:9;10742:18;10734:26;;10806:9;10800:4;10796:20;10792:1;10781:9;10777:17;10770:47;10834:78;10907:4;10898:6;10834:78;:::i;:::-;10826:86;;10606:313;;;;:::o;10925:419::-;11091:4;11129:2;11118:9;11114:18;11106:26;;11178:9;11172:4;11168:20;11164:1;11153:9;11149:17;11142:47;11206:131;11332:4;11206:131;:::i;:::-;11198:139;;10925:419;;;:::o;11350:::-;11516:4;11554:2;11543:9;11539:18;11531:26;;11603:9;11597:4;11593:20;11589:1;11578:9;11574:17;11567:47;11631:131;11757:4;11631:131;:::i;:::-;11623:139;;11350:419;;;:::o;11775:::-;11941:4;11979:2;11968:9;11964:18;11956:26;;12028:9;12022:4;12018:20;12014:1;12003:9;11999:17;11992:47;12056:131;12182:4;12056:131;:::i;:::-;12048:139;;11775:419;;;:::o;12200:::-;12366:4;12404:2;12393:9;12389:18;12381:26;;12453:9;12447:4;12443:20;12439:1;12428:9;12424:17;12417:47;12481:131;12607:4;12481:131;:::i;:::-;12473:139;;12200:419;;;:::o;12625:::-;12791:4;12829:2;12818:9;12814:18;12806:26;;12878:9;12872:4;12868:20;12864:1;12853:9;12849:17;12842:47;12906:131;13032:4;12906:131;:::i;:::-;12898:139;;12625:419;;;:::o;13050:::-;13216:4;13254:2;13243:9;13239:18;13231:26;;13303:9;13297:4;13293:20;13289:1;13278:9;13274:17;13267:47;13331:131;13457:4;13331:131;:::i;:::-;13323:139;;13050:419;;;:::o;13475:::-;13641:4;13679:2;13668:9;13664:18;13656:26;;13728:9;13722:4;13718:20;13714:1;13703:9;13699:17;13692:47;13756:131;13882:4;13756:131;:::i;:::-;13748:139;;13475:419;;;:::o;13900:::-;14066:4;14104:2;14093:9;14089:18;14081:26;;14153:9;14147:4;14143:20;14139:1;14128:9;14124:17;14117:47;14181:131;14307:4;14181:131;:::i;:::-;14173:139;;13900:419;;;:::o;14325:::-;14491:4;14529:2;14518:9;14514:18;14506:26;;14578:9;14572:4;14568:20;14564:1;14553:9;14549:17;14542:47;14606:131;14732:4;14606:131;:::i;:::-;14598:139;;14325:419;;;:::o;14750:::-;14916:4;14954:2;14943:9;14939:18;14931:26;;15003:9;14997:4;14993:20;14989:1;14978:9;14974:17;14967:47;15031:131;15157:4;15031:131;:::i;:::-;15023:139;;14750:419;;;:::o;15175:::-;15341:4;15379:2;15368:9;15364:18;15356:26;;15428:9;15422:4;15418:20;15414:1;15403:9;15399:17;15392:47;15456:131;15582:4;15456:131;:::i;:::-;15448:139;;15175:419;;;:::o;15600:::-;15766:4;15804:2;15793:9;15789:18;15781:26;;15853:9;15847:4;15843:20;15839:1;15828:9;15824:17;15817:47;15881:131;16007:4;15881:131;:::i;:::-;15873:139;;15600:419;;;:::o;16025:222::-;16118:4;16156:2;16145:9;16141:18;16133:26;;16169:71;16237:1;16226:9;16222:17;16213:6;16169:71;:::i;:::-;16025:222;;;;:::o;16253:214::-;16342:4;16380:2;16369:9;16365:18;16357:26;;16393:67;16457:1;16446:9;16442:17;16433:6;16393:67;:::i;:::-;16253:214;;;;:::o;16554:99::-;16606:6;16640:5;16634:12;16624:22;;16554:99;;;:::o;16659:169::-;16743:11;16777:6;16772:3;16765:19;16817:4;16812:3;16808:14;16793:29;;16659:169;;;;:::o;16834:305::-;16874:3;16893:20;16911:1;16893:20;:::i;:::-;16888:25;;16927:20;16945:1;16927:20;:::i;:::-;16922:25;;17081:1;17013:66;17009:74;17006:1;17003:81;17000:107;;;17087:18;;:::i;:::-;17000:107;17131:1;17128;17124:9;17117:16;;16834:305;;;;:::o;17145:96::-;17182:7;17211:24;17229:5;17211:24;:::i;:::-;17200:35;;17145:96;;;:::o;17247:90::-;17281:7;17324:5;17317:13;17310:21;17299:32;;17247:90;;;:::o;17343:126::-;17380:7;17420:42;17413:5;17409:54;17398:65;;17343:126;;;:::o;17475:77::-;17512:7;17541:5;17530:16;;17475:77;;;:::o;17558:86::-;17593:7;17633:4;17626:5;17622:16;17611:27;;17558:86;;;:::o;17650:151::-;17725:9;17758:37;17789:5;17758:37;:::i;:::-;17745:50;;17650:151;;;:::o;17807:126::-;17857:9;17890:37;17921:5;17890:37;:::i;:::-;17877:50;;17807:126;;;:::o;17939:113::-;17989:9;18022:24;18040:5;18022:24;:::i;:::-;18009:37;;17939:113;;;:::o;18058:307::-;18126:1;18136:113;18150:6;18147:1;18144:13;18136:113;;;18235:1;18230:3;18226:11;18220:18;18216:1;18211:3;18207:11;18200:39;18172:2;18169:1;18165:10;18160:15;;18136:113;;;18267:6;18264:1;18261:13;18258:101;;;18347:1;18338:6;18333:3;18329:16;18322:27;18258:101;18107:258;18058:307;;;:::o;18371:320::-;18415:6;18452:1;18446:4;18442:12;18432:22;;18499:1;18493:4;18489:12;18520:18;18510:81;;18576:4;18568:6;18564:17;18554:27;;18510:81;18638:2;18630:6;18627:14;18607:18;18604:38;18601:84;;;18657:18;;:::i;:::-;18601:84;18422:269;18371:320;;;:::o;18697:233::-;18736:3;18759:24;18777:5;18759:24;:::i;:::-;18750:33;;18805:66;18798:5;18795:77;18792:103;;;18875:18;;:::i;:::-;18792:103;18922:1;18915:5;18911:13;18904:20;;18697:233;;;:::o;18936:180::-;18984:77;18981:1;18974:88;19081:4;19078:1;19071:15;19105:4;19102:1;19095:15;19122:180;19170:77;19167:1;19160:88;19267:4;19264:1;19257:15;19291:4;19288:1;19281:15;19431:117;19540:1;19537;19530:12;19554:102;19595:6;19646:2;19642:7;19637:2;19630:5;19626:14;19622:28;19612:38;;19554:102;;;:::o;19662:222::-;19802:34;19798:1;19790:6;19786:14;19779:58;19871:5;19866:2;19858:6;19854:15;19847:30;19662:222;:::o;19890:168::-;20030:20;20026:1;20018:6;20014:14;20007:44;19890:168;:::o;20064:221::-;20204:34;20200:1;20192:6;20188:14;20181:58;20273:4;20268:2;20260:6;20256:15;20249:29;20064:221;:::o;20291:225::-;20431:34;20427:1;20419:6;20415:14;20408:58;20500:8;20495:2;20487:6;20483:15;20476:33;20291:225;:::o;20522:167::-;20662:19;20658:1;20650:6;20646:14;20639:43;20522:167;:::o;20695:227::-;20835:34;20831:1;20823:6;20819:14;20812:58;20904:10;20899:2;20891:6;20887:15;20880:35;20695:227;:::o;20928:224::-;21068:34;21064:1;21056:6;21052:14;21045:58;21137:7;21132:2;21124:6;21120:15;21113:32;20928:224;:::o;21158:175::-;21298:27;21294:1;21286:6;21282:14;21275:51;21158:175;:::o;21339:223::-;21479:34;21475:1;21467:6;21463:14;21456:58;21548:6;21543:2;21535:6;21531:15;21524:31;21339:223;:::o;21568:165::-;21708:17;21704:1;21696:6;21692:14;21685:41;21568:165;:::o;21739:224::-;21879:34;21875:1;21867:6;21863:14;21856:58;21948:7;21943:2;21935:6;21931:15;21924:32;21739:224;:::o;21969:181::-;22109:33;22105:1;22097:6;22093:14;22086:57;21969:181;:::o;22156:122::-;22229:24;22247:5;22229:24;:::i;:::-;22222:5;22219:35;22209:63;;22268:1;22265;22258:12;22209:63;22156:122;:::o;22284:::-;22357:24;22375:5;22357:24;:::i;:::-;22350:5;22347:35;22337:63;;22396:1;22393;22386:12;22337:63;22284:122;:::o
Swarm Source
ipfs://29dca7ab20bd0331bd071cacf24e609466f1a7880c40603c291c25a11758a233
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.