Overview
Max Total Supply
10,000 PREMINTCOLL
Holders
8,404
Market
Volume (24H)
0.0444 ETH
Min Price (24H)
$13.69 @ 0.006500 ETH
Max Price (24H)
$19.97 @ 0.009485 ETH
Other Info
Token Contract
Balance
1 PREMINTCOLLLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
PREMINTCollector
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity >=0.8.10 <0.9.0;import "@divergencetech/ethier/contracts/crypto/SignatureChecker.sol";import "@divergencetech/ethier/contracts/crypto/SignerManager.sol";import "@divergencetech/ethier/contracts/erc721/BaseTokenURI.sol";import "@divergencetech/ethier/contracts/erc721/ERC721CommonAutoIncrement.sol";import "@divergencetech/ethier/contracts/sales/ArbitraryPriceSeller.sol";import "@divergencetech/ethier/contracts/utils/Monotonic.sol";import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import "@openzeppelin/contracts/token/common/ERC2981.sol";contract PREMINTCollector isERC721CommonAutoIncrement,BaseTokenURI,ArbitraryPriceSeller,SignerManager,ERC2981{using EnumerableSet for EnumerableSet.AddressSet;using Monotonic for Monotonic.Increaser;using SignatureChecker for EnumerableSet.AddressSet;constructor(address payable beneficiary, address royaltyReceiver)ERC721CommonAutoIncrement("PREMINT Collector", "PREMINTCOLL")BaseTokenURI("")
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/structs/EnumerableSet.sol)pragma solidity ^0.8.0;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a >= b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {return a < b ? a : b;}/*** @dev Returns the average of two numbers. The result is rounded towards* zero.
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)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);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @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) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol)pragma solidity ^0.8.0;import "../Strings.sol";/*** @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.** These functions can be used to verify that a message was signed by the holder* of the private keys of a given address.*/library ECDSA {enum RecoverError {NoError,InvalidSignature,InvalidSignatureLength,InvalidSignatureS,InvalidSignatureV}function _throwError(RecoverError error) private pure {if (error == RecoverError.NoError) {return; // no error: do nothing} else if (error == RecoverError.InvalidSignature) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)pragma solidity ^0.8.0;/*** @dev String operations.*/library Strings {bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;temp /= 10;
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (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;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/common/ERC2981.sol)pragma solidity ^0.8.0;import "../../interfaces/IERC2981.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.** Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for* specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.** Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the* fee is specified in basis points by default.** IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See* https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to* voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.** _Available since v4.5._*/abstract contract ERC2981 is IERC2981, ERC165 {struct RoyaltyInfo {address receiver;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Pausable.sol)pragma solidity ^0.8.0;import "../ERC721.sol";import "../../../security/Pausable.sol";/*** @dev ERC721 token with pausable token transfers, minting and burning.** Useful for scenarios such as preventing trades until the end of an evaluation* period, or having an emergency switch for freezing all token transfers in the* event of a large bug.*/abstract contract ERC721Pausable is ERC721, Pausable {/*** @dev See {ERC721-_beforeTokenTransfer}.** Requirements:** - the contract must not be paused.*/function _beforeTokenTransfer(address from,address to,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.0;import "./IERC721.sol";import "./IERC721Receiver.sol";import "./extensions/IERC721Metadata.sol";import "../../utils/Address.sol";import "../../utils/Context.sol";import "../../utils/Strings.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {using Address for address;using Strings for uint256;// Token namestring private _name;// Token symbol
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write// back. This is the compiler's defense against contract upgrades and
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @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);
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.** _Available since v4.5._*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be payed in that same unit of exchange.*/function royaltyInfo(uint256 tokenId, uint256 salePrice)externalviewreturns (address receiver, uint256 royaltyAmount);}
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol)pragma solidity ^0.8.0;import "../utils/introspection/IERC165.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
12345678910111213141516171819// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/security/Pausable.sol";/// @notice A Pausable contract that can only be toggled by the Owner.contract OwnerPausable is Ownable, Pausable {/// @notice Pauses the contract.function pause() public onlyOwner {Pausable._pause();}/// @notice Unpauses the contract.function unpause() public onlyOwner {Pausable._unpause();}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;/**@notice Provides monotonic increasing and decreasing values, similar toOpenZeppelin's Counter but (a) limited in direction, and (b) allowing for steps> 1.*/library Monotonic {/**@notice Holds a value that can only increase.@dev The internal value MUST NOT be accessed directly. Instead use current()and add().*/struct Increaser {uint256 value;}/// @notice Returns the current value of the Increaser.function current(Increaser storage incr) internal view returns (uint256) {return incr.value;}/// @notice Adds x to the Increaser's value.function add(Increaser storage incr, uint256 x) internal {
123456789101112131415161718// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;/// @notice A minimal interface describing OpenSea's Wyvern proxy registry.contract ProxyRegistry {mapping(address => OwnableDelegateProxy) public proxies;}/**@dev This pattern of using an empty contract is cargo-culted directly fromOpenSea's example code. TODO: it's likely that the above mapping can be changedto address => address without affecting anything, but further investigation isneeded (i.e. is there a subtle reason that OpenSea released it like this?).*/contract OwnableDelegateProxy {}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;// Inspired by BaseOpenSea by Simon Fremaux (@dievardump) but without the need// to pass specific addresses depending on deployment network.// https://gist.github.com/dievardump/483eb43bc6ed30b14f01e01842e3339b/import "./ProxyRegistry.sol";/// @notice Library to achieve gas-free listings on OpenSea.library OpenSeaGasFreeListing {/**@notice Returns whether the operator is an OpenSea proxy for the owner, thusallowing it to list without the token owner paying gas.@dev ERC{721,1155}.isApprovedForAll should be overriden to also check ifthis function returns true.*/function isApprovedForAll(address owner, address operator)internalviewreturns (bool){address proxy = proxyFor(owner);return proxy != address(0) && proxy == operator;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "../utils/Monotonic.sol";import "../utils/OwnerPausable.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/Address.sol";import "@openzeppelin/contracts/utils/Context.sol";import "@openzeppelin/contracts/utils/math/Math.sol";import "@openzeppelin/contracts/utils/Strings.sol";/**@notice An abstract contract providing the _purchase() function to:- Enforce per-wallet / per-transaction limits- Calculate required cost, forwarding to a beneficiary, and refunding extra*/abstract contract Seller is OwnerPausable, ReentrancyGuard {using Address for address payable;using Monotonic for Monotonic.Increaser;using Strings for uint256;/**@dev Note that the address limits are vulnerable to wallet farming.@param maxPerAddress Unlimited if zero.@param maxPerTex Unlimited if zero.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2022 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "./Seller.sol";/**@dev The Seller base contract has a convenience function _purchase(to,n) thatcalls the standard function as _purchase(to,n,0). This would result in a freepurchase, to the convenience variant is overriden and always reverts with thiserror.*/error ImplicitFreePurchase();/**@notice A Seller with an arbitrary price passed in externally.*/abstract contract ArbitraryPriceSeller is Seller {constructor(Seller.SellerConfig memory sellerConfig,address payable _beneficiary) Seller(sellerConfig, _beneficiary) {}/**@notice Block accidental usage of the convenience function that woulddefault to a free sale.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "../thirdparty/opensea/OpenSeaGasFreeListing.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";/// @notice Pre-approval of OpenSea proxies for gas-less listing/// @dev This wrapper allows users to revoke the pre-approval of their/// associated proxy and emits the corresponding events. This is necessary for/// external tools to index approvals correctly and inform the user./// @dev The pre-approval is triggered on a per-wallet basis during the first/// transfer transactions. It will only be enabled for wallets with an existing/// proxy. Not having a proxy incurs a gas overhead./// @dev This wrapper optimizes for the following scenario:/// - The majority of users already have a wyvern proxy/// - Most of them want to transfer tokens via wyvern exchangesabstract contract ERC721PreApproval is ERC721 {/// @dev It is important that Active remains at first position, since this/// is the scenario that we are trying to optimize for.enum State {Active,Inactive}/// @notice The state of the pre-approval for a given owner
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2022 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "./ERC721Common.sol";import "../utils/Monotonic.sol";/**@notice An extension of the ethier ERC721Common contract that auto-incrementsthe next tokenId and exposes a totalSupply.*/contract ERC721CommonAutoIncrement is ERC721Common {using Monotonic for Monotonic.Increaser;constructor(string memory name, string memory symbol)ERC721Common(name, symbol){}/**@notice Total number of tokens minted.*/Monotonic.Increaser public totalSupply;/**@dev _safeMint() n tokens to the specified address, only incrementingtotalSupply once.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "./ERC721PreApproval.sol";import "../utils/OwnerPausable.sol";import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Pausable.sol";/**@notice An ERC721 contract with common functionality:- OpenSea gas-free listings- OpenZeppelin Pausable- OpenZeppelin Pausable with functions exposed to Owner only*/contract ERC721Common is ERC721Pausable, ERC721PreApproval, OwnerPausable {constructor(string memory name, string memory symbol)ERC721(name, symbol){}/// @notice Requires that the token exists.modifier tokenExists(uint256 tokenId) {require(ERC721._exists(tokenId), "ERC721Common: Token doesn't exist");_;}/// @notice Requires that msg.sender owns or is approved for the token.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "@openzeppelin/contracts/access/Ownable.sol";/**@notice ERC721 extension that overrides the OpenZeppelin _baseURI() function toreturn a prefix that can be set by the contract owner.*/contract BaseTokenURI is Ownable {/// @notice Base token URI used as a prefix by tokenURI().string public baseTokenURI;constructor(string memory _baseTokenURI) {setBaseTokenURI(_baseTokenURI);}/// @notice Sets the base token URI prefix.function setBaseTokenURI(string memory _baseTokenURI) public onlyOwner {baseTokenURI = _baseTokenURI;}/**@notice Concatenates and returns the base token URI and the token ID withoutany additional characters (e.g. a slash).
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2022 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";/**@title SignerManager@notice Manges addition and removal of a core set of addresses from whichvalid ECDSA signatures can be accepted; see SignatureChecker.*/contract SignerManager is Ownable {using EnumerableSet for EnumerableSet.AddressSet;/**@dev Addresses from which signatures can be accepted.*/EnumerableSet.AddressSet internal signers;/**@notice Add an address to the set of accepted signers.*/function addSigner(address signer) external onlyOwner {signers.add(signer);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)pragma solidity >=0.8.0 <0.9.0;import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";/**@title SignatureChecker@notice Additional functions for EnumerableSet.Addresset that require a validECDSA signature of a standardized message, signed by any member of the set.*/library SignatureChecker {using EnumerableSet for EnumerableSet.AddressSet;/**@notice Requires that the message has not been used previously and that therecovered signer is contained in the signers AddressSet.@dev Convenience wrapper for message generation + signature verification+ marking message as used@param signers Set of addresses from which signatures are accepted.@param usedMessages Set of already-used messages.@param signature ECDSA signature of message.*/function requireValidSignature(EnumerableSet.AddressSet storage signers,
123456789101112131415161718192021{"remappings": [],"optimizer": {"enabled": true,"runs": 200},"evmVersion": "london","libraries": {},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"},{"internalType":"address","name":"royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"numPurchased","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Revenue","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":"signer","type":"address"}],"name":"addSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"name":"alreadyMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"costEach","type":"uint256"}],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"n","type":"uint256"}],"name":"mintPublic","outputs":[],"stateMutability":"payable","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","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":"publicMinting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"n","type":"uint256"}],"name":"purchaseFreeOfCharge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"removeSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellerConfig","outputs":[{"internalType":"uint256","name":"totalInventory","type":"uint256"},{"internalType":"uint256","name":"maxPerAddress","type":"uint256"},{"internalType":"uint256","name":"maxPerTx","type":"uint256"},{"internalType":"uint248","name":"freeQuota","type":"uint248"},{"internalType":"bool","name":"reserveFreeQuota","type":"bool"},{"internalType":"bool","name":"lockFreeQuota","type":"bool"},{"internalType":"bool","name":"lockTotalInventory","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_beneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_publicMinting","type":"bool"}],"name":"setPublicMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPublicPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeBasisPoints","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"totalInventory","type":"uint256"},{"internalType":"uint256","name":"maxPerAddress","type":"uint256"},{"internalType":"uint256","name":"maxPerTx","type":"uint256"},{"internalType":"uint248","name":"freeQuota","type":"uint248"},{"internalType":"bool","name":"reserveFreeQuota","type":"bool"},{"internalType":"bool","name":"lockFreeQuota","type":"bool"},{"internalType":"bool","name":"lockTotalInventory","type":"bool"}],"internalType":"struct Seller.SellerConfig","name":"config","type":"tuple"}],"name":"setSellerConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"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"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"usedMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526703782dace9d90000601a553480156200001d57600080fd5b5060405162004276380380620042768339810160408190526200004091620006c2565b6040518060e001604052806127108152602001600a8152602001600081526020016103a26001600160f81b03168152602001600115158152602001600015158152602001600015158152508281816040518060200160405280600081525060405180604001604052806011815260200170282922a6a4a72a1021b7b63632b1ba37b960791b8152506040518060400160405280600b81526020016a1414915352539510d3d31360aa1b8152508181818181600090805190602001906200010892919062000603565b5080516200011e90600190602084019062000603565b5050506200013b620001356200019460201b60201c565b62000198565b50506006805460ff60a01b191690555062000158905081620001ea565b506001600a55620001698262000252565b620001748162000491565b505050506200018c816102ee620004fe60201b60201c565b50506200073e565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620002395760405162461bcd60e51b815260206004820181905260248201526000805160206200425683398151915260448201526064015b60405180910390fd5b80516200024e90600990602084019062000603565b5050565b6006546001600160a01b031633146200029d5760405162461bcd60e51b8152602060048201819052602482015260008051602062004256833981519152604482015260640162000230565b80606001516001600160f81b031681600001511015620003005760405162461bcd60e51b815260206004820152601c60248201527f53656c6c65723a2065786365737369766520667265652071756f746100000000604482015260640162000230565b620003176011620005ff60201b620014e41760201c565b81511015620003695760405162461bcd60e51b815260206004820181905260248201527f53656c6c65723a20696e76656e746f7279203c20616c726561647920736f6c64604482015260640162000230565b620003806013620005ff60201b620014e41760201c565b81606001516001600160f81b03161015620003e85760405162461bcd60e51b815260206004820152602160248201527f53656c6c65723a20667265652071756f7461203c20616c7265616479207573656044820152601960fa1b606482015260840162000230565b600f54610100900460ff16156200040657600160c0820152600b5481525b600f5460ff16156200042b57600160a0820152600e546001600160f81b031660608201525b8051600b556020810151600c556040810151600d55606081015160808201511515600160f81b026001600160f81b0390911617600e5560a0810151600f805460c09093015115156101000261ff00199215159290921661ffff1990931692909217179055565b6006546001600160a01b03163314620004dc5760405162461bcd60e51b8152602060048201819052602482015260008051602062004256833981519152604482015260640162000230565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6127106001600160601b03821611156200056e5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840162000230565b6001600160a01b038216620005c65760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000230565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601655565b5490565b828054620006119062000701565b90600052602060002090601f01602090048101928262000635576000855562000680565b82601f106200065057805160ff191683800117855562000680565b8280016001018555821562000680579182015b828111156200068057825182559160200191906001019062000663565b506200068e92915062000692565b5090565b5b808211156200068e576000815560010162000693565b6001600160a01b0381168114620006bf57600080fd5b50565b60008060408385031215620006d657600080fd5b8251620006e381620006a9565b6020840151909250620006f681620006a9565b809150509250929050565b600181811c908216806200071657607f821691505b602082108114156200073857634e487b7160e01b600052602260045260246000fd5b50919050565b613b08806200074e6000396000f3fe6080604052600436106102465760003560e01c80636352211e11610139578063a22cb465116100b6578063c62752551161007a578063c627525514610717578063c87b56dd14610737578063d547cfb714610757578063e985e9c51461076c578063eb12d61e1461078c578063f2fde38b146107ac57600080fd5b8063a22cb46514610616578063a945bf8014610636578063b88d4fde1461064c578063bb69b7ef1461066c578063bf62e21d146106f757600080fd5b80639106d7ba116100fd5780639106d7ba146105a65780639437bfa0146105bb57806395d89b41146105db57806396d66de0146105f05780639f93f7791461060357600080fd5b80636352211e1461051e57806370a082311461053e578063715018a61461055e5780638456cb59146105735780638da5cb5b1461058857600080fd5b80632a55205a116101c75780633f4ba83a1161018b5780633f4ba83a1461048057806342842e0e1461049557806353ac010a146104b55780635a028400146104cf5780635c975abb146104ff57600080fd5b80632a55205a146103c15780632f274bd41461040057806330176e131461042057806338af3eed146104405780633ec02e141461046057600080fd5b80630e316ab71161020e5780630e316ab71461031c57806318160ddd1461033c5780631c31f7101461036157806323b872dd14610381578063254a4737146103a157600080fd5b806301ffc9a71461024b57806302fa7c471461028057806306fdde03146102a2578063081812fc146102c4578063095ea7b3146102fc575b600080fd5b34801561025757600080fd5b5061026b6102663660046131fc565b6107cc565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102a061029b36600461322e565b6107dd565b005b3480156102ae57600080fd5b506102b761081e565b60405161027791906132cb565b3480156102d057600080fd5b506102e46102df3660046132de565b6108b0565b6040516001600160a01b039091168152602001610277565b34801561030857600080fd5b506102a06103173660046132f7565b610945565b34801561032857600080fd5b506102a0610337366004613323565b610a5b565b34801561034857600080fd5b506008546103539081565b604051908152602001610277565b34801561036d57600080fd5b506102a061037c366004613323565b610a90565b34801561038d57600080fd5b506102a061039c366004613340565b610adc565b3480156103ad57600080fd5b506102a06103bc366004613396565b610b0d565b3480156103cd57600080fd5b506103e16103dc3660046133b1565b610b4a565b604080516001600160a01b039093168352602083019190915201610277565b34801561040c57600080fd5b506102a061041b366004613412565b610bf8565b34801561042c57600080fd5b506102a061043b366004613513565b610de6565b34801561044c57600080fd5b506010546102e4906001600160a01b031681565b34801561046c57600080fd5b5061035361047b3660046133b1565b610e23565b34801561048c57600080fd5b506102a0610e36565b3480156104a157600080fd5b506102a06104b0366004613340565b610e6a565b3480156104c157600080fd5b5060195461026b9060ff1681565b3480156104db57600080fd5b5061026b6104ea3660046132de565b60186020526000908152604090205460ff1681565b34801561050b57600080fd5b50600654600160a01b900460ff1661026b565b34801561052a57600080fd5b506102e46105393660046132de565b610e85565b34801561054a57600080fd5b50610353610559366004613323565b610efc565b34801561056a57600080fd5b506102a0610f83565b34801561057f57600080fd5b506102a0610fb7565b34801561059457600080fd5b506006546001600160a01b03166102e4565b3480156105b257600080fd5b50610353610fe9565b3480156105c757600080fd5b5061026b6105d636600461355c565b610ff9565b3480156105e757600080fd5b506102b761102e565b6102a06105fe366004613591565b61103d565b6102a06106113660046132f7565b61106a565b34801561062257600080fd5b506102a0610631366004613627565b6110ba565b34801561064257600080fd5b50610353601a5481565b34801561065857600080fd5b506102a061066736600461365c565b6110c4565b34801561067857600080fd5b50600b54600c54600d54600e54600f546106b4949392916001600160f81b0381169160ff600160f81b9092048216918181169161010090041687565b604080519788526020880196909652948601939093526001600160f81b03909116606085015215156080840152151560a0830152151560c082015260e001610277565b34801561070357600080fd5b506102a06107123660046132f7565b6110fc565b34801561072357600080fd5b506102a06107323660046132de565b611271565b34801561074357600080fd5b506102b76107523660046132de565b6112a0565b34801561076357600080fd5b506102b761137a565b34801561077857600080fd5b5061026b6107873660046136dc565b611408565b34801561079857600080fd5b506102a06107a7366004613323565b611414565b3480156107b857600080fd5b506102a06107c7366004613323565b611449565b60006107d7826114e8565b92915050565b6006546001600160a01b031633146108105760405162461bcd60e51b81526004016108079061370a565b60405180910390fd5b61081a828261150d565b5050565b60606000805461082d9061373f565b80601f01602080910402602001604051908101604052809291908181526020018280546108599061373f565b80156108a65780601f1061087b576101008083540402835291602001916108a6565b820191906000526020600020905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610807565b506000908152600460205260409020546001600160a01b031690565b600061095082610e85565b9050806001600160a01b0316836001600160a01b031614156109be5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610807565b336001600160a01b03821614806109da57506109da8133611408565b610a4c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610807565b610a56838361160a565b505050565b6006546001600160a01b03163314610a855760405162461bcd60e51b81526004016108079061370a565b61081a601482611678565b6006546001600160a01b03163314610aba5760405162461bcd60e51b81526004016108079061370a565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610ae6338261168d565b610b025760405162461bcd60e51b81526004016108079061377a565b610a56838383611764565b6006546001600160a01b03163314610b375760405162461bcd60e51b81526004016108079061370a565b6019805460ff1916911515919091179055565b60008281526017602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610bbf5750604080518082019091526016546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610bde906001600160601b0316876137e1565b610be89190613816565b91519350909150505b9250929050565b6006546001600160a01b03163314610c225760405162461bcd60e51b81526004016108079061370a565b80606001516001600160f81b031681600001511015610c835760405162461bcd60e51b815260206004820152601c60248201527f53656c6c65723a2065786365737369766520667265652071756f7461000000006044820152606401610807565b60115481511015610cd65760405162461bcd60e51b815260206004820181905260248201527f53656c6c65723a20696e76656e746f7279203c20616c726561647920736f6c646044820152606401610807565b60135481606001516001600160f81b03161015610d3f5760405162461bcd60e51b815260206004820152602160248201527f53656c6c65723a20667265652071756f7461203c20616c7265616479207573656044820152601960fa1b6064820152608401610807565b600f54610100900460ff1615610d5c57600160c0820152600b5481525b600f5460ff1615610d8057600160a0820152600e546001600160f81b031660608201525b8051600b556020810151600c556040810151600d55606081015160808201511515600160f81b026001600160f81b0390911617600e5560a0810151600f805460c09093015115156101000261ff00199215159290921661ffff1990931692909217179055565b6006546001600160a01b03163314610e105760405162461bcd60e51b81526004016108079061370a565b805161081a90600990602084019061314d565b6000610e2f82846137e1565b9392505050565b6006546001600160a01b03163314610e605760405162461bcd60e51b81526004016108079061370a565b610e6861190b565b565b610a56838383604051806020016040528060008152506110c4565b6000818152600260205260408120546001600160a01b0316806107d75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610807565b60006001600160a01b038216610f675760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610807565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610fad5760405162461bcd60e51b81526004016108079061370a565b610e6860006119a8565b6006546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108079061370a565b610e686119fa565b6000610ff460115490565b905090565b60006018600061101261100d878787611a5f565b611aa5565b815260208101919091526040016000205460ff16949350505050565b60606001805461082d9061373f565b61105761104b868686611a5f565b60149084846018611ab0565b61106385600186611b59565b5050505050565b60195460ff166110ad5760405162461bcd60e51b815260206004820152600e60248201526d135a5b9d1a5b99c818db1bdcd95960921b6044820152606401610807565b61081a8282601a54611b59565b61081a8282612037565b6110ce338361168d565b6110ea5760405162461bcd60e51b81526004016108079061377a565b6110f6848484846120fe565b50505050565b6006546001600160a01b031633146111265760405162461bcd60e51b81526004016108079061370a565b600654600160a01b900460ff16156111505760405162461bcd60e51b81526004016108079061382a565b600e546001600160f81b03166111788261116960135490565b6111739084613854565b612131565b9150600082116111ca5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c65723a20467265652071756f746120657863656564656400000000006044820152606401610807565b600b546111da8361116960115490565b92506000831161121f5760405162461bcd60e51b815260206004820152601060248201526f14d95b1b195c8e8814dbdb19081bdd5d60821b6044820152606401610807565b61122b84846001612147565b611236601184612151565b611241601384612151565b8061124b60115490565b11156112595761125961386b565b8161126360135490565b11156110f6576110f661386b565b6006546001600160a01b0316331461129b5760405162461bcd60e51b81526004016108079061370a565b601a55565b6000818152600260205260409020546060906001600160a01b031661131f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b600061132961216e565b905060008151116113495760405180602001604052806000815250610e2f565b8061135384612178565b604051602001611364929190613881565b6040516020818303038152906040529392505050565b600980546113879061373f565b80601f01602080910402602001604051908101604052809291908181526020018280546113b39061373f565b80156114005780601f106113d557610100808354040283529160200191611400565b820191906000526020600020905b8154815290600101906020018083116113e357829003601f168201915b505050505081565b6000610e2f8383612276565b6006546001600160a01b0316331461143e5760405162461bcd60e51b81526004016108079061370a565b61081a6014826122ed565b6006546001600160a01b031633146114735760405162461bcd60e51b81526004016108079061370a565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6114e1816119a8565b50565b5490565b60006001600160e01b0319821663152a902d60e11b14806107d757506107d782612302565b6127106001600160601b038216111561157b5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610807565b6001600160a01b0382166115d15760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610807565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601655565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061163f82610e85565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610e2f836001600160a01b03841661230d565b6000818152600260205260408120546001600160a01b03166117065760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610807565b600061171183610e85565b9050806001600160a01b0316846001600160a01b0316148061174c5750836001600160a01b0316611741846108b0565b6001600160a01b0316145b8061175c575061175c8185611408565b949350505050565b826001600160a01b031661177782610e85565b6001600160a01b0316146117db5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610807565b6001600160a01b03821661183d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610807565b611848838383612400565b61185360008261160a565b6001600160a01b038316600090815260036020526040812080546001929061187c908490613854565b90915550506001600160a01b03821660009081526003602052604081208054600192906118aa9084906138b0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600654600160a01b900460ff1661195b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610807565b6006805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600654600160a01b900460ff1615611a245760405162461bcd60e51b81526004016108079061382a565b6006805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861198b3390565b604051606084811b6bffffffffffffffffffffffff1916602083015260348201849052605482018390529060740160405160208183030381529060405290509392505050565b60006107d78261240b565b6000611abb85611aa5565b60008181526020849052604090205490915060ff1615611b2c5760405162461bcd60e51b815260206004820152602660248201527f5369676e6174757265436865636b65723a204d65737361676520616c726561646044820152651e481d5cd95960d21b6064820152608401610807565b6000818152602083905260409020805460ff19166001179055611b5186828686612446565b505050505050565b6002600a541415611bac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600a55600654600160a01b900460ff1615611bdb5760405162461bcd60e51b81526004016108079061382a565b6040805160e081018252600b548152600c546020820152600d54918101829052600e546001600160f81b038116606083015260ff600160f81b909104811615156080830152600f54808216151560a0840152610100900416151560c08201529060009015611c5657611c51848360400151612131565b611c58565b835b9050600080836080015115611ca05760608401518451611c81916001600160f81b031690613854565b9150611c8c60135490565b601154611c999190613854565b9050611cb0565b83519150611cad60115490565b90505b611cbe836111738385613854565b925060008311611d035760405162461bcd60e51b815260206004820152601060248201526f14d95b1b195c8e8814dbdb19081bdd5d60821b6044820152606401610807565b602084015115611e5f57336001600160a01b038816811415906000903214801590611d375750326001600160a01b038a1614155b9050611d67858a6040518060400160405280600b81526020016a109d5e595c881b1a5b5a5d60aa1b8152506124aa565b94508115611da157611d9e85336040518060400160405280600c81526020016b14d95b99195c881b1a5b5a5d60a21b8152506124aa565b94505b8015611dd957611dd685326040518060400160405280600c81526020016b13dc9a59da5b881b1a5b5a5d60a21b8152506124aa565b94505b6001600160a01b03891660009081526012602052604081208054879290611e019084906138b0565b90915550508115611e31573360009081526012602052604081208054879290611e2b9084906138b0565b90915550505b8015611e5c573260009081526012602052604081208054879290611e569084906138b0565b90915550505b50505b6000611e6b8487610e23565b905080341015611ec157611e8b611e86633b9aca0083613816565b612178565b604051602001611e9b91906138c8565b60408051601f198184030181529082905262461bcd60e51b8252610807916004016132cb565b611ecd88856000612147565b611ed8601185612151565b84516011541115611eeb57611eeb61386b565b8015611f5057601054611f07906001600160a01b0316826124fc565b60105460408051868152602081018490526001600160a01b03909216917f01f51b99bd1c3cca301836178e5dee13aadfe44eff06dc3ddcbf3c9d058454f8910160405180910390a25b8034111561202857336000611f658334613854565b9050600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fb5576040519150601f19603f3d011682016040523d82523d6000602084013e611fba565b606091505b5091509150818190611fdf5760405162461bcd60e51b815260040161080791906132cb565b50836001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d8460405161201b91815260200190565b60405180910390a2505050505b50506001600a55505050505050565b3361204181612615565b6001600160a01b0316836001600160a01b031614156120f35781612066576001612069565b60005b6001600160a01b0382166000908152600760205260409020805460ff19166001838181111561209a5761209a61390d565b0217905550826001600160a01b0316816001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31846040516120e6911515815260200190565b60405180910390a3505050565b610a5681848461276c565b612109848484611764565b61211584848484612833565b6110f65760405162461bcd60e51b815260040161080790613923565b60008183106121405781610e2f565b5090919050565b610a568383612931565b8082600001600082825461216591906138b0565b90915550505050565b6060610ff461294b565b60608161219c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156121c657806121b081613975565b91506121bf9050600a83613816565b91506121a0565b60008167ffffffffffffffff8111156121e1576121e16133d3565b6040519080825280601f01601f19166020018201604052801561220b576020820181803683370190505b5090505b841561175c57612220600183613854565b915061222d600a86613990565b6122389060306138b0565b60f81b81838151811061224d5761224d6139a4565b60200101906001600160f81b031916908160001a90535061226f600a86613816565b945061220f565b6001600160a01b03808316600090815260056020908152604080832093851683529290529081205460ff16156122ae575060016107d7565b6001600160a01b03831660009081526007602052604081205460ff1660018111156122db576122db61390d565b148015610e2f5750610e2f838361295a565b6000610e2f836001600160a01b038416612999565b60006107d7826129e8565b600081815260018301602052604081205480156123f6576000612331600183613854565b855490915060009061234590600190613854565b90508181146123aa576000866000018281548110612365576123656139a4565b9060005260206000200154905080876000018481548110612388576123886139a4565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806123bb576123bb6139ba565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d7565b60009150506107d7565b610a56838383612a38565b60006124178251612178565b826040516020016124299291906139d0565b604051602081830303815290604052805190602001209050919050565b61245284848484612b34565b6110f65760405162461bcd60e51b815260206004820152602360248201527f5369676e6174757265436865636b65723a20496e76616c6964207369676e617460448201526275726560e81b6064820152608401610807565b6001600160a01b038216600090815260126020526040812054600c5482916124d191613854565b9050806124e95782604051602001611e9b9190613a2b565b6124f38582612131565b95945050505050565b8047101561254c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610807565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612599576040519150601f19603f3d011682016040523d82523d6000602084013e61259e565b606091505b5050905080610a565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610807565b60008046806001811461264a576089811461266657600481146126825762013881811461269e5761053981146126ba576126d2565b73a5409ec958c83c3f309868babaca7c86dcb077c192506126d2565b7358807bad0b376efc12f5ad86aac70e78ed67deae92506126d2565b73f57b2c51ded3a29e6891aba85459d600256cf31792506126d2565b73ff7ca10af37178bdd056628ef42fd7f799fac77c92506126d2565b73e1a2bbc877b29adbc56d2659dbcb0ae14ee6207192505b506001600160a01b03821615806126e95750806089145b806126f657508062013881145b15612702575092915050565b60405163c455279160e01b81526001600160a01b03858116600483015283169063c455279190602401602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190613a5b565b816001600160a01b0316836001600160a01b031614156127ce5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610807565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016120e6565b60006001600160a01b0384163b1561292657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612877903390899088908890600401613a78565b6020604051808303816000875af19250505080156128b2575060408051601f3d908101601f191682019092526128af91810190613ab5565b60015b61290c573d8080156128e0576040519150601f19603f3d011682016040523d82523d6000602084013e6128e5565b606091505b5080516129045760405162461bcd60e51b815260040161080790613923565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061175c565b506001949350505050565b61081a828260405180602001604052806000815250612b80565b60606009805461082d9061373f565b60008061296684612615565b90506001600160a01b0381161580159061175c5750826001600160a01b0316816001600160a01b03161491505092915050565b60008181526001830160205260408120546129e0575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d7565b5060006107d7565b60006001600160e01b031982166380ac58cd60e01b1480612a1957506001600160e01b03198216635b5e139f60e01b145b806107d757506301ffc9a760e01b6001600160e01b03198316146107d7565b612a43838383612bca565b6001600160a01b0382161580612a85575060016001600160a01b03831660009081526007602052604090205460ff166001811115612a8357612a8361390d565b145b15612a8f57505050565b6000612a9a83612615565b90506001600160a01b038116612ad15750506001600160a01b03166000908152600760205260409020805460ff1916600117905550565b612ada83610efc565b6110f657806001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c316001604051612b26911515815260200190565b60405180910390a350505050565b60006124f3612b798585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c3892505050565b8690612c5c565b6000612b8b60085490565b90506000612b9984836138b0565b90505b80821015612bbf57612baf858385612c7e565b612bb882613975565b9150612b9c565b611063600885612151565b600654600160a01b900460ff1615610a565760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610807565b6000806000612c478585612cb1565b91509150612c5481612d1e565b509392505050565b6001600160a01b03811660009081526001830160205260408120541515610e2f565b612c888383612ed9565b612c956000848484612833565b610a565760405162461bcd60e51b815260040161080790613923565b600080825160411415612ce85760208301516040840151606085015160001a612cdc87828585613027565b94509450505050610bf1565b825160401415612d125760208301516040840151612d07868383613114565b935093505050610bf1565b50600090506002610bf1565b6000816004811115612d3257612d3261390d565b1415612d3b5750565b6001816004811115612d4f57612d4f61390d565b1415612d9d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610807565b6002816004811115612db157612db161390d565b1415612dff5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610807565b6003816004811115612e1357612e1361390d565b1415612e6c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610807565b6004816004811115612e8057612e8061390d565b14156114e15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610807565b6001600160a01b038216612f2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610807565b6000818152600260205260409020546001600160a01b031615612f945760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610807565b612fa060008383612400565b6001600160a01b0382166000908152600360205260408120805460019290612fc99084906138b0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561305e575060009050600361310b565b8460ff16601b1415801561307657508460ff16601c14155b15613087575060009050600461310b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156130db573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131045760006001925092505061310b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161313160ff86901c601b6138b0565b905061313f87828885613027565b935093505050935093915050565b8280546131599061373f565b90600052602060002090601f01602090048101928261317b57600085556131c1565b82601f1061319457805160ff19168380011785556131c1565b828001600101855582156131c1579182015b828111156131c15782518255916020019190600101906131a6565b506131cd9291506131d1565b5090565b5b808211156131cd57600081556001016131d2565b6001600160e01b0319811681146114e157600080fd5b60006020828403121561320e57600080fd5b8135610e2f816131e6565b6001600160a01b03811681146114e157600080fd5b6000806040838503121561324157600080fd5b823561324c81613219565b915060208301356001600160601b038116811461326857600080fd5b809150509250929050565b60005b8381101561328e578181015183820152602001613276565b838111156110f65750506000910152565b600081518084526132b7816020860160208601613273565b601f01601f19169290920160200192915050565b602081526000610e2f602083018461329f565b6000602082840312156132f057600080fd5b5035919050565b6000806040838503121561330a57600080fd5b823561331581613219565b946020939093013593505050565b60006020828403121561333557600080fd5b8135610e2f81613219565b60008060006060848603121561335557600080fd5b833561336081613219565b9250602084013561337081613219565b929592945050506040919091013590565b8035801515811461339157600080fd5b919050565b6000602082840312156133a857600080fd5b610e2f82613381565b600080604083850312156133c457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561340c5761340c6133d3565b60405290565b600060e0828403121561342457600080fd5b61342c6133e9565b82358152602080840135908201526040808401359082015260608301356001600160f81b038116811461345e57600080fd5b606082015261346f60808401613381565b608082015261348060a08401613381565b60a082015261349160c08401613381565b60c08201529392505050565b600067ffffffffffffffff808411156134b8576134b86133d3565b604051601f8501601f19908116603f011681019082821181831017156134e0576134e06133d3565b816040528093508581528686860111156134f957600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561352557600080fd5b813567ffffffffffffffff81111561353c57600080fd5b8201601f8101841361354d57600080fd5b61175c8482356020840161349d565b60008060006060848603121561357157600080fd5b833561357c81613219565b95602085013595506040909401359392505050565b6000806000806000608086880312156135a957600080fd5b85356135b481613219565b94506020860135935060408601359250606086013567ffffffffffffffff808211156135df57600080fd5b818801915088601f8301126135f357600080fd5b81358181111561360257600080fd5b89602082850101111561361457600080fd5b9699959850939650602001949392505050565b6000806040838503121561363a57600080fd5b823561364581613219565b915061365360208401613381565b90509250929050565b6000806000806080858703121561367257600080fd5b843561367d81613219565b9350602085013561368d81613219565b925060408501359150606085013567ffffffffffffffff8111156136b057600080fd5b8501601f810187136136c157600080fd5b6136d08782356020840161349d565b91505092959194509250565b600080604083850312156136ef57600080fd5b82356136fa81613219565b9150602083013561326881613219565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061375357607f821691505b6020821081141561377457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156137fb576137fb6137cb565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261382557613825613800565b500490565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b600082821015613866576138666137cb565b500390565b634e487b7160e01b600052600160045260246000fd5b60008351613893818460208801613273565b8351908301906138a7818360208801613273565b01949350505050565b600082198211156138c3576138c36137cb565b500190565b6d029b2b63632b91d1021b7b9ba39960951b8152600082516138f181600e850160208701613273565b64204757656960d81b600e939091019283015250601301919050565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415613989576139896137cb565b5060010190565b60008261399f5761399f613800565b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351613a0881601a850160208801613273565b835190830190613a1f81601a840160208801613273565b01601a01949350505050565b67029b2b63632b91d160c51b815260008251613a4e816008850160208701613273565b9190910160080192915050565b600060208284031215613a6d57600080fd5b8151610e2f81613219565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613aab9083018461329f565b9695505050505050565b600060208284031215613ac757600080fd5b8151610e2f816131e656fea2646970667358221220f38387089f3ca9cd9b6c296bf459a417c9697e23e4c99ed7929a8d40aed6413a64736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000ee8e538055cd3248880e52a1ae88d0dd42d8f38c0000000000000000000000008a95907dfa8bc631462f17d6ac731337e641a112
Deployed Bytecode
0x6080604052600436106102465760003560e01c80636352211e11610139578063a22cb465116100b6578063c62752551161007a578063c627525514610717578063c87b56dd14610737578063d547cfb714610757578063e985e9c51461076c578063eb12d61e1461078c578063f2fde38b146107ac57600080fd5b8063a22cb46514610616578063a945bf8014610636578063b88d4fde1461064c578063bb69b7ef1461066c578063bf62e21d146106f757600080fd5b80639106d7ba116100fd5780639106d7ba146105a65780639437bfa0146105bb57806395d89b41146105db57806396d66de0146105f05780639f93f7791461060357600080fd5b80636352211e1461051e57806370a082311461053e578063715018a61461055e5780638456cb59146105735780638da5cb5b1461058857600080fd5b80632a55205a116101c75780633f4ba83a1161018b5780633f4ba83a1461048057806342842e0e1461049557806353ac010a146104b55780635a028400146104cf5780635c975abb146104ff57600080fd5b80632a55205a146103c15780632f274bd41461040057806330176e131461042057806338af3eed146104405780633ec02e141461046057600080fd5b80630e316ab71161020e5780630e316ab71461031c57806318160ddd1461033c5780631c31f7101461036157806323b872dd14610381578063254a4737146103a157600080fd5b806301ffc9a71461024b57806302fa7c471461028057806306fdde03146102a2578063081812fc146102c4578063095ea7b3146102fc575b600080fd5b34801561025757600080fd5b5061026b6102663660046131fc565b6107cc565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102a061029b36600461322e565b6107dd565b005b3480156102ae57600080fd5b506102b761081e565b60405161027791906132cb565b3480156102d057600080fd5b506102e46102df3660046132de565b6108b0565b6040516001600160a01b039091168152602001610277565b34801561030857600080fd5b506102a06103173660046132f7565b610945565b34801561032857600080fd5b506102a0610337366004613323565b610a5b565b34801561034857600080fd5b506008546103539081565b604051908152602001610277565b34801561036d57600080fd5b506102a061037c366004613323565b610a90565b34801561038d57600080fd5b506102a061039c366004613340565b610adc565b3480156103ad57600080fd5b506102a06103bc366004613396565b610b0d565b3480156103cd57600080fd5b506103e16103dc3660046133b1565b610b4a565b604080516001600160a01b039093168352602083019190915201610277565b34801561040c57600080fd5b506102a061041b366004613412565b610bf8565b34801561042c57600080fd5b506102a061043b366004613513565b610de6565b34801561044c57600080fd5b506010546102e4906001600160a01b031681565b34801561046c57600080fd5b5061035361047b3660046133b1565b610e23565b34801561048c57600080fd5b506102a0610e36565b3480156104a157600080fd5b506102a06104b0366004613340565b610e6a565b3480156104c157600080fd5b5060195461026b9060ff1681565b3480156104db57600080fd5b5061026b6104ea3660046132de565b60186020526000908152604090205460ff1681565b34801561050b57600080fd5b50600654600160a01b900460ff1661026b565b34801561052a57600080fd5b506102e46105393660046132de565b610e85565b34801561054a57600080fd5b50610353610559366004613323565b610efc565b34801561056a57600080fd5b506102a0610f83565b34801561057f57600080fd5b506102a0610fb7565b34801561059457600080fd5b506006546001600160a01b03166102e4565b3480156105b257600080fd5b50610353610fe9565b3480156105c757600080fd5b5061026b6105d636600461355c565b610ff9565b3480156105e757600080fd5b506102b761102e565b6102a06105fe366004613591565b61103d565b6102a06106113660046132f7565b61106a565b34801561062257600080fd5b506102a0610631366004613627565b6110ba565b34801561064257600080fd5b50610353601a5481565b34801561065857600080fd5b506102a061066736600461365c565b6110c4565b34801561067857600080fd5b50600b54600c54600d54600e54600f546106b4949392916001600160f81b0381169160ff600160f81b9092048216918181169161010090041687565b604080519788526020880196909652948601939093526001600160f81b03909116606085015215156080840152151560a0830152151560c082015260e001610277565b34801561070357600080fd5b506102a06107123660046132f7565b6110fc565b34801561072357600080fd5b506102a06107323660046132de565b611271565b34801561074357600080fd5b506102b76107523660046132de565b6112a0565b34801561076357600080fd5b506102b761137a565b34801561077857600080fd5b5061026b6107873660046136dc565b611408565b34801561079857600080fd5b506102a06107a7366004613323565b611414565b3480156107b857600080fd5b506102a06107c7366004613323565b611449565b60006107d7826114e8565b92915050565b6006546001600160a01b031633146108105760405162461bcd60e51b81526004016108079061370a565b60405180910390fd5b61081a828261150d565b5050565b60606000805461082d9061373f565b80601f01602080910402602001604051908101604052809291908181526020018280546108599061373f565b80156108a65780601f1061087b576101008083540402835291602001916108a6565b820191906000526020600020905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610807565b506000908152600460205260409020546001600160a01b031690565b600061095082610e85565b9050806001600160a01b0316836001600160a01b031614156109be5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610807565b336001600160a01b03821614806109da57506109da8133611408565b610a4c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610807565b610a56838361160a565b505050565b6006546001600160a01b03163314610a855760405162461bcd60e51b81526004016108079061370a565b61081a601482611678565b6006546001600160a01b03163314610aba5760405162461bcd60e51b81526004016108079061370a565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610ae6338261168d565b610b025760405162461bcd60e51b81526004016108079061377a565b610a56838383611764565b6006546001600160a01b03163314610b375760405162461bcd60e51b81526004016108079061370a565b6019805460ff1916911515919091179055565b60008281526017602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610bbf5750604080518082019091526016546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610bde906001600160601b0316876137e1565b610be89190613816565b91519350909150505b9250929050565b6006546001600160a01b03163314610c225760405162461bcd60e51b81526004016108079061370a565b80606001516001600160f81b031681600001511015610c835760405162461bcd60e51b815260206004820152601c60248201527f53656c6c65723a2065786365737369766520667265652071756f7461000000006044820152606401610807565b60115481511015610cd65760405162461bcd60e51b815260206004820181905260248201527f53656c6c65723a20696e76656e746f7279203c20616c726561647920736f6c646044820152606401610807565b60135481606001516001600160f81b03161015610d3f5760405162461bcd60e51b815260206004820152602160248201527f53656c6c65723a20667265652071756f7461203c20616c7265616479207573656044820152601960fa1b6064820152608401610807565b600f54610100900460ff1615610d5c57600160c0820152600b5481525b600f5460ff1615610d8057600160a0820152600e546001600160f81b031660608201525b8051600b556020810151600c556040810151600d55606081015160808201511515600160f81b026001600160f81b0390911617600e5560a0810151600f805460c09093015115156101000261ff00199215159290921661ffff1990931692909217179055565b6006546001600160a01b03163314610e105760405162461bcd60e51b81526004016108079061370a565b805161081a90600990602084019061314d565b6000610e2f82846137e1565b9392505050565b6006546001600160a01b03163314610e605760405162461bcd60e51b81526004016108079061370a565b610e6861190b565b565b610a56838383604051806020016040528060008152506110c4565b6000818152600260205260408120546001600160a01b0316806107d75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610807565b60006001600160a01b038216610f675760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610807565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610fad5760405162461bcd60e51b81526004016108079061370a565b610e6860006119a8565b6006546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108079061370a565b610e686119fa565b6000610ff460115490565b905090565b60006018600061101261100d878787611a5f565b611aa5565b815260208101919091526040016000205460ff16949350505050565b60606001805461082d9061373f565b61105761104b868686611a5f565b60149084846018611ab0565b61106385600186611b59565b5050505050565b60195460ff166110ad5760405162461bcd60e51b815260206004820152600e60248201526d135a5b9d1a5b99c818db1bdcd95960921b6044820152606401610807565b61081a8282601a54611b59565b61081a8282612037565b6110ce338361168d565b6110ea5760405162461bcd60e51b81526004016108079061377a565b6110f6848484846120fe565b50505050565b6006546001600160a01b031633146111265760405162461bcd60e51b81526004016108079061370a565b600654600160a01b900460ff16156111505760405162461bcd60e51b81526004016108079061382a565b600e546001600160f81b03166111788261116960135490565b6111739084613854565b612131565b9150600082116111ca5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c65723a20467265652071756f746120657863656564656400000000006044820152606401610807565b600b546111da8361116960115490565b92506000831161121f5760405162461bcd60e51b815260206004820152601060248201526f14d95b1b195c8e8814dbdb19081bdd5d60821b6044820152606401610807565b61122b84846001612147565b611236601184612151565b611241601384612151565b8061124b60115490565b11156112595761125961386b565b8161126360135490565b11156110f6576110f661386b565b6006546001600160a01b0316331461129b5760405162461bcd60e51b81526004016108079061370a565b601a55565b6000818152600260205260409020546060906001600160a01b031661131f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610807565b600061132961216e565b905060008151116113495760405180602001604052806000815250610e2f565b8061135384612178565b604051602001611364929190613881565b6040516020818303038152906040529392505050565b600980546113879061373f565b80601f01602080910402602001604051908101604052809291908181526020018280546113b39061373f565b80156114005780601f106113d557610100808354040283529160200191611400565b820191906000526020600020905b8154815290600101906020018083116113e357829003601f168201915b505050505081565b6000610e2f8383612276565b6006546001600160a01b0316331461143e5760405162461bcd60e51b81526004016108079061370a565b61081a6014826122ed565b6006546001600160a01b031633146114735760405162461bcd60e51b81526004016108079061370a565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b6114e1816119a8565b50565b5490565b60006001600160e01b0319821663152a902d60e11b14806107d757506107d782612302565b6127106001600160601b038216111561157b5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610807565b6001600160a01b0382166115d15760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610807565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601655565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061163f82610e85565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610e2f836001600160a01b03841661230d565b6000818152600260205260408120546001600160a01b03166117065760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610807565b600061171183610e85565b9050806001600160a01b0316846001600160a01b0316148061174c5750836001600160a01b0316611741846108b0565b6001600160a01b0316145b8061175c575061175c8185611408565b949350505050565b826001600160a01b031661177782610e85565b6001600160a01b0316146117db5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610807565b6001600160a01b03821661183d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610807565b611848838383612400565b61185360008261160a565b6001600160a01b038316600090815260036020526040812080546001929061187c908490613854565b90915550506001600160a01b03821660009081526003602052604081208054600192906118aa9084906138b0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600654600160a01b900460ff1661195b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610807565b6006805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600654600160a01b900460ff1615611a245760405162461bcd60e51b81526004016108079061382a565b6006805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861198b3390565b604051606084811b6bffffffffffffffffffffffff1916602083015260348201849052605482018390529060740160405160208183030381529060405290509392505050565b60006107d78261240b565b6000611abb85611aa5565b60008181526020849052604090205490915060ff1615611b2c5760405162461bcd60e51b815260206004820152602660248201527f5369676e6174757265436865636b65723a204d65737361676520616c726561646044820152651e481d5cd95960d21b6064820152608401610807565b6000818152602083905260409020805460ff19166001179055611b5186828686612446565b505050505050565b6002600a541415611bac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610807565b6002600a55600654600160a01b900460ff1615611bdb5760405162461bcd60e51b81526004016108079061382a565b6040805160e081018252600b548152600c546020820152600d54918101829052600e546001600160f81b038116606083015260ff600160f81b909104811615156080830152600f54808216151560a0840152610100900416151560c08201529060009015611c5657611c51848360400151612131565b611c58565b835b9050600080836080015115611ca05760608401518451611c81916001600160f81b031690613854565b9150611c8c60135490565b601154611c999190613854565b9050611cb0565b83519150611cad60115490565b90505b611cbe836111738385613854565b925060008311611d035760405162461bcd60e51b815260206004820152601060248201526f14d95b1b195c8e8814dbdb19081bdd5d60821b6044820152606401610807565b602084015115611e5f57336001600160a01b038816811415906000903214801590611d375750326001600160a01b038a1614155b9050611d67858a6040518060400160405280600b81526020016a109d5e595c881b1a5b5a5d60aa1b8152506124aa565b94508115611da157611d9e85336040518060400160405280600c81526020016b14d95b99195c881b1a5b5a5d60a21b8152506124aa565b94505b8015611dd957611dd685326040518060400160405280600c81526020016b13dc9a59da5b881b1a5b5a5d60a21b8152506124aa565b94505b6001600160a01b03891660009081526012602052604081208054879290611e019084906138b0565b90915550508115611e31573360009081526012602052604081208054879290611e2b9084906138b0565b90915550505b8015611e5c573260009081526012602052604081208054879290611e569084906138b0565b90915550505b50505b6000611e6b8487610e23565b905080341015611ec157611e8b611e86633b9aca0083613816565b612178565b604051602001611e9b91906138c8565b60408051601f198184030181529082905262461bcd60e51b8252610807916004016132cb565b611ecd88856000612147565b611ed8601185612151565b84516011541115611eeb57611eeb61386b565b8015611f5057601054611f07906001600160a01b0316826124fc565b60105460408051868152602081018490526001600160a01b03909216917f01f51b99bd1c3cca301836178e5dee13aadfe44eff06dc3ddcbf3c9d058454f8910160405180910390a25b8034111561202857336000611f658334613854565b9050600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fb5576040519150601f19603f3d011682016040523d82523d6000602084013e611fba565b606091505b5091509150818190611fdf5760405162461bcd60e51b815260040161080791906132cb565b50836001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d8460405161201b91815260200190565b60405180910390a2505050505b50506001600a55505050505050565b3361204181612615565b6001600160a01b0316836001600160a01b031614156120f35781612066576001612069565b60005b6001600160a01b0382166000908152600760205260409020805460ff19166001838181111561209a5761209a61390d565b0217905550826001600160a01b0316816001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31846040516120e6911515815260200190565b60405180910390a3505050565b610a5681848461276c565b612109848484611764565b61211584848484612833565b6110f65760405162461bcd60e51b815260040161080790613923565b60008183106121405781610e2f565b5090919050565b610a568383612931565b8082600001600082825461216591906138b0565b90915550505050565b6060610ff461294b565b60608161219c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156121c657806121b081613975565b91506121bf9050600a83613816565b91506121a0565b60008167ffffffffffffffff8111156121e1576121e16133d3565b6040519080825280601f01601f19166020018201604052801561220b576020820181803683370190505b5090505b841561175c57612220600183613854565b915061222d600a86613990565b6122389060306138b0565b60f81b81838151811061224d5761224d6139a4565b60200101906001600160f81b031916908160001a90535061226f600a86613816565b945061220f565b6001600160a01b03808316600090815260056020908152604080832093851683529290529081205460ff16156122ae575060016107d7565b6001600160a01b03831660009081526007602052604081205460ff1660018111156122db576122db61390d565b148015610e2f5750610e2f838361295a565b6000610e2f836001600160a01b038416612999565b60006107d7826129e8565b600081815260018301602052604081205480156123f6576000612331600183613854565b855490915060009061234590600190613854565b90508181146123aa576000866000018281548110612365576123656139a4565b9060005260206000200154905080876000018481548110612388576123886139a4565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806123bb576123bb6139ba565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d7565b60009150506107d7565b610a56838383612a38565b60006124178251612178565b826040516020016124299291906139d0565b604051602081830303815290604052805190602001209050919050565b61245284848484612b34565b6110f65760405162461bcd60e51b815260206004820152602360248201527f5369676e6174757265436865636b65723a20496e76616c6964207369676e617460448201526275726560e81b6064820152608401610807565b6001600160a01b038216600090815260126020526040812054600c5482916124d191613854565b9050806124e95782604051602001611e9b9190613a2b565b6124f38582612131565b95945050505050565b8047101561254c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610807565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612599576040519150601f19603f3d011682016040523d82523d6000602084013e61259e565b606091505b5050905080610a565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610807565b60008046806001811461264a576089811461266657600481146126825762013881811461269e5761053981146126ba576126d2565b73a5409ec958c83c3f309868babaca7c86dcb077c192506126d2565b7358807bad0b376efc12f5ad86aac70e78ed67deae92506126d2565b73f57b2c51ded3a29e6891aba85459d600256cf31792506126d2565b73ff7ca10af37178bdd056628ef42fd7f799fac77c92506126d2565b73e1a2bbc877b29adbc56d2659dbcb0ae14ee6207192505b506001600160a01b03821615806126e95750806089145b806126f657508062013881145b15612702575092915050565b60405163c455279160e01b81526001600160a01b03858116600483015283169063c455279190602401602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190613a5b565b816001600160a01b0316836001600160a01b031614156127ce5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610807565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016120e6565b60006001600160a01b0384163b1561292657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612877903390899088908890600401613a78565b6020604051808303816000875af19250505080156128b2575060408051601f3d908101601f191682019092526128af91810190613ab5565b60015b61290c573d8080156128e0576040519150601f19603f3d011682016040523d82523d6000602084013e6128e5565b606091505b5080516129045760405162461bcd60e51b815260040161080790613923565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061175c565b506001949350505050565b61081a828260405180602001604052806000815250612b80565b60606009805461082d9061373f565b60008061296684612615565b90506001600160a01b0381161580159061175c5750826001600160a01b0316816001600160a01b03161491505092915050565b60008181526001830160205260408120546129e0575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d7565b5060006107d7565b60006001600160e01b031982166380ac58cd60e01b1480612a1957506001600160e01b03198216635b5e139f60e01b145b806107d757506301ffc9a760e01b6001600160e01b03198316146107d7565b612a43838383612bca565b6001600160a01b0382161580612a85575060016001600160a01b03831660009081526007602052604090205460ff166001811115612a8357612a8361390d565b145b15612a8f57505050565b6000612a9a83612615565b90506001600160a01b038116612ad15750506001600160a01b03166000908152600760205260409020805460ff1916600117905550565b612ada83610efc565b6110f657806001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c316001604051612b26911515815260200190565b60405180910390a350505050565b60006124f3612b798585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c3892505050565b8690612c5c565b6000612b8b60085490565b90506000612b9984836138b0565b90505b80821015612bbf57612baf858385612c7e565b612bb882613975565b9150612b9c565b611063600885612151565b600654600160a01b900460ff1615610a565760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610807565b6000806000612c478585612cb1565b91509150612c5481612d1e565b509392505050565b6001600160a01b03811660009081526001830160205260408120541515610e2f565b612c888383612ed9565b612c956000848484612833565b610a565760405162461bcd60e51b815260040161080790613923565b600080825160411415612ce85760208301516040840151606085015160001a612cdc87828585613027565b94509450505050610bf1565b825160401415612d125760208301516040840151612d07868383613114565b935093505050610bf1565b50600090506002610bf1565b6000816004811115612d3257612d3261390d565b1415612d3b5750565b6001816004811115612d4f57612d4f61390d565b1415612d9d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610807565b6002816004811115612db157612db161390d565b1415612dff5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610807565b6003816004811115612e1357612e1361390d565b1415612e6c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610807565b6004816004811115612e8057612e8061390d565b14156114e15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610807565b6001600160a01b038216612f2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610807565b6000818152600260205260409020546001600160a01b031615612f945760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610807565b612fa060008383612400565b6001600160a01b0382166000908152600360205260408120805460019290612fc99084906138b0565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561305e575060009050600361310b565b8460ff16601b1415801561307657508460ff16601c14155b15613087575060009050600461310b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156130db573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131045760006001925092505061310b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161313160ff86901c601b6138b0565b905061313f87828885613027565b935093505050935093915050565b8280546131599061373f565b90600052602060002090601f01602090048101928261317b57600085556131c1565b82601f1061319457805160ff19168380011785556131c1565b828001600101855582156131c1579182015b828111156131c15782518255916020019190600101906131a6565b506131cd9291506131d1565b5090565b5b808211156131cd57600081556001016131d2565b6001600160e01b0319811681146114e157600080fd5b60006020828403121561320e57600080fd5b8135610e2f816131e6565b6001600160a01b03811681146114e157600080fd5b6000806040838503121561324157600080fd5b823561324c81613219565b915060208301356001600160601b038116811461326857600080fd5b809150509250929050565b60005b8381101561328e578181015183820152602001613276565b838111156110f65750506000910152565b600081518084526132b7816020860160208601613273565b601f01601f19169290920160200192915050565b602081526000610e2f602083018461329f565b6000602082840312156132f057600080fd5b5035919050565b6000806040838503121561330a57600080fd5b823561331581613219565b946020939093013593505050565b60006020828403121561333557600080fd5b8135610e2f81613219565b60008060006060848603121561335557600080fd5b833561336081613219565b9250602084013561337081613219565b929592945050506040919091013590565b8035801515811461339157600080fd5b919050565b6000602082840312156133a857600080fd5b610e2f82613381565b600080604083850312156133c457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561340c5761340c6133d3565b60405290565b600060e0828403121561342457600080fd5b61342c6133e9565b82358152602080840135908201526040808401359082015260608301356001600160f81b038116811461345e57600080fd5b606082015261346f60808401613381565b608082015261348060a08401613381565b60a082015261349160c08401613381565b60c08201529392505050565b600067ffffffffffffffff808411156134b8576134b86133d3565b604051601f8501601f19908116603f011681019082821181831017156134e0576134e06133d3565b816040528093508581528686860111156134f957600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561352557600080fd5b813567ffffffffffffffff81111561353c57600080fd5b8201601f8101841361354d57600080fd5b61175c8482356020840161349d565b60008060006060848603121561357157600080fd5b833561357c81613219565b95602085013595506040909401359392505050565b6000806000806000608086880312156135a957600080fd5b85356135b481613219565b94506020860135935060408601359250606086013567ffffffffffffffff808211156135df57600080fd5b818801915088601f8301126135f357600080fd5b81358181111561360257600080fd5b89602082850101111561361457600080fd5b9699959850939650602001949392505050565b6000806040838503121561363a57600080fd5b823561364581613219565b915061365360208401613381565b90509250929050565b6000806000806080858703121561367257600080fd5b843561367d81613219565b9350602085013561368d81613219565b925060408501359150606085013567ffffffffffffffff8111156136b057600080fd5b8501601f810187136136c157600080fd5b6136d08782356020840161349d565b91505092959194509250565b600080604083850312156136ef57600080fd5b82356136fa81613219565b9150602083013561326881613219565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061375357607f821691505b6020821081141561377457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156137fb576137fb6137cb565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261382557613825613800565b500490565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b600082821015613866576138666137cb565b500390565b634e487b7160e01b600052600160045260246000fd5b60008351613893818460208801613273565b8351908301906138a7818360208801613273565b01949350505050565b600082198211156138c3576138c36137cb565b500190565b6d029b2b63632b91d1021b7b9ba39960951b8152600082516138f181600e850160208701613273565b64204757656960d81b600e939091019283015250601301919050565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415613989576139896137cb565b5060010190565b60008261399f5761399f613800565b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351613a0881601a850160208801613273565b835190830190613a1f81601a840160208801613273565b01601a01949350505050565b67029b2b63632b91d160c51b815260008251613a4e816008850160208701613273565b9190910160080192915050565b600060208284031215613a6d57600080fd5b8151610e2f81613219565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613aab9083018461329f565b9695505050505050565b600060208284031215613ac757600080fd5b8151610e2f816131e656fea2646970667358221220f38387089f3ca9cd9b6c296bf459a417c9697e23e4c99ed7929a8d40aed6413a64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ee8e538055cd3248880e52a1ae88d0dd42d8f38c0000000000000000000000008a95907dfa8bc631462f17d6ac731337e641a112
-----Decoded View---------------
Arg [0] : beneficiary (address): 0xee8e538055Cd3248880e52a1ae88d0dD42d8f38C
Arg [1] : royaltyReceiver (address): 0x8a95907dfa8bC631462f17d6Ac731337e641A112
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ee8e538055cd3248880e52a1ae88d0dd42d8f38c
Arg [1] : 0000000000000000000000008a95907dfa8bc631462f17d6ac731337e641a112
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.