Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
Latest 25 from a total of 358 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint Whitelist | 19182745 | 165 days ago | IN | 0 ETH | 0.00880374 | ||||
Mint Whitelist | 19066152 | 182 days ago | IN | 0 ETH | 0.0010273 | ||||
Mint Whitelist | 19058004 | 183 days ago | IN | 0 ETH | 0.0018656 | ||||
Mint Whitelist | 19052373 | 184 days ago | IN | 0 ETH | 0.00132152 | ||||
Mint Whitelist | 18983257 | 193 days ago | IN | 0 ETH | 0.00362627 | ||||
Mint Whitelist | 18966376 | 196 days ago | IN | 0 ETH | 0.00178423 | ||||
Mint Whitelist | 18966236 | 196 days ago | IN | 0 ETH | 0.00288844 | ||||
Mint Whitelist | 18964763 | 196 days ago | IN | 0 ETH | 0.00353793 | ||||
Mint Whitelist | 18900829 | 205 days ago | IN | 0 ETH | 0.00303115 | ||||
Mint Whitelist | 18900810 | 205 days ago | IN | 0 ETH | 0.0039545 | ||||
Mint Whitelist | 18872479 | 209 days ago | IN | 0 ETH | 0.00222886 | ||||
Mint Whitelist | 18685928 | 235 days ago | IN | 0 ETH | 0.00330633 | ||||
Mint Whitelist | 18638420 | 242 days ago | IN | 0 ETH | 0.00233171 | ||||
Mint Whitelist | 18582455 | 249 days ago | IN | 0 ETH | 0.0026528 | ||||
Mint Whitelist | 18565729 | 252 days ago | IN | 0 ETH | 0.00843637 | ||||
Mint Whitelist | 18561056 | 252 days ago | IN | 0 ETH | 0.00272142 | ||||
Mint Whitelist | 18558850 | 253 days ago | IN | 0 ETH | 0.00364147 | ||||
Mint Whitelist | 18546050 | 255 days ago | IN | 0 ETH | 0.00414972 | ||||
Mint Whitelist | 18514302 | 259 days ago | IN | 0 ETH | 0.00700096 | ||||
Mint Whitelist | 18511780 | 259 days ago | IN | 0 ETH | 0.00293475 | ||||
Mint Whitelist | 18510406 | 260 days ago | IN | 0 ETH | 0.00271515 | ||||
Mint Whitelist | 18504275 | 260 days ago | IN | 0 ETH | 0.00178238 | ||||
Mint Whitelist | 18501594 | 261 days ago | IN | 0 ETH | 0.00151482 | ||||
Mint Whitelist | 18501325 | 261 days ago | IN | 0 ETH | 0.0018296 | ||||
Mint Whitelist | 18495062 | 262 days ago | IN | 0 ETH | 0.00199769 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NonFungibleHeroesComicMinter
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./INonFungibleHeroesComicToken.sol"; import "@openzeppelin/contracts/utils/Address.sol"; contract NonFungibleHeroesComicMinter is Ownable, ReentrancyGuard { // ======== Supply ========= uint256 public maxTokens; // ======== Sale Status ========= bool public saleIsActive = false; // ======== Current Token Issue ========= uint256 public currentIssue = 1; mapping (uint256 => bool) public issues; // ======== Claim Tracking ========= mapping(uint256 => mapping (address => uint256)) public whitelistClaimed; // ======== Whitelist Validation ========= bytes32 public whitelistMerkleRoot; // ======== External Storage Contract ========= INonFungibleHeroesComicToken public immutable token; // ======== Constructor ========= constructor(address contractAddress, uint256 tokenSupply) { token = INonFungibleHeroesComicToken(contractAddress); maxTokens = tokenSupply; issues[currentIssue] = true; } // ======== Modifier Checks ========= modifier isWhitelistMerkleRootSet() { require(whitelistMerkleRoot != 0, "Whitelist merkle root not set!"); _; } modifier isValidMerkleProof(address _address, bytes32[] calldata merkleProof, uint256 quantity) { require( MerkleProof.verify( merkleProof, whitelistMerkleRoot, keccak256(abi.encodePacked(keccak256(abi.encodePacked(_address, quantity))) ) ), "Address is not on whitelist!"); _; } modifier isSupplyAvailable(uint256 numberOfTokens) { uint256 supply = token.tokenCount(); require(supply + numberOfTokens <= maxTokens, "Exceeds max token supply!"); _; } modifier isSaleActive() { require(saleIsActive, "Sale is not active!"); _; } // ======== Mint Functions ========= /// @notice Allows a whitelisted user to mint /// @param merkleProof The merkle proof to check whitelist access /// @param requested The amount of tokens user wants to mint in this transaction /// @param quantityAllowed The amount of tokens user is able to mint, checks against the merkleroot function mintWhitelist(bytes32[] calldata merkleProof, uint requested, uint quantityAllowed) public isSaleActive() isWhitelistMerkleRootSet() isValidMerkleProof(msg.sender, merkleProof, quantityAllowed) isSupplyAvailable(requested) nonReentrant { require(whitelistClaimed[currentIssue][msg.sender] < quantityAllowed, "No more whitelist mints remaining!"); token.mint(requested, msg.sender); whitelistClaimed[currentIssue][msg.sender] += requested; } /// @notice Allows the dev team to mint tokens /// @param _to The address where minted tokens should be sent /// @param _reserveAmount the amount of tokens to mint function mintTeamTokens(address _to, uint256 _reserveAmount) public onlyOwner isSupplyAvailable(_reserveAmount) { token.mint(_reserveAmount, _to); } // ======== Whitelisting ========= /// @notice Allows the dev team to set the merkle root used for whitelist /// @param merkleRoot The merkle root generated offchain function setWhitelistMerkleRoot(bytes32 merkleRoot) external onlyOwner { whitelistMerkleRoot = merkleRoot; } /// @notice Function to check if a user is whitelisted /// @param _address The address to check /// @param merkleProof The merkle proof generated offchain /// @param quantityAllowed The number of tokens a user thinks they can mint function isWhitelisted(address _address, bytes32[] calldata merkleProof, uint quantityAllowed) external view isValidMerkleProof(_address, merkleProof, quantityAllowed) returns (bool) { return true; } /// @notice Function to check the number of tokens a user has minted /// @param _address The address to check function isWhitelistClaimed(address _address) external view returns (uint) { return whitelistClaimed[currentIssue][_address]; } // ======== State Management ========= /// @notice Function to flip sale status function flipSaleStatus() public onlyOwner { saleIsActive = !saleIsActive; } // ======== Token Supply Management========= /// @notice Function to adjust max token supply /// @param newMaxTokenSupply The new token supply function adjustTokenSupply(uint256 newMaxTokenSupply) external onlyOwner { require(newMaxTokenSupply > token.tokenCount(), "New token supply must be greater than token count!"); maxTokens = newMaxTokenSupply; } /// @notice Function to update the current series /// @param newCurrentIssue The new current series function updateCurrentIssue(uint256 newCurrentIssue) external onlyOwner { currentIssue = newCurrentIssue; if(!issues[newCurrentIssue]) { issues[newCurrentIssue] = true; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT 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 // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } }
// Contract based on https://docs.openzeppelin.com/contracts/3.x/erc721 // SPDX-License-Identifier: MIT /// @title Interface for NonFungibleHeroesComicToken pragma solidity 0.8.11; abstract contract INonFungibleHeroesComicToken { function setProvenanceHash(string memory _provenanceHash) virtual external; function mint(uint256 _count, address _recipient) virtual external; function setBaseURI(string memory baseURI) virtual external; function updateMinter(address _minter) virtual external; function lockMinter() virtual external; function tokenCount() virtual external returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"newMaxTokenSupply","type":"uint256"}],"name":"adjustTokenSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIssue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelistClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"quantityAllowed","type":"uint256"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"issues","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_reserveAmount","type":"uint256"}],"name":"mintTeamTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"quantityAllowed","type":"uint256"}],"name":"mintWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"setWhitelistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract INonFungibleHeroesComicToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCurrentIssue","type":"uint256"}],"name":"updateCurrentIssue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040526000600360006101000a81548160ff02191690831515021790555060016004553480156200003157600080fd5b506040516200201138038062002011833981810160405281019062000057919062000260565b620000776200006b620000ef60201b60201c565b620000f760201b60201c565b600180819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600281905550600160056000600454815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620002a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001ed82620001c0565b9050919050565b620001ff81620001e0565b81146200020b57600080fd5b50565b6000815190506200021f81620001f4565b92915050565b6000819050919050565b6200023a8162000225565b81146200024657600080fd5b50565b6000815190506200025a816200022f565b92915050565b600080604083850312156200027a5762000279620001bb565b5b60006200028a858286016200020e565b92505060206200029d8582860162000249565b9150509250929050565b608051611d2b620002e6600039600081816104ec015281816106b1015281816108390152818161091c01528181610d0701526110470152611d2b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063aa98e0c6116100a2578063ce9b806011610071578063ce9b8060146102a5578063e8315742146102d5578063eb8d2444146102f3578063f2fde38b14610311578063fc0c546a1461032d57610116565b8063aa98e0c614610245578063ac621b0f14610263578063bd32fb661461027f578063ce03ec931461029b57610116565b8063715018a6116100e9578063715018a6146101a15780638521b8e3146101ab5780638da5cb5b146101db5780639a679c42146101f9578063a371a0621461021557610116565b806304e15de51461011b5780631393f8bc1461014b5780632ef2b9e0146101695780635057afb414610185575b600080fd5b6101356004803603810190610130919061122b565b61034b565b6040516101429190611273565b60405180910390f35b61015361036b565b604051610160919061129d565b60405180910390f35b610183600480360381019061017e919061131d565b610371565b005b61019f600480360381019061019a91906113ef565b6107b8565b005b6101a96109ad565b005b6101c560048036038101906101c0919061142f565b610a35565b6040516101d2919061129d565b60405180910390f35b6101e3610a91565b6040516101f0919061146b565b60405180910390f35b610213600480360381019061020e919061122b565b610aba565b005b61022f600480360381019061022a9190611486565b610b92565b60405161023c9190611273565b60405180910390f35b61024d610c83565b60405161025a9190611513565b60405180910390f35b61027d6004803603810190610278919061122b565b610c89565b005b6102996004803603810190610294919061155a565b610de1565b005b6102a3610e67565b005b6102bf60048036038101906102ba9190611587565b610f0f565b6040516102cc919061129d565b60405180910390f35b6102dd610f34565b6040516102ea919061129d565b60405180910390f35b6102fb610f3a565b6040516103089190611273565b60405180910390f35b61032b6004803603810190610326919061142f565b610f4d565b005b610335611045565b6040516103429190611626565b60405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60045481565b600360009054906101000a900460ff166103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b79061169e565b60405180910390fd5b6000801b6007541415610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9061170a565b60405180910390fd5b338484836104a8838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610467929190611793565b6040516020818303038152906040528051906020012060405160200161048d91906117e0565b60405160208183030381529060405280519060200120611069565b6104e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de90611847565b60405180910390fd5b8560007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057b919061187c565b9050600254828261058c91906118d8565b11156105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c49061197a565b60405180910390fd5b60026001541415610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a906119e6565b60405180910390fd5b60026001819055508660066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106106af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a690611a78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166394bf804d89336040518363ffffffff1660e01b815260040161070a929190611a98565b600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b505050508760066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079e91906118d8565b925050819055506001808190555050505050505050505050565b6107c061111f565b73ffffffffffffffffffffffffffffffffffffffff166107de610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b90611b0d565b60405180910390fd5b8060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c8919061187c565b905060025482826108d991906118d8565b111561091a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109119061197a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166394bf804d84866040518363ffffffff1660e01b8152600401610975929190611a98565b600060405180830381600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b5050505050505050565b6109b561111f565b73ffffffffffffffffffffffffffffffffffffffff166109d3610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2090611b0d565b60405180910390fd5b610a336000611127565b565b600060066000600454815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ac261111f565b73ffffffffffffffffffffffffffffffffffffffff16610ae0610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90611b0d565b60405180910390fd5b806004819055506005600082815260200190815260200160002060009054906101000a900460ff16610b8f5760016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b600084848484610c34838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610bf3929190611793565b60405160208183030381529060405280519060200120604051602001610c1991906117e0565b60405160208183030381529060405280519060200120611069565b610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90611847565b60405180910390fd5b6001945050505050949350505050565b60075481565b610c9161111f565b73ffffffffffffffffffffffffffffffffffffffff16610caf610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90611b0d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d96919061187c565b8111610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90611b9f565b60405180910390fd5b8060028190555050565b610de961111f565b73ffffffffffffffffffffffffffffffffffffffff16610e07610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490611b0d565b60405180910390fd5b8060078190555050565b610e6f61111f565b73ffffffffffffffffffffffffffffffffffffffff16610e8d610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90611b0d565b60405180910390fd5b600360009054906101000a900460ff1615600360006101000a81548160ff021916908315150217905550565b6006602052816000526040600020602052806000526040600020600091509150505481565b60025481565b600360009054906101000a900460ff1681565b610f5561111f565b73ffffffffffffffffffffffffffffffffffffffff16610f73610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090611b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090611c31565b60405180910390fd5b61104281611127565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008082905060005b85518110156111115760008682815181106110905761108f611c51565b5b602002602001015190508083116110d15782816040516020016110b4929190611c80565b6040516020818303038152906040528051906020012092506110fd565b80836040516020016110e4929190611c80565b6040516020818303038152906040528051906020012092505b50808061110990611cac565b915050611072565b508381149150509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600080fd5b6000819050919050565b611208816111f5565b811461121357600080fd5b50565b600081359050611225816111ff565b92915050565b600060208284031215611241576112406111eb565b5b600061124f84828501611216565b91505092915050565b60008115159050919050565b61126d81611258565b82525050565b60006020820190506112886000830184611264565b92915050565b611297816111f5565b82525050565b60006020820190506112b2600083018461128e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112dd576112dc6112b8565b5b8235905067ffffffffffffffff8111156112fa576112f96112bd565b5b602083019150836020820283011115611316576113156112c2565b5b9250929050565b60008060008060608587031215611337576113366111eb565b5b600085013567ffffffffffffffff811115611355576113546111f0565b5b611361878288016112c7565b9450945050602061137487828801611216565b925050604061138587828801611216565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113bc82611391565b9050919050565b6113cc816113b1565b81146113d757600080fd5b50565b6000813590506113e9816113c3565b92915050565b60008060408385031215611406576114056111eb565b5b6000611414858286016113da565b925050602061142585828601611216565b9150509250929050565b600060208284031215611445576114446111eb565b5b6000611453848285016113da565b91505092915050565b611465816113b1565b82525050565b6000602082019050611480600083018461145c565b92915050565b600080600080606085870312156114a05761149f6111eb565b5b60006114ae878288016113da565b945050602085013567ffffffffffffffff8111156114cf576114ce6111f0565b5b6114db878288016112c7565b935093505060406114ee87828801611216565b91505092959194509250565b6000819050919050565b61150d816114fa565b82525050565b60006020820190506115286000830184611504565b92915050565b611537816114fa565b811461154257600080fd5b50565b6000813590506115548161152e565b92915050565b6000602082840312156115705761156f6111eb565b5b600061157e84828501611545565b91505092915050565b6000806040838503121561159e5761159d6111eb565b5b60006115ac85828601611216565b92505060206115bd858286016113da565b9150509250929050565b6000819050919050565b60006115ec6115e76115e284611391565b6115c7565b611391565b9050919050565b60006115fe826115d1565b9050919050565b6000611610826115f3565b9050919050565b61162081611605565b82525050565b600060208201905061163b6000830184611617565b92915050565b600082825260208201905092915050565b7f53616c65206973206e6f74206163746976652100000000000000000000000000600082015250565b6000611688601383611641565b915061169382611652565b602082019050919050565b600060208201905081810360008301526116b78161167b565b9050919050565b7f57686974656c697374206d65726b6c6520726f6f74206e6f7420736574210000600082015250565b60006116f4601e83611641565b91506116ff826116be565b602082019050919050565b60006020820190508181036000830152611723816116e7565b9050919050565b60008160601b9050919050565b60006117428261172a565b9050919050565b600061175482611737565b9050919050565b61176c611767826113b1565b611749565b82525050565b6000819050919050565b61178d611788826111f5565b611772565b82525050565b600061179f828561175b565b6014820191506117af828461177c565b6020820191508190509392505050565b6000819050919050565b6117da6117d5826114fa565b6117bf565b82525050565b60006117ec82846117c9565b60208201915081905092915050565b7f41646472657373206973206e6f74206f6e2077686974656c6973742100000000600082015250565b6000611831601c83611641565b915061183c826117fb565b602082019050919050565b6000602082019050818103600083015261186081611824565b9050919050565b600081519050611876816111ff565b92915050565b600060208284031215611892576118916111eb565b5b60006118a084828501611867565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118e3826111f5565b91506118ee836111f5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611923576119226118a9565b5b828201905092915050565b7f45786365656473206d617820746f6b656e20737570706c792100000000000000600082015250565b6000611964601983611641565b915061196f8261192e565b602082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006119d0601f83611641565b91506119db8261199a565b602082019050919050565b600060208201905081810360008301526119ff816119c3565b9050919050565b7f4e6f206d6f72652077686974656c697374206d696e74732072656d61696e696e60008201527f6721000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a62602283611641565b9150611a6d82611a06565b604082019050919050565b60006020820190508181036000830152611a9181611a55565b9050919050565b6000604082019050611aad600083018561128e565b611aba602083018461145c565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611af7602083611641565b9150611b0282611ac1565b602082019050919050565b60006020820190508181036000830152611b2681611aea565b9050919050565b7f4e657720746f6b656e20737570706c79206d757374206265206772656174657260008201527f207468616e20746f6b656e20636f756e74210000000000000000000000000000602082015250565b6000611b89603283611641565b9150611b9482611b2d565b604082019050919050565b60006020820190508181036000830152611bb881611b7c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c1b602683611641565b9150611c2682611bbf565b604082019050919050565b60006020820190508181036000830152611c4a81611c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611c8c82856117c9565b602082019150611c9c82846117c9565b6020820191508190509392505050565b6000611cb7826111f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cea57611ce96118a9565b5b60018201905091905056fea26469706673582212201d29010ac67452f226df94d780dfc35a7645a8b5145fbd9569eb84f07b283f6d64736f6c634300080b00330000000000000000000000006d34aeb43e9051254c603967459869b8409614db0000000000000000000000000000000000000000000000000000000000002710
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063aa98e0c6116100a2578063ce9b806011610071578063ce9b8060146102a5578063e8315742146102d5578063eb8d2444146102f3578063f2fde38b14610311578063fc0c546a1461032d57610116565b8063aa98e0c614610245578063ac621b0f14610263578063bd32fb661461027f578063ce03ec931461029b57610116565b8063715018a6116100e9578063715018a6146101a15780638521b8e3146101ab5780638da5cb5b146101db5780639a679c42146101f9578063a371a0621461021557610116565b806304e15de51461011b5780631393f8bc1461014b5780632ef2b9e0146101695780635057afb414610185575b600080fd5b6101356004803603810190610130919061122b565b61034b565b6040516101429190611273565b60405180910390f35b61015361036b565b604051610160919061129d565b60405180910390f35b610183600480360381019061017e919061131d565b610371565b005b61019f600480360381019061019a91906113ef565b6107b8565b005b6101a96109ad565b005b6101c560048036038101906101c0919061142f565b610a35565b6040516101d2919061129d565b60405180910390f35b6101e3610a91565b6040516101f0919061146b565b60405180910390f35b610213600480360381019061020e919061122b565b610aba565b005b61022f600480360381019061022a9190611486565b610b92565b60405161023c9190611273565b60405180910390f35b61024d610c83565b60405161025a9190611513565b60405180910390f35b61027d6004803603810190610278919061122b565b610c89565b005b6102996004803603810190610294919061155a565b610de1565b005b6102a3610e67565b005b6102bf60048036038101906102ba9190611587565b610f0f565b6040516102cc919061129d565b60405180910390f35b6102dd610f34565b6040516102ea919061129d565b60405180910390f35b6102fb610f3a565b6040516103089190611273565b60405180910390f35b61032b6004803603810190610326919061142f565b610f4d565b005b610335611045565b6040516103429190611626565b60405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b60045481565b600360009054906101000a900460ff166103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b79061169e565b60405180910390fd5b6000801b6007541415610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9061170a565b60405180910390fd5b338484836104a8838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610467929190611793565b6040516020818303038152906040528051906020012060405160200161048d91906117e0565b60405160208183030381529060405280519060200120611069565b6104e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de90611847565b60405180910390fd5b8560007f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057b919061187c565b9050600254828261058c91906118d8565b11156105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c49061197a565b60405180910390fd5b60026001541415610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a906119e6565b60405180910390fd5b60026001819055508660066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106106af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a690611a78565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff166394bf804d89336040518363ffffffff1660e01b815260040161070a929190611a98565b600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b505050508760066000600454815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079e91906118d8565b925050819055506001808190555050505050505050505050565b6107c061111f565b73ffffffffffffffffffffffffffffffffffffffff166107de610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b90611b0d565b60405180910390fd5b8060007f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c8919061187c565b905060025482826108d991906118d8565b111561091a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109119061197a565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff166394bf804d84866040518363ffffffff1660e01b8152600401610975929190611a98565b600060405180830381600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b5050505050505050565b6109b561111f565b73ffffffffffffffffffffffffffffffffffffffff166109d3610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2090611b0d565b60405180910390fd5b610a336000611127565b565b600060066000600454815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ac261111f565b73ffffffffffffffffffffffffffffffffffffffff16610ae0610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90611b0d565b60405180910390fd5b806004819055506005600082815260200190815260200160002060009054906101000a900460ff16610b8f5760016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b600084848484610c34838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506007548684604051602001610bf3929190611793565b60405160208183030381529060405280519060200120604051602001610c1991906117e0565b60405160208183030381529060405280519060200120611069565b610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90611847565b60405180910390fd5b6001945050505050949350505050565b60075481565b610c9161111f565b73ffffffffffffffffffffffffffffffffffffffff16610caf610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90611b0d565b60405180910390fd5b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db73ffffffffffffffffffffffffffffffffffffffff16639f181b5e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d96919061187c565b8111610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90611b9f565b60405180910390fd5b8060028190555050565b610de961111f565b73ffffffffffffffffffffffffffffffffffffffff16610e07610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490611b0d565b60405180910390fd5b8060078190555050565b610e6f61111f565b73ffffffffffffffffffffffffffffffffffffffff16610e8d610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90611b0d565b60405180910390fd5b600360009054906101000a900460ff1615600360006101000a81548160ff021916908315150217905550565b6006602052816000526040600020602052806000526040600020600091509150505481565b60025481565b600360009054906101000a900460ff1681565b610f5561111f565b73ffffffffffffffffffffffffffffffffffffffff16610f73610a91565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090611b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090611c31565b60405180910390fd5b61104281611127565b50565b7f0000000000000000000000006d34aeb43e9051254c603967459869b8409614db81565b60008082905060005b85518110156111115760008682815181106110905761108f611c51565b5b602002602001015190508083116110d15782816040516020016110b4929190611c80565b6040516020818303038152906040528051906020012092506110fd565b80836040516020016110e4929190611c80565b6040516020818303038152906040528051906020012092505b50808061110990611cac565b915050611072565b508381149150509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600080fd5b6000819050919050565b611208816111f5565b811461121357600080fd5b50565b600081359050611225816111ff565b92915050565b600060208284031215611241576112406111eb565b5b600061124f84828501611216565b91505092915050565b60008115159050919050565b61126d81611258565b82525050565b60006020820190506112886000830184611264565b92915050565b611297816111f5565b82525050565b60006020820190506112b2600083018461128e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112dd576112dc6112b8565b5b8235905067ffffffffffffffff8111156112fa576112f96112bd565b5b602083019150836020820283011115611316576113156112c2565b5b9250929050565b60008060008060608587031215611337576113366111eb565b5b600085013567ffffffffffffffff811115611355576113546111f0565b5b611361878288016112c7565b9450945050602061137487828801611216565b925050604061138587828801611216565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113bc82611391565b9050919050565b6113cc816113b1565b81146113d757600080fd5b50565b6000813590506113e9816113c3565b92915050565b60008060408385031215611406576114056111eb565b5b6000611414858286016113da565b925050602061142585828601611216565b9150509250929050565b600060208284031215611445576114446111eb565b5b6000611453848285016113da565b91505092915050565b611465816113b1565b82525050565b6000602082019050611480600083018461145c565b92915050565b600080600080606085870312156114a05761149f6111eb565b5b60006114ae878288016113da565b945050602085013567ffffffffffffffff8111156114cf576114ce6111f0565b5b6114db878288016112c7565b935093505060406114ee87828801611216565b91505092959194509250565b6000819050919050565b61150d816114fa565b82525050565b60006020820190506115286000830184611504565b92915050565b611537816114fa565b811461154257600080fd5b50565b6000813590506115548161152e565b92915050565b6000602082840312156115705761156f6111eb565b5b600061157e84828501611545565b91505092915050565b6000806040838503121561159e5761159d6111eb565b5b60006115ac85828601611216565b92505060206115bd858286016113da565b9150509250929050565b6000819050919050565b60006115ec6115e76115e284611391565b6115c7565b611391565b9050919050565b60006115fe826115d1565b9050919050565b6000611610826115f3565b9050919050565b61162081611605565b82525050565b600060208201905061163b6000830184611617565b92915050565b600082825260208201905092915050565b7f53616c65206973206e6f74206163746976652100000000000000000000000000600082015250565b6000611688601383611641565b915061169382611652565b602082019050919050565b600060208201905081810360008301526116b78161167b565b9050919050565b7f57686974656c697374206d65726b6c6520726f6f74206e6f7420736574210000600082015250565b60006116f4601e83611641565b91506116ff826116be565b602082019050919050565b60006020820190508181036000830152611723816116e7565b9050919050565b60008160601b9050919050565b60006117428261172a565b9050919050565b600061175482611737565b9050919050565b61176c611767826113b1565b611749565b82525050565b6000819050919050565b61178d611788826111f5565b611772565b82525050565b600061179f828561175b565b6014820191506117af828461177c565b6020820191508190509392505050565b6000819050919050565b6117da6117d5826114fa565b6117bf565b82525050565b60006117ec82846117c9565b60208201915081905092915050565b7f41646472657373206973206e6f74206f6e2077686974656c6973742100000000600082015250565b6000611831601c83611641565b915061183c826117fb565b602082019050919050565b6000602082019050818103600083015261186081611824565b9050919050565b600081519050611876816111ff565b92915050565b600060208284031215611892576118916111eb565b5b60006118a084828501611867565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118e3826111f5565b91506118ee836111f5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611923576119226118a9565b5b828201905092915050565b7f45786365656473206d617820746f6b656e20737570706c792100000000000000600082015250565b6000611964601983611641565b915061196f8261192e565b602082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006119d0601f83611641565b91506119db8261199a565b602082019050919050565b600060208201905081810360008301526119ff816119c3565b9050919050565b7f4e6f206d6f72652077686974656c697374206d696e74732072656d61696e696e60008201527f6721000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a62602283611641565b9150611a6d82611a06565b604082019050919050565b60006020820190508181036000830152611a9181611a55565b9050919050565b6000604082019050611aad600083018561128e565b611aba602083018461145c565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611af7602083611641565b9150611b0282611ac1565b602082019050919050565b60006020820190508181036000830152611b2681611aea565b9050919050565b7f4e657720746f6b656e20737570706c79206d757374206265206772656174657260008201527f207468616e20746f6b656e20636f756e74210000000000000000000000000000602082015250565b6000611b89603283611641565b9150611b9482611b2d565b604082019050919050565b60006020820190508181036000830152611bb881611b7c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c1b602683611641565b9150611c2682611bbf565b604082019050919050565b60006020820190508181036000830152611c4a81611c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611c8c82856117c9565b602082019150611c9c82846117c9565b6020820191508190509392505050565b6000611cb7826111f5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cea57611ce96118a9565b5b60018201905091905056fea26469706673582212201d29010ac67452f226df94d780dfc35a7645a8b5145fbd9569eb84f07b283f6d64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006d34aeb43e9051254c603967459869b8409614db0000000000000000000000000000000000000000000000000000000000002710
-----Decoded View---------------
Arg [0] : contractAddress (address): 0x6d34aEB43e9051254C603967459869b8409614DB
Arg [1] : tokenSupply (uint256): 10000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006d34aeb43e9051254c603967459869b8409614db
Arg [1] : 0000000000000000000000000000000000000000000000000000000000002710
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.