Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 794 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Renounce Role | 16564184 | 676 days ago | IN | 0 ETH | 0.00074294 | ||||
Grant Role | 16551946 | 678 days ago | IN | 0 ETH | 0.00123963 | ||||
Set Phase | 16101094 | 741 days ago | IN | 0 ETH | 0.00032544 | ||||
Buy | 16089959 | 742 days ago | IN | 0.8 ETH | 0.01582224 | ||||
Buy | 16075737 | 744 days ago | IN | 0.08 ETH | 0.00266116 | ||||
Mint Gated | 16064615 | 746 days ago | IN | 0.08 ETH | 0.00442234 | ||||
Buy For | 16064417 | 746 days ago | IN | 0.08 ETH | 0.00278992 | ||||
Buy For | 16064404 | 746 days ago | IN | 0.08 ETH | 0.00270499 | ||||
Mint Gated | 16026073 | 751 days ago | IN | 0.08 ETH | 0.00975045 | ||||
Buy | 15877363 | 772 days ago | IN | 0.8 ETH | 0.02177107 | ||||
Buy | 15857466 | 775 days ago | IN | 0.16 ETH | 0.00267362 | ||||
Mint Gated | 15834251 | 778 days ago | IN | 0.08 ETH | 0.01012996 | ||||
Mint Gated | 15834242 | 778 days ago | IN | 0.08 ETH | 0.01144495 | ||||
Buy | 15826270 | 779 days ago | IN | 0.08 ETH | 0.00717972 | ||||
Buy | 15800061 | 783 days ago | IN | 0.08 ETH | 0.00481609 | ||||
Buy | 15800036 | 783 days ago | IN | 0.08 ETH | 0.0051529 | ||||
Mint Gated | 15759845 | 788 days ago | IN | 0.08 ETH | 0.00433916 | ||||
Buy | 15747222 | 790 days ago | IN | 0.08 ETH | 0.00582768 | ||||
Buy | 15746968 | 790 days ago | IN | 0.32 ETH | 0.01495632 | ||||
Buy | 15743918 | 791 days ago | IN | 0.72 ETH | 0.01998264 | ||||
Buy | 15728798 | 793 days ago | IN | 0.8 ETH | 0.03029727 | ||||
Buy | 15722305 | 794 days ago | IN | 0.08 ETH | 0.00704645 | ||||
Buy | 15626703 | 807 days ago | IN | 0.16 ETH | 0.00641748 | ||||
Mint Gated | 15625728 | 807 days ago | IN | 0.08 ETH | 0.00961226 | ||||
Buy | 15625277 | 807 days ago | IN | 0.16 ETH | 0.00636611 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16089959 | 742 days ago | 0.8 ETH | ||||
16075737 | 744 days ago | 0.08 ETH | ||||
16064615 | 746 days ago | 0.08 ETH | ||||
16064417 | 746 days ago | 0.08 ETH | ||||
16064404 | 746 days ago | 0.08 ETH | ||||
16026073 | 751 days ago | 0.08 ETH | ||||
15877363 | 772 days ago | 0.72 ETH | ||||
15877363 | 772 days ago | 0.08 ETH | ||||
15857466 | 775 days ago | 0.144 ETH | ||||
15857466 | 775 days ago | 0.016 ETH | ||||
15834251 | 778 days ago | 0.072 ETH | ||||
15834251 | 778 days ago | 0.008 ETH | ||||
15834242 | 778 days ago | 0.072 ETH | ||||
15834242 | 778 days ago | 0.008 ETH | ||||
15826270 | 779 days ago | 0.072 ETH | ||||
15826270 | 779 days ago | 0.008 ETH | ||||
15800061 | 783 days ago | 0.072 ETH | ||||
15800061 | 783 days ago | 0.008 ETH | ||||
15800036 | 783 days ago | 0.072 ETH | ||||
15800036 | 783 days ago | 0.008 ETH | ||||
15759845 | 788 days ago | 0.072 ETH | ||||
15759845 | 788 days ago | 0.008 ETH | ||||
15747222 | 790 days ago | 0.072 ETH | ||||
15747222 | 790 days ago | 0.008 ETH | ||||
15746968 | 790 days ago | 0.288 ETH |
Loading...
Loading
Contract Name:
FineShop
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "./FineCoreInterface.sol"; interface FineNFTInterface { function mint(address to) external returns (uint); function mintBonus(address to, uint infiniteId) external returns (uint); function getArtistAddress() external view returns (address payable); function getAdditionalPayee() external view returns (address payable); function getAdditionalPayeePercentage() external view returns (uint256); function getTokenLimit() external view returns (uint256); function checkPool() external view returns (uint); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); } interface BasicNFTInterface { function ownerOf(uint256 tokenId) external view returns (address); function balanceOf(address owner) external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); } enum SalePhase { Owner, PreSale, PublicSale } /// @custom:security-contact [email protected] contract FineShop is AccessControl { using SafeMath for uint256; FineCoreInterface fineCore; mapping(uint => address) public projectOwner; mapping(uint => uint) public projectPremints; mapping(uint => uint) public projectPrice; mapping(uint => address) public projectCurrencyAddress; mapping(uint => string) public projectCurrencySymbol; mapping(uint => uint) public projectBulkMintCount; mapping(uint => bool) public projectLive; mapping(uint256 => bool) public contractFilterProject; mapping(address => mapping (uint256 => uint256)) public projectMintCounter; mapping(uint256 => uint256) public projectMintLimit; mapping(uint256 => SalePhase) public projectPhase; mapping(uint256 => mapping (address => uint8) ) public projectAllowList; mapping(uint256 => bool ) public infinitesAIWOW; mapping(uint256 => mapping (uint256 => address) ) public projectGateTokens; mapping(uint256 => uint256) public projectGateTokensCount; mapping(uint256 => mapping(uint256 => mapping(uint256 => bool)) ) public redeemed; // projectID, gateContractId, gateTokenId uint256[17] wowIds = [23,211,223,233,234,244,261,268,292,300,335,359,371,386,407,501,505]; constructor(address _fineCoreAddresss) { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); fineCore = FineCoreInterface(_fineCoreAddresss); for (uint256 i = 0; i < 17; i++) infinitesAIWOW[wowIds[i]] = true; } function stringComp(string memory str1, string memory str2) pure internal returns (bool) { return keccak256(abi.encodePacked(str1)) == keccak256(abi.encodePacked(str2)); } // Admin Functions /** * @dev set the owner of a project * @param _projectId to set owner of * @param newOwner to set as owner */ function setOwner(uint _projectId, address newOwner) external onlyRole(DEFAULT_ADMIN_ROLE) { require(projectOwner[_projectId] != newOwner, "can't be same owner"); require(newOwner != address(0x0), "owner can't be zero address"); projectOwner[_projectId] = newOwner; } /** * @dev push the project to live (locks setting and can premint) * @param _projectId to push live */ function goLive(uint _projectId) external onlyRole(DEFAULT_ADMIN_ROLE) { bool ready = projectPrice[_projectId] > 0 && !stringComp(projectCurrencySymbol[_projectId], ""); require(ready, "project not ready for live"); projectLive[_projectId] = true; } /** * @dev set the mint limiter of a project * @param _projectId project to set mint limit of * @param _limit mint limit per address */ function setProjectMintLimit(uint256 _projectId, uint8 _limit) public onlyRole(DEFAULT_ADMIN_ROLE) { projectMintLimit[_projectId] = _limit; } /** * @dev set the bulk mint count of a project * @param _projectId project to set mint limit of * @param _count of tokens mintable */ function setProjectBulkMintCount(uint256 _projectId, uint8 _count) public onlyRole(DEFAULT_ADMIN_ROLE) { projectBulkMintCount[_projectId] = _count; } /** * @dev set the contract mint filter * @param _projectId project to toggle the contract minting filter on */ function toggleContractFilter(uint256 _projectId) public onlyRole(DEFAULT_ADMIN_ROLE) { contractFilterProject[_projectId]=!contractFilterProject[_projectId]; } /** * @dev init the project * @param _projectId to set owner of * @param newOwner to set as owner * @param contractFilter switch to filter out minting via contract * @param _bulk amount for minitng multiple per tx * @param _limit mintable per address */ function projectInit( uint _projectId, address newOwner, bool contractFilter, uint256 _bulk, uint256 _limit ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(newOwner != address(0x0), "owner can't be zero address"); projectOwner[_projectId] = newOwner; contractFilterProject[_projectId] = contractFilter; projectBulkMintCount[_projectId] = _bulk; projectMintLimit[_projectId] = _limit; } // Project Owner Functions modifier onlyOwner(uint _projectId) { require(msg.sender == projectOwner[_projectId], "only owner"); _; } modifier isLive(uint _projectId) { require(projectLive[_projectId], "Project not yet live"); _; } modifier notLive(uint _projectId) { require(!projectLive[_projectId], "Can't call once live"); _; } /** * @dev set the price of a project * @param _projectId to set price of * @param price to set project to */ function setPrice(uint _projectId, uint price) external onlyOwner(_projectId) notLive(_projectId) { projectPrice[_projectId] = price; } /** * @dev set the premints of a project * @param _projectId to set premints of * @param premints to set project to */ function setPremints(uint _projectId, uint premints) external onlyOwner(_projectId) notLive(_projectId) { projectPremints[_projectId] = premints; } /** * @dev set the currency to ETH * @param _projectId to set currency of */ function setCurrencyToETH(uint _projectId) external onlyOwner(_projectId) notLive(_projectId) { projectCurrencySymbol[_projectId] = "ETH"; projectCurrencyAddress[_projectId] = address(0x0); } /** * @dev set the currency * @param _projectId to set currency of * @param _symbol of the currency * @param _contract address of the currency */ function setCurrency(uint _projectId, string calldata _symbol, address _contract) external onlyOwner(_projectId) notLive(_projectId) { require(bytes(_symbol).length > 0, "Symbol must be provided"); if (!stringComp(_symbol, "ETH")) require(_contract != address(0x0), "curency address cant be zero"); projectCurrencySymbol[_projectId] = _symbol; projectCurrencyAddress[_projectId] = _contract; } /** * @dev owner may set project up in one call * @param _projectId to set up * @param _symbol of the currency * @param _contract address of the currency * @param _price of the project * @param _premints number available */ function fullSetup( uint _projectId, string calldata _symbol, address _contract, uint256 _price, uint256 _premints ) external onlyOwner(_projectId) notLive(_projectId) { require(bytes(_symbol).length > 0, "Symbol must be provided"); if (!stringComp(_symbol, "ETH")) require(_contract != address(0x0), "curency address cant be zero"); projectCurrencySymbol[_projectId] = _symbol; projectCurrencyAddress[_projectId] = _contract; projectPrice[_projectId] = _price; projectPremints[_projectId] = _premints; } /** * @dev add an address to the allowlist * @param _projectId to set allowlist of * @param addresses to set allowlist counts for * @param numAllowedToMint number of mints to allow addresses */ function setAllowList(uint _projectId, address[] calldata addresses, uint8 numAllowedToMint) external onlyOwner(_projectId) { for (uint256 i = 0; i < addresses.length; i++) { projectAllowList[_projectId][addresses[i]] = numAllowedToMint; } } /** * @dev set an NFT as a mint gating token * @param _projectId to set token for * @param addresses of token contracts */ function setGateTokens(uint _projectId, address[] calldata addresses) external onlyOwner(_projectId) { projectGateTokensCount[_projectId] = addresses.length; for (uint256 i = 0; i < addresses.length; i++) { projectGateTokens[_projectId][i] = addresses[i]; } } /** * @dev set mint phase of a project * @param _projectId to set phase of */ function setPhase(uint _projectId, SalePhase phase) external onlyOwner(_projectId) isLive(_projectId) { projectPhase[_projectId] = phase; } // Sale Functions /** * @dev handle payment for a purchase * @param _projectId to handle payment for * @param count to purchase */ function handlePayment(uint _projectId, uint count) internal { uint price = projectPrice[_projectId].mul(count); if (!stringComp(projectCurrencySymbol[_projectId], "ETH")){ require(msg.value==0, "this project accepts a different currency and cannot accept ETH"); require(IERC20(projectCurrencyAddress[_projectId]).allowance(msg.sender, address(this)) >= price, "Insufficient Funds Approved for TX"); require(IERC20(projectCurrencyAddress[_projectId]).balanceOf(msg.sender) >= price, "Insufficient balance."); _splitFundsERC20(_projectId, count); } else { require(msg.value >= price, "Must send minimum value to mint!"); _splitFundsETH(_projectId, count); } } /** * @dev split funds of payment made with ETH * @param _projectId to purchase * @param count number of tokens to purchase */ function _splitFundsETH(uint256 _projectId, uint count) internal { if (msg.value > 0) { uint256 pricePerTokenInWei = projectPrice[_projectId]; uint salePrice = pricePerTokenInWei.mul(count); uint256 refund = msg.value.sub(salePrice); if (refund > 0) { payable(msg.sender).transfer(refund); } uint256 platformAmount = salePrice.mul(fineCore.platformPercentage()).div(10000); if (platformAmount > 0) { fineCore.FINE_TREASURY().transfer(platformAmount); } FineNFTInterface nftContract = FineNFTInterface(fineCore.getProjectAddress(_projectId)); uint256 additionalPayeeAmount = salePrice.mul(nftContract.getAdditionalPayeePercentage()).div(10000); if (additionalPayeeAmount > 0) { nftContract.getAdditionalPayee().transfer(additionalPayeeAmount); } uint256 creatorFunds = salePrice.sub(platformAmount).sub(additionalPayeeAmount); if (creatorFunds > 0) { nftContract.getArtistAddress().transfer(creatorFunds); } } } /** * @dev split funds of payment made with ERC20 tokens * @param _projectId to purchase * @param count number of tokens to purchase */ function _splitFundsERC20(uint256 _projectId, uint count) internal { uint256 pricePerTokenInWei = projectPrice[_projectId]; uint salePrice = pricePerTokenInWei.mul(count); uint256 platformAmount = salePrice.mul(fineCore.platformPercentage()).div(10000); if (platformAmount > 0) { IERC20(projectCurrencyAddress[_projectId]).transferFrom(msg.sender, fineCore.FINE_TREASURY(), platformAmount); } FineNFTInterface nftContract = FineNFTInterface(fineCore.getProjectAddress(_projectId)); nftContract.getArtistAddress(); uint256 additionalPayeeAmount = salePrice.mul(nftContract.getAdditionalPayeePercentage()).div(10000); if (additionalPayeeAmount > 0) { IERC20(projectCurrencyAddress[_projectId]).transferFrom(msg.sender, nftContract.getAdditionalPayee(), additionalPayeeAmount); } uint256 creatorFunds = salePrice.sub(platformAmount).sub(additionalPayeeAmount); if (creatorFunds > 0) { IERC20(projectCurrencyAddress[_projectId]).transferFrom(msg.sender, nftContract.getArtistAddress(), creatorFunds); } } // Minting Functions /** * @dev purchase tokens of a project and send to a specific address6 * @param _projectId to purchase * @param to address to send token to * @param count number of tokens to purchase */ function purchaseTo(uint _projectId, address to, uint count) internal isLive(_projectId) returns (string memory) { if (contractFilterProject[_projectId]) require(msg.sender == tx.origin, "No Contract Buys"); // instantiate an interface with the projects NFT contract FineNFTInterface nftContract = FineNFTInterface(fineCore.getProjectAddress(_projectId)); require(nftContract.checkPool() > 0, "Sold out"); require(nftContract.checkPool() >= count, "Count excedes available"); // Owner phase conditions if (projectPhase[_projectId] == SalePhase.Owner) { require(msg.sender == projectOwner[_projectId], "Only owner can mint now"); require(count <= projectPremints[_projectId], "Excededs max premints"); projectPremints[_projectId] -= count; } else { if (projectMintLimit[_projectId] > 0) { require(projectMintCounter[msg.sender][_projectId] < projectMintLimit[_projectId], "Reached minting limit"); projectMintCounter[msg.sender][_projectId] += count; } // Presale phase conditions if (projectPhase[_projectId] == SalePhase.PreSale) { require(count <= projectAllowList[_projectId][msg.sender], "Exceeds allowlisted count"); projectAllowList[_projectId][msg.sender] -= uint8(count); } else if (projectPhase[_projectId] == SalePhase.PublicSale) { if (projectBulkMintCount[_projectId] > 0) require(count <= projectBulkMintCount[_projectId], "Count excedes bulk mint limit"); } handlePayment(_projectId, count); } string memory idList; // mint number of tokens specified by count for (uint i = 0; i < count; i++) { uint tokenID = nftContract.mint(to); if (i == 0) idList = string(abi.encodePacked(tokenID)); else idList = string(abi.encodePacked(idList, ",", tokenID)); } return idList; // returns a list of ids of all tokens minted } /** * @dev purchase tokens of a project and send to a specific address (only holders of listed NFTs) * @param _projectId to purchase * @param to address to send token to * @param contractId of contract to lookup gate pass in the mapping * @param redeemId id of token to redeem gate pass for */ function mintGated(uint _projectId, address to, uint8 contractId, uint256 redeemId) public payable isLive(_projectId) returns (string memory) { if (contractFilterProject[_projectId]) require(msg.sender == tx.origin, "No Contract Buys"); // instantiate an interface with the projects NFT contract FineNFTInterface nftContract = FineNFTInterface(fineCore.getProjectAddress(_projectId)); // Presale phase conditions require(projectPhase[_projectId] != SalePhase.Owner, "Must redeem after owner mint"); BasicNFTInterface allowToken = BasicNFTInterface(projectGateTokens[_projectId][contractId]); require(nftContract.checkPool() > 0, "Sold out"); require( allowToken.ownerOf(redeemId) == msg.sender || allowToken.ownerOf(redeemId) == to, "Only token owner can redeem pass"); require(!redeemed[_projectId][contractId][redeemId], "already redeemed for ID"); redeemed[_projectId][contractId][redeemId] = true; uint tokenId = nftContract.mint(to); // free bonus mints for coresponding Infinites AI tokens owned if (contractId == 0) nftContract.mintBonus(to, redeemId); // free mint for Infinites AI WOWs if (contractId != 0 || !infinitesAIWOW[redeemId]) handlePayment(_projectId, 1); else if (msg.value > 0) payable(msg.sender).transfer(msg.value); return string(abi.encodePacked(tokenId)); // returns a list of ids of all tokens minted } /** * @dev purchase tokens of a project * @param _projectId to purchase * @param count number of tokens to purchase */ function buy(uint _projectId, uint count) external payable returns (string memory) { return purchaseTo(_projectId, msg.sender, count); } /** * @dev purchase tokens of a project for another address * @param _projectId to purchase * @param to recipients address * @param count number of tokens to purchase */ function buyFor(uint _projectId, address to, uint count) external payable returns (string memory) { return purchaseTo(_projectId, to, count); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.2; interface FineCoreInterface { function getProjectAddress(uint id) external view returns (address); function getRandomness(uint256 id, uint256 seed) external view returns (uint256 randomnesss); function getProjectID(address project) external view returns (uint); function FINE_TREASURY() external returns (address payable); function platformPercentage() external returns (uint256); function platformRoyalty() external returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// 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; } }
// 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.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// 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) { return interfaceId == type(IERC165).interfaceId; } }
// 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); }
{ "optimizer": { "enabled": true, "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":"_fineCoreAddresss","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"buy","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"buyFor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractFilterProject","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_premints","type":"uint256"}],"name":"fullSetup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"infinitesAIWOW","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint8","name":"contractId","type":"uint8"},{"internalType":"uint256","name":"redeemId","type":"uint256"}],"name":"mintGated","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"projectAllowList","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectBulkMintCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectCurrencyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectCurrencySymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectGateTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectGateTokensCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"contractFilter","type":"bool"},{"internalType":"uint256","name":"_bulk","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"projectInit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMintCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectPhase","outputs":[{"internalType":"enum SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectPremints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"redeemed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8","name":"numAllowedToMint","type":"uint8"}],"name":"setAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_contract","type":"address"}],"name":"setCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"setCurrencyToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"setGateTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"enum SalePhase","name":"phase","type":"uint8"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"premints","type":"uint256"}],"name":"setPremints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint8","name":"_count","type":"uint8"}],"name":"setProjectBulkMintCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint8","name":"_limit","type":"uint8"}],"name":"setProjectMintLimit","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":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleContractFilter","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6102a06040526017608090815260d360a05260df60c05260e960e05260ea6101005260f4610120526101056101405261010c610160526101246101805261012c6101a05261014f6101c0526101676101e0526101736102005261018261022052610197610240526101f5610260526101f96102805262000084906012906011620001e5565b503480156200009257600080fd5b5060405162003d2238038062003d22833981016040819052620000b59162000245565b620000c260003362000144565b600180546001600160a01b0319166001600160a01b03831617905560005b60118110156200013c576001600e60006012846011811062000106576200010662000277565b015481526020810191909152604001600020805460ff19169115159190911790558062000133816200028d565b915050620000e0565b5050620002b5565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001e1576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b82601181019282156200021c579160200282015b828111156200021c578251829061ffff16905591602001919060010190620001f9565b506200022a9291506200022e565b5090565b5b808211156200022a57600081556001016200022f565b6000602082840312156200025857600080fd5b81516001600160a01b03811681146200027057600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201620002ae57634e487b7160e01b600052601160045260246000fd5b5060010190565b613a5d80620002c56000396000f3fe60806040526004361061023b5760003560e01c8063832af8011161012e578063b5656185116100ab578063d6febde81161006f578063d6febde8146107e5578063dc3d886f146107f8578063e44f864814610818578063f7d9757714610859578063f9f96b9e1461087957600080fd5b8063b565618514610724578063bbd1f24714610744578063bd33f08114610764578063cd2f437414610784578063d547741f146107c557600080fd5b8063a47f9092116100f2578063a47f90921461062d578063ac26e4c91461067a578063ad286a9c146106aa578063b05ff2eb146106d7578063b24e84441461070457600080fd5b8063832af8011461057f57806389fe08f8146105af57806391d14854146105e55780639265c17f14610605578063a217fddf1461061857600080fd5b806336568abe116101bc57806362f7a7ed1161018057806362f7a7ed146104c557806363767742146104f25780636b48c66d146105125780636ddd9f20146105325780637fd392471461055f57600080fd5b806336568abe146103f05780633a4657b41461041057806348491e6e14610448578063531b14b914610485578063569f6f92146104a557600080fd5b8063287f5fb711610203578063287f5fb7146103155780632a83ca5b146103635780632f2ff15d146103835780633010f817146103a3578063314398d8146103d057600080fd5b806301ffc9a7146102405780630ad1d81c14610275578063128e1c5b14610297578063231c2281146102b7578063248a9ca3146102d7575b600080fd5b34801561024c57600080fd5b5061026061025b366004613243565b6108a9565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061029561029036600461326d565b6108e0565b005b3480156102a357600080fd5b506102956102b23660046132e7565b610a28565b3480156102c357600080fd5b506102956102d236600461335c565b610bd9565b3480156102e357600080fd5b506103076102f236600461326d565b60009081526020819052604090206001015490565b60405190815260200161026c565b34801561032157600080fd5b5061034b61033036600461326d565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561036f57600080fd5b5061029561037e3660046133cd565b610bfe565b34801561038f57600080fd5b5061029561039e36600461342b565b610cbd565b3480156103af57600080fd5b506103076103be36600461326d565b60106020526000908152604090205481565b6103e36103de36600461345b565b610ce8565b60405161026c91906134c3565b3480156103fc57600080fd5b5061029561040b36600461342b565b610cfd565b34801561041c57600080fd5b5061030761042b3660046134f6565b600a60209081526000928352604080842090915290825290205481565b34801561045457600080fd5b5061047861046336600461326d565b600c6020526000908152604090205460ff1681565b60405161026c9190613538565b34801561049157600080fd5b506103e36104a036600461326d565b610d7b565b3480156104b157600080fd5b506102956104c036600461326d565b610e15565b3480156104d157600080fd5b506103076104e036600461326d565b600b6020526000908152604090205481565b3480156104fe57600080fd5b5061029561050d366004613560565b610e42565b34801561051e57600080fd5b5061029561052d3660046135ba565b610f0b565b34801561053e57600080fd5b5061030761054d36600461326d565b60076020526000908152604090205481565b34801561056b57600080fd5b5061029561057a36600461342b565b610fca565b34801561058b57600080fd5b5061026061059a36600461326d565b600e6020526000908152604090205460ff1681565b3480156105bb57600080fd5b5061034b6105ca36600461326d565b6002602052600090815260409020546001600160a01b031681565b3480156105f157600080fd5b5061026061060036600461342b565b6110ba565b6103e361061336600461360c565b6110e3565b34801561062457600080fd5b50610307600081565b34801561063957600080fd5b5061066861064836600461342b565b600d60209081526000928352604080842090915290825290205460ff1681565b60405160ff909116815260200161026c565b34801561068657600080fd5b5061026061069536600461326d565b60086020526000908152604090205460ff1681565b3480156106b657600080fd5b506103076106c536600461326d565b60046020526000908152604090205481565b3480156106e357600080fd5b506103076106f236600461326d565b60036020526000908152604090205481565b34801561071057600080fd5b5061029561071f366004613652565b611673565b34801561073057600080fd5b5061029561073f36600461335c565b61183d565b34801561075057600080fd5b5061029561075f3660046136c3565b611862565b34801561077057600080fd5b5061029561077f36600461326d565b611900565b34801561079057600080fd5b5061026061079f3660046136ec565b601160209081526000938452604080852082529284528284209052825290205460ff1681565b3480156107d157600080fd5b506102956107e036600461342b565b6119c0565b6103e36107f3366004613718565b6119e6565b34801561080457600080fd5b50610295610813366004613718565b6119fa565b34801561082457600080fd5b5061034b610833366004613718565b600f6020908152600092835260408084209091529082529020546001600160a01b031681565b34801561086557600080fd5b50610295610874366004613718565b611a77565b34801561088557600080fd5b5061026061089436600461326d565b60096020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b14806108da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006108ec8133611af4565b600082815260046020526040812054158015906109b75750600083815260066020526040902080546109b591906109229061373a565b80601f016020809104026020016040519081016040528092919081815260200182805461094e9061373a565b801561099b5780601f106109705761010080835404028352916020019161099b565b820191906000526020600020905b81548152906001019060200180831161097e57829003601f168201915b505050505060405180602001604052806000815250611b58565b155b905080610a0b5760405162461bcd60e51b815260206004820152601a60248201527f70726f6a656374206e6f7420726561647920666f72206c69766500000000000060448201526064015b60405180910390fd5b50506000908152600860205260409020805460ff19166001179055565b60008481526002602052604090205484906001600160a01b03163314610a605760405162461bcd60e51b8152600401610a0290613774565b600085815260086020526040902054859060ff1615610a915760405162461bcd60e51b8152600401610a0290613798565b83610ad85760405162461bcd60e51b815260206004820152601760248201527614de5b589bdb081b5d5cdd081899481c1c9bdd9a591959604a1b6044820152606401610a02565b610b3285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526208aa8960eb1b60208201529150611b589050565b610b8c576001600160a01b038316610b8c5760405162461bcd60e51b815260206004820152601c60248201527f637572656e637920616464726573732063616e74206265207a65726f000000006044820152606401610a02565b6000868152600660205260409020610ba5908686613136565b50505060009384526005602052604090932080546001600160a01b0319166001600160a01b03909416939093179092555050565b6000610be58133611af4565b506000918252600b602052604090912060ff9091169055565b60008481526002602052604090205484906001600160a01b03163314610c365760405162461bcd60e51b8152600401610a0290613774565b60005b83811015610cb5576000868152600d602052604081208491878785818110610c6357610c636137c6565b9050602002016020810190610c7891906137dc565b6001600160a01b031681526020810191909152604001600020805460ff191660ff9290921691909117905580610cad8161380f565b915050610c39565b505050505050565b600082815260208190526040902060010154610cd98133611af4565b610ce38383611bb1565b505050565b6060610cf5848484611c35565b949350505050565b6001600160a01b0381163314610d6d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a02565b610d7782826122ab565b5050565b60066020526000908152604090208054610d949061373a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061373a565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b505050505081565b6000610e218133611af4565b506000908152600960205260409020805460ff19811660ff90911615179055565b60008381526002602052604090205483906001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610a0290613774565b60008481526010602052604081208390555b82811015610f0457838382818110610ea657610ea66137c6565b9050602002016020810190610ebb91906137dc565b6000868152600f60209081526040808320858452909152902080546001600160a01b0319166001600160a01b039290921691909117905580610efc8161380f565b915050610e8c565b5050505050565b6000610f178133611af4565b6001600160a01b038516610f6d5760405162461bcd60e51b815260206004820152601b60248201527f6f776e65722063616e2774206265207a65726f206164647265737300000000006044820152606401610a02565b50600094855260026020908152604080872080546001600160a01b0319166001600160a01b03979097169690961790955560098152848620805460ff1916941515949094179093556007835283852091909155600b909152912055565b6000610fd68133611af4565b6000838152600260205260409020546001600160a01b038084169116036110355760405162461bcd60e51b815260206004820152601360248201527231b0b713ba1031329039b0b6b29037bbb732b960691b6044820152606401610a02565b6001600160a01b03821661108b5760405162461bcd60e51b815260206004820152601b60248201527f6f776e65722063616e2774206265207a65726f206164647265737300000000006044820152606401610a02565b5060009182526002602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600084815260086020526040902054606090859060ff166111165760405162461bcd60e51b8152600401610a0290613828565b60008681526009602052604090205460ff161561116f5733321461116f5760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b6044820152606401610a02565b6001546040516309947d3760e31b8152600481018890526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa1580156111b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dd9190613856565b9050600080888152600c602052604090205460ff16600281111561120357611203613522565b036112505760405162461bcd60e51b815260206004820152601c60248201527f4d7573742072656465656d206166746572206f776e6572206d696e74000000006044820152606401610a02565b6000878152600f6020908152604080832060ff8916845282528083205481516323b890c560e11b815291516001600160a01b03918216949391861692634771218a9260048083019391928290030181865afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190613873565b1161130f5760405162461bcd60e51b815260206004820152600860248201526714dbdb19081bdd5d60c21b6044820152606401610a02565b6040516331a9108f60e11b81526004810186905233906001600160a01b03831690636352211e90602401602060405180830381865afa158015611356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137a9190613856565b6001600160a01b0316148061140357506040516331a9108f60e11b8152600481018690526001600160a01b038089169190831690636352211e90602401602060405180830381865afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190613856565b6001600160a01b0316145b61144f5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920746f6b656e206f776e65722063616e2072656465656d20706173736044820152606401610a02565b600088815260116020908152604080832060ff808b1685529083528184208985529092529091205416156114c55760405162461bcd60e51b815260206004820152601760248201527f616c72656164792072656465656d656420666f722049440000000000000000006044820152606401610a02565b600088815260116020908152604080832060ff8a1684528252808320888452909152808220805460ff19166001179055516335313c2160e11b81526001600160a01b038981166004830152841690636a627842906024016020604051808303816000875af115801561153b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155f9190613873565b90508660ff166000036115e15760405163d9a7c61d60e01b81526001600160a01b0389811660048301526024820188905284169063d9a7c61d906044016020604051808303816000875af11580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190613873565b505b60ff871615158061160157506000868152600e602052604090205460ff16155b1561161657611611896001612310565b61164a565b341561164a5760405133903480156108fc02916000818181858888f19350505050158015611648573d6000803e3d6000fd5b505b604080516020810183905201604051602081830303815290604052945050505050949350505050565b60008681526002602052604090205486906001600160a01b031633146116ab5760405162461bcd60e51b8152600401610a0290613774565b600087815260086020526040902054879060ff16156116dc5760405162461bcd60e51b8152600401610a0290613798565b856117235760405162461bcd60e51b815260206004820152601760248201527614de5b589bdb081b5d5cdd081899481c1c9bdd9a591959604a1b6044820152606401610a02565b61177d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526208aa8960eb1b60208201529150611b589050565b6117d7576001600160a01b0385166117d75760405162461bcd60e51b815260206004820152601c60248201527f637572656e637920616464726573732063616e74206265207a65726f000000006044820152606401610a02565b60008881526006602052604090206117f0908888613136565b505050600095865260056020908152604080882080546001600160a01b0319166001600160a01b039690961695909517909455600481528387209290925560039091529320929092555050565b60006118498133611af4565b5060009182526007602052604090912060ff9091169055565b60008281526002602052604090205482906001600160a01b0316331461189a5760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff166118ca5760405162461bcd60e51b8152600401610a0290613828565b6000848152600c60205260409020805484919060ff191660018360028111156118f5576118f5613522565b021790555050505050565b60008181526002602052604090205481906001600160a01b031633146119385760405162461bcd60e51b8152600401610a0290613774565b600082815260086020526040902054829060ff16156119695760405162461bcd60e51b8152600401610a0290613798565b604080518082018252600381526208aa8960eb1b60208083019182526000878152600690915292909220905161199f92906131ba565b505050600090815260056020526040902080546001600160a01b0319169055565b6000828152602081905260409020600101546119dc8133611af4565b610ce383836122ab565b60606119f3833384611c35565b9392505050565b60008281526002602052604090205482906001600160a01b03163314611a325760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff1615611a635760405162461bcd60e51b8152600401610a0290613798565b505060009182526003602052604090912055565b60008281526002602052604090205482906001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff1615611ae05760405162461bcd60e51b8152600401610a0290613798565b505060009182526004602052604090912055565b611afe82826110ba565b610d7757611b16816001600160a01b0316601461265b565b611b2183602061265b565b604051602001611b3292919061388c565b60408051601f198184030181529082905262461bcd60e51b8252610a02916004016134c3565b600081604051602001611b6b9190613901565b6040516020818303038152906040528051906020012083604051602001611b929190613901565b6040516020818303038152906040528051906020012014905092915050565b611bbb82826110ba565b610d77576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055611bf13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600083815260086020526040902054606090849060ff16611c685760405162461bcd60e51b8152600401610a0290613828565b60008581526009602052604090205460ff1615611cc157333214611cc15760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b6044820152606401610a02565b6001546040516309947d3760e31b8152600481018790526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015611d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2f9190613856565b90506000816001600160a01b0316634771218a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d959190613873565b11611dcd5760405162461bcd60e51b815260206004820152600860248201526714dbdb19081bdd5d60c21b6044820152606401610a02565b83816001600160a01b0316634771218a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190613873565b1015611e7e5760405162461bcd60e51b815260206004820152601760248201527f436f756e74206578636564657320617661696c61626c650000000000000000006044820152606401610a02565b6000868152600c602052604081205460ff166002811115611ea157611ea1613522565b03611f8b576000868152600260205260409020546001600160a01b03163314611f0c5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f776e65722063616e206d696e74206e6f770000000000000000006044820152606401610a02565b600086815260036020526040902054841115611f625760405162461bcd60e51b81526020600482015260156024820152744578636564656473206d6178207072656d696e747360581b6044820152606401610a02565b60008681526003602052604081208054869290611f8090849061391d565b909155506121bf9050565b6000868152600b60205260409020541561203a576000868152600b6020908152604080832054338452600a83528184208a8552909252909120541061200a5760405162461bcd60e51b815260206004820152601560248201527414995858da1959081b5a5b9d1a5b99c81b1a5b5a5d605a1b6044820152606401610a02565b336000908152600a6020908152604080832089845290915281208054869290612034908490613934565b90915550505b60016000878152600c602052604090205460ff16600281111561205f5761205f613522565b03612119576000868152600d6020908152604080832033845290915290205460ff168411156120d05760405162461bcd60e51b815260206004820152601960248201527f4578636565647320616c6c6f776c697374656420636f756e74000000000000006044820152606401610a02565b6000868152600d60209081526040808320338452909152812080548692906120fc90849060ff1661394c565b92506101000a81548160ff021916908360ff1602179055506121b5565b60026000878152600c602052604090205460ff16600281111561213e5761213e613522565b036121b557600086815260076020526040902054156121b5576000868152600760205260409020548411156121b55760405162461bcd60e51b815260206004820152601d60248201527f436f756e7420657863656465732062756c6b206d696e74206c696d69740000006044820152606401610a02565b6121bf8685612310565b606060005b858110156122a0576040516335313c2160e11b81526001600160a01b03888116600483015260009190851690636a627842906024016020604051808303816000875af1158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c9190613873565b90508160000361226857604080516020810183905201604051602081830303815290604052925061228d565b828160405160200161227b92919061396f565b60405160208183030381529060405292505b50806122988161380f565b9150506121c4565b509695505050505050565b6122b582826110ba565b15610d77576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526004602052604081205461232990836127f7565b600084815260066020526040902080549192506123e8916123499061373a565b80601f01602080910402602001604051908101604052809291908181526020018280546123759061373a565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b50505050506040518060400160405280600381526020016208aa8960eb1b815250611b58565b6126015734156124605760405162461bcd60e51b815260206004820152603f60248201527f746869732070726f6a6563742061636365707473206120646966666572656e7460448201527f2063757272656e637920616e642063616e6e6f742061636365707420455448006064820152608401610a02565b60008381526005602052604090819020549051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156124bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124df9190613873565b10156125385760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742046756e647320417070726f76656420666f72206044820152610a8b60f31b6064820152608401610a02565b600083815260056020526040908190205490516370a0823160e01b815233600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801561258d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b19190613873565b10156125f75760405162461bcd60e51b815260206004820152601560248201527424b739bab33334b1b4b2b73a103130b630b731b29760591b6044820152606401610a02565b610ce38383612803565b803410156126515760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e74216044820152606401610a02565b610ce38383612d2d565b6060600061266a83600261399c565b612675906002613934565b67ffffffffffffffff81111561268d5761268d6139bb565b6040519080825280601f01601f1916602001820160405280156126b7576020820181803683370190505b509050600360fc1b816000815181106126d2576126d26137c6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612701576127016137c6565b60200101906001600160f81b031916908160001a905350600061272584600261399c565b612730906001613934565b90505b60018111156127a8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612764576127646137c6565b1a60f81b82828151811061277a5761277a6137c6565b60200101906001600160f81b031916908160001a90535060049490941c936127a1816139d1565b9050612733565b5083156119f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a02565b60006119f3828461399c565b6000828152600460205260408120549061281d82846127f7565b905060006128b06127106128aa600160009054906101000a90046001600160a01b03166001600160a01b0316631f7418976040518163ffffffff1660e01b81526004016020604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a39190613873565b85906127f7565b9061311e565b905080156129bc576000858152600560209081526040808320546001548251637dafc0d360e01b815292516001600160a01b03928316956323b872dd9533959390941693637dafc0d39360048082019492939183900301908290875af115801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129429190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ba91906139e8565b505b6001546040516309947d3760e31b8152600481018790526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015612a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2a9190613856565b9050806001600160a01b0316638cbe8d806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8e9190613856565b506000612b036127106128aa846001600160a01b0316632cc889746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afc9190613873565b87906127f7565b90508015612c0857600087815260056020908152604091829020548251636ff314c760e01b815292516001600160a01b03918216936323b872dd933393881692636ff314c79260048082019392918290030181865afa158015612b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8e9190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0691906139e8565b505b6000612c1e82612c18878761312a565b9061312a565b90508015612d23576000888152600560209081526040918290205482516301197d1b60e71b815292516001600160a01b03918216936323b872dd933393891692638cbe8d809260048082019392918290030181865afa158015612c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca99190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2191906139e8565b505b5050505050505050565b3415610d775760008281526004602052604081205490612d4d82846127f7565b90506000612d5b348361312a565b90508015612d9257604051339082156108fc029083906000818181858888f19350505050158015612d90573d6000803e3d6000fd5b505b6000612e1d6127106128aa600160009054906101000a90046001600160a01b03166001600160a01b0316631f7418976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e169190613873565b86906127f7565b90508015612ed857600160009054906101000a90046001600160a01b03166001600160a01b0316637dafc0d36040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9e9190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015612ed6573d6000803e3d6000fd5b505b6001546040516309947d3760e31b8152600481018890526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015612f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f469190613856565b90506000612fbc6127106128aa846001600160a01b0316632cc889746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb59190613873565b88906127f7565b9050801561306057816001600160a01b0316636ff314c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130269190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561305e573d6000803e3d6000fd5b505b600061307082612c18888761312a565b90508015612d2157826001600160a01b0316638cbe8d806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015613112573d6000803e3d6000fd5b50505050505050505050565b60006119f38284613a05565b60006119f3828461391d565b8280546131429061373a565b90600052602060002090601f01602090048101928261316457600085556131aa565b82601f1061317d5782800160ff198235161785556131aa565b828001600101855582156131aa579182015b828111156131aa57823582559160200191906001019061318f565b506131b692915061322e565b5090565b8280546131c69061373a565b90600052602060002090601f0160209004810192826131e857600085556131aa565b82601f1061320157805160ff19168380011785556131aa565b828001600101855582156131aa579182015b828111156131aa578251825591602001919060010190613213565b5b808211156131b6576000815560010161322f565b60006020828403121561325557600080fd5b81356001600160e01b0319811681146119f357600080fd5b60006020828403121561327f57600080fd5b5035919050565b60008083601f84011261329857600080fd5b50813567ffffffffffffffff8111156132b057600080fd5b6020830191508360208285010111156132c857600080fd5b9250929050565b6001600160a01b03811681146132e457600080fd5b50565b600080600080606085870312156132fd57600080fd5b84359350602085013567ffffffffffffffff81111561331b57600080fd5b61332787828801613286565b909450925050604085013561333b816132cf565b939692955090935050565b803560ff8116811461335757600080fd5b919050565b6000806040838503121561336f57600080fd5b8235915061337f60208401613346565b90509250929050565b60008083601f84011261339a57600080fd5b50813567ffffffffffffffff8111156133b257600080fd5b6020830191508360208260051b85010111156132c857600080fd5b600080600080606085870312156133e357600080fd5b84359350602085013567ffffffffffffffff81111561340157600080fd5b61340d87828801613388565b9094509250613420905060408601613346565b905092959194509250565b6000806040838503121561343e57600080fd5b823591506020830135613450816132cf565b809150509250929050565b60008060006060848603121561347057600080fd5b833592506020840135613482816132cf565b929592945050506040919091013590565b60005b838110156134ae578181015183820152602001613496565b838111156134bd576000848401525b50505050565b60208152600082518060208401526134e2816040850160208701613493565b601f01601f19169190910160400192915050565b6000806040838503121561350957600080fd5b8235613514816132cf565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061355a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006040848603121561357557600080fd5b83359250602084013567ffffffffffffffff81111561359357600080fd5b61359f86828701613388565b9497909650939450505050565b80151581146132e457600080fd5b600080600080600060a086880312156135d257600080fd5b8535945060208601356135e4816132cf565b935060408601356135f4816135ac565b94979396509394606081013594506080013592915050565b6000806000806080858703121561362257600080fd5b843593506020850135613634816132cf565b925061364260408601613346565b9396929550929360600135925050565b60008060008060008060a0878903121561366b57600080fd5b86359550602087013567ffffffffffffffff81111561368957600080fd5b61369589828a01613286565b90965094505060408701356136a9816132cf565b959894975092956060810135946080909101359350915050565b600080604083850312156136d657600080fd5b8235915060208301356003811061345057600080fd5b60008060006060848603121561370157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561372b57600080fd5b50508035926020909101359150565b600181811c9082168061374e57607f821691505b60208210810361376e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b60208082526014908201527343616e27742063616c6c206f6e6365206c69766560601b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137ee57600080fd5b81356119f3816132cf565b634e487b7160e01b600052601160045260246000fd5b600060018201613821576138216137f9565b5060010190565b60208082526014908201527350726f6a656374206e6f7420796574206c69766560601b604082015260600190565b60006020828403121561386857600080fd5b81516119f3816132cf565b60006020828403121561388557600080fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516138c4816017850160208801613493565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516138f5816028840160208801613493565b01602801949350505050565b60008251613913818460208701613493565b9190910192915050565b60008282101561392f5761392f6137f9565b500390565b60008219821115613947576139476137f9565b500190565b600060ff821660ff841680821015613966576139666137f9565b90039392505050565b60008351613981818460208801613493565b600b60fa1b9201918252506001810191909152602101919050565b60008160001904831182151516156139b6576139b66137f9565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816139e0576139e06137f9565b506000190190565b6000602082840312156139fa57600080fd5b81516119f3816135ac565b600082613a2257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fb6dc7bd41c97bc1de8d011a01ef1800b543a9c03bd7b21a36252cc6269be4f364736f6c634300080d003300000000000000000000000016213f846a222da24eb4807a6cc5d0a5344994d6
Deployed Bytecode
0x60806040526004361061023b5760003560e01c8063832af8011161012e578063b5656185116100ab578063d6febde81161006f578063d6febde8146107e5578063dc3d886f146107f8578063e44f864814610818578063f7d9757714610859578063f9f96b9e1461087957600080fd5b8063b565618514610724578063bbd1f24714610744578063bd33f08114610764578063cd2f437414610784578063d547741f146107c557600080fd5b8063a47f9092116100f2578063a47f90921461062d578063ac26e4c91461067a578063ad286a9c146106aa578063b05ff2eb146106d7578063b24e84441461070457600080fd5b8063832af8011461057f57806389fe08f8146105af57806391d14854146105e55780639265c17f14610605578063a217fddf1461061857600080fd5b806336568abe116101bc57806362f7a7ed1161018057806362f7a7ed146104c557806363767742146104f25780636b48c66d146105125780636ddd9f20146105325780637fd392471461055f57600080fd5b806336568abe146103f05780633a4657b41461041057806348491e6e14610448578063531b14b914610485578063569f6f92146104a557600080fd5b8063287f5fb711610203578063287f5fb7146103155780632a83ca5b146103635780632f2ff15d146103835780633010f817146103a3578063314398d8146103d057600080fd5b806301ffc9a7146102405780630ad1d81c14610275578063128e1c5b14610297578063231c2281146102b7578063248a9ca3146102d7575b600080fd5b34801561024c57600080fd5b5061026061025b366004613243565b6108a9565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061029561029036600461326d565b6108e0565b005b3480156102a357600080fd5b506102956102b23660046132e7565b610a28565b3480156102c357600080fd5b506102956102d236600461335c565b610bd9565b3480156102e357600080fd5b506103076102f236600461326d565b60009081526020819052604090206001015490565b60405190815260200161026c565b34801561032157600080fd5b5061034b61033036600461326d565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561036f57600080fd5b5061029561037e3660046133cd565b610bfe565b34801561038f57600080fd5b5061029561039e36600461342b565b610cbd565b3480156103af57600080fd5b506103076103be36600461326d565b60106020526000908152604090205481565b6103e36103de36600461345b565b610ce8565b60405161026c91906134c3565b3480156103fc57600080fd5b5061029561040b36600461342b565b610cfd565b34801561041c57600080fd5b5061030761042b3660046134f6565b600a60209081526000928352604080842090915290825290205481565b34801561045457600080fd5b5061047861046336600461326d565b600c6020526000908152604090205460ff1681565b60405161026c9190613538565b34801561049157600080fd5b506103e36104a036600461326d565b610d7b565b3480156104b157600080fd5b506102956104c036600461326d565b610e15565b3480156104d157600080fd5b506103076104e036600461326d565b600b6020526000908152604090205481565b3480156104fe57600080fd5b5061029561050d366004613560565b610e42565b34801561051e57600080fd5b5061029561052d3660046135ba565b610f0b565b34801561053e57600080fd5b5061030761054d36600461326d565b60076020526000908152604090205481565b34801561056b57600080fd5b5061029561057a36600461342b565b610fca565b34801561058b57600080fd5b5061026061059a36600461326d565b600e6020526000908152604090205460ff1681565b3480156105bb57600080fd5b5061034b6105ca36600461326d565b6002602052600090815260409020546001600160a01b031681565b3480156105f157600080fd5b5061026061060036600461342b565b6110ba565b6103e361061336600461360c565b6110e3565b34801561062457600080fd5b50610307600081565b34801561063957600080fd5b5061066861064836600461342b565b600d60209081526000928352604080842090915290825290205460ff1681565b60405160ff909116815260200161026c565b34801561068657600080fd5b5061026061069536600461326d565b60086020526000908152604090205460ff1681565b3480156106b657600080fd5b506103076106c536600461326d565b60046020526000908152604090205481565b3480156106e357600080fd5b506103076106f236600461326d565b60036020526000908152604090205481565b34801561071057600080fd5b5061029561071f366004613652565b611673565b34801561073057600080fd5b5061029561073f36600461335c565b61183d565b34801561075057600080fd5b5061029561075f3660046136c3565b611862565b34801561077057600080fd5b5061029561077f36600461326d565b611900565b34801561079057600080fd5b5061026061079f3660046136ec565b601160209081526000938452604080852082529284528284209052825290205460ff1681565b3480156107d157600080fd5b506102956107e036600461342b565b6119c0565b6103e36107f3366004613718565b6119e6565b34801561080457600080fd5b50610295610813366004613718565b6119fa565b34801561082457600080fd5b5061034b610833366004613718565b600f6020908152600092835260408084209091529082529020546001600160a01b031681565b34801561086557600080fd5b50610295610874366004613718565b611a77565b34801561088557600080fd5b5061026061089436600461326d565b60096020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b14806108da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006108ec8133611af4565b600082815260046020526040812054158015906109b75750600083815260066020526040902080546109b591906109229061373a565b80601f016020809104026020016040519081016040528092919081815260200182805461094e9061373a565b801561099b5780601f106109705761010080835404028352916020019161099b565b820191906000526020600020905b81548152906001019060200180831161097e57829003601f168201915b505050505060405180602001604052806000815250611b58565b155b905080610a0b5760405162461bcd60e51b815260206004820152601a60248201527f70726f6a656374206e6f7420726561647920666f72206c69766500000000000060448201526064015b60405180910390fd5b50506000908152600860205260409020805460ff19166001179055565b60008481526002602052604090205484906001600160a01b03163314610a605760405162461bcd60e51b8152600401610a0290613774565b600085815260086020526040902054859060ff1615610a915760405162461bcd60e51b8152600401610a0290613798565b83610ad85760405162461bcd60e51b815260206004820152601760248201527614de5b589bdb081b5d5cdd081899481c1c9bdd9a591959604a1b6044820152606401610a02565b610b3285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526208aa8960eb1b60208201529150611b589050565b610b8c576001600160a01b038316610b8c5760405162461bcd60e51b815260206004820152601c60248201527f637572656e637920616464726573732063616e74206265207a65726f000000006044820152606401610a02565b6000868152600660205260409020610ba5908686613136565b50505060009384526005602052604090932080546001600160a01b0319166001600160a01b03909416939093179092555050565b6000610be58133611af4565b506000918252600b602052604090912060ff9091169055565b60008481526002602052604090205484906001600160a01b03163314610c365760405162461bcd60e51b8152600401610a0290613774565b60005b83811015610cb5576000868152600d602052604081208491878785818110610c6357610c636137c6565b9050602002016020810190610c7891906137dc565b6001600160a01b031681526020810191909152604001600020805460ff191660ff9290921691909117905580610cad8161380f565b915050610c39565b505050505050565b600082815260208190526040902060010154610cd98133611af4565b610ce38383611bb1565b505050565b6060610cf5848484611c35565b949350505050565b6001600160a01b0381163314610d6d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a02565b610d7782826122ab565b5050565b60066020526000908152604090208054610d949061373a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc09061373a565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b505050505081565b6000610e218133611af4565b506000908152600960205260409020805460ff19811660ff90911615179055565b60008381526002602052604090205483906001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610a0290613774565b60008481526010602052604081208390555b82811015610f0457838382818110610ea657610ea66137c6565b9050602002016020810190610ebb91906137dc565b6000868152600f60209081526040808320858452909152902080546001600160a01b0319166001600160a01b039290921691909117905580610efc8161380f565b915050610e8c565b5050505050565b6000610f178133611af4565b6001600160a01b038516610f6d5760405162461bcd60e51b815260206004820152601b60248201527f6f776e65722063616e2774206265207a65726f206164647265737300000000006044820152606401610a02565b50600094855260026020908152604080872080546001600160a01b0319166001600160a01b03979097169690961790955560098152848620805460ff1916941515949094179093556007835283852091909155600b909152912055565b6000610fd68133611af4565b6000838152600260205260409020546001600160a01b038084169116036110355760405162461bcd60e51b815260206004820152601360248201527231b0b713ba1031329039b0b6b29037bbb732b960691b6044820152606401610a02565b6001600160a01b03821661108b5760405162461bcd60e51b815260206004820152601b60248201527f6f776e65722063616e2774206265207a65726f206164647265737300000000006044820152606401610a02565b5060009182526002602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600084815260086020526040902054606090859060ff166111165760405162461bcd60e51b8152600401610a0290613828565b60008681526009602052604090205460ff161561116f5733321461116f5760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b6044820152606401610a02565b6001546040516309947d3760e31b8152600481018890526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa1580156111b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dd9190613856565b9050600080888152600c602052604090205460ff16600281111561120357611203613522565b036112505760405162461bcd60e51b815260206004820152601c60248201527f4d7573742072656465656d206166746572206f776e6572206d696e74000000006044820152606401610a02565b6000878152600f6020908152604080832060ff8916845282528083205481516323b890c560e11b815291516001600160a01b03918216949391861692634771218a9260048083019391928290030181865afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190613873565b1161130f5760405162461bcd60e51b815260206004820152600860248201526714dbdb19081bdd5d60c21b6044820152606401610a02565b6040516331a9108f60e11b81526004810186905233906001600160a01b03831690636352211e90602401602060405180830381865afa158015611356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137a9190613856565b6001600160a01b0316148061140357506040516331a9108f60e11b8152600481018690526001600160a01b038089169190831690636352211e90602401602060405180830381865afa1580156113d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f89190613856565b6001600160a01b0316145b61144f5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920746f6b656e206f776e65722063616e2072656465656d20706173736044820152606401610a02565b600088815260116020908152604080832060ff808b1685529083528184208985529092529091205416156114c55760405162461bcd60e51b815260206004820152601760248201527f616c72656164792072656465656d656420666f722049440000000000000000006044820152606401610a02565b600088815260116020908152604080832060ff8a1684528252808320888452909152808220805460ff19166001179055516335313c2160e11b81526001600160a01b038981166004830152841690636a627842906024016020604051808303816000875af115801561153b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155f9190613873565b90508660ff166000036115e15760405163d9a7c61d60e01b81526001600160a01b0389811660048301526024820188905284169063d9a7c61d906044016020604051808303816000875af11580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190613873565b505b60ff871615158061160157506000868152600e602052604090205460ff16155b1561161657611611896001612310565b61164a565b341561164a5760405133903480156108fc02916000818181858888f19350505050158015611648573d6000803e3d6000fd5b505b604080516020810183905201604051602081830303815290604052945050505050949350505050565b60008681526002602052604090205486906001600160a01b031633146116ab5760405162461bcd60e51b8152600401610a0290613774565b600087815260086020526040902054879060ff16156116dc5760405162461bcd60e51b8152600401610a0290613798565b856117235760405162461bcd60e51b815260206004820152601760248201527614de5b589bdb081b5d5cdd081899481c1c9bdd9a591959604a1b6044820152606401610a02565b61177d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600381526208aa8960eb1b60208201529150611b589050565b6117d7576001600160a01b0385166117d75760405162461bcd60e51b815260206004820152601c60248201527f637572656e637920616464726573732063616e74206265207a65726f000000006044820152606401610a02565b60008881526006602052604090206117f0908888613136565b505050600095865260056020908152604080882080546001600160a01b0319166001600160a01b039690961695909517909455600481528387209290925560039091529320929092555050565b60006118498133611af4565b5060009182526007602052604090912060ff9091169055565b60008281526002602052604090205482906001600160a01b0316331461189a5760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff166118ca5760405162461bcd60e51b8152600401610a0290613828565b6000848152600c60205260409020805484919060ff191660018360028111156118f5576118f5613522565b021790555050505050565b60008181526002602052604090205481906001600160a01b031633146119385760405162461bcd60e51b8152600401610a0290613774565b600082815260086020526040902054829060ff16156119695760405162461bcd60e51b8152600401610a0290613798565b604080518082018252600381526208aa8960eb1b60208083019182526000878152600690915292909220905161199f92906131ba565b505050600090815260056020526040902080546001600160a01b0319169055565b6000828152602081905260409020600101546119dc8133611af4565b610ce383836122ab565b60606119f3833384611c35565b9392505050565b60008281526002602052604090205482906001600160a01b03163314611a325760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff1615611a635760405162461bcd60e51b8152600401610a0290613798565b505060009182526003602052604090912055565b60008281526002602052604090205482906001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610a0290613774565b600083815260086020526040902054839060ff1615611ae05760405162461bcd60e51b8152600401610a0290613798565b505060009182526004602052604090912055565b611afe82826110ba565b610d7757611b16816001600160a01b0316601461265b565b611b2183602061265b565b604051602001611b3292919061388c565b60408051601f198184030181529082905262461bcd60e51b8252610a02916004016134c3565b600081604051602001611b6b9190613901565b6040516020818303038152906040528051906020012083604051602001611b929190613901565b6040516020818303038152906040528051906020012014905092915050565b611bbb82826110ba565b610d77576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055611bf13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600083815260086020526040902054606090849060ff16611c685760405162461bcd60e51b8152600401610a0290613828565b60008581526009602052604090205460ff1615611cc157333214611cc15760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b6044820152606401610a02565b6001546040516309947d3760e31b8152600481018790526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015611d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2f9190613856565b90506000816001600160a01b0316634771218a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d959190613873565b11611dcd5760405162461bcd60e51b815260206004820152600860248201526714dbdb19081bdd5d60c21b6044820152606401610a02565b83816001600160a01b0316634771218a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190613873565b1015611e7e5760405162461bcd60e51b815260206004820152601760248201527f436f756e74206578636564657320617661696c61626c650000000000000000006044820152606401610a02565b6000868152600c602052604081205460ff166002811115611ea157611ea1613522565b03611f8b576000868152600260205260409020546001600160a01b03163314611f0c5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f776e65722063616e206d696e74206e6f770000000000000000006044820152606401610a02565b600086815260036020526040902054841115611f625760405162461bcd60e51b81526020600482015260156024820152744578636564656473206d6178207072656d696e747360581b6044820152606401610a02565b60008681526003602052604081208054869290611f8090849061391d565b909155506121bf9050565b6000868152600b60205260409020541561203a576000868152600b6020908152604080832054338452600a83528184208a8552909252909120541061200a5760405162461bcd60e51b815260206004820152601560248201527414995858da1959081b5a5b9d1a5b99c81b1a5b5a5d605a1b6044820152606401610a02565b336000908152600a6020908152604080832089845290915281208054869290612034908490613934565b90915550505b60016000878152600c602052604090205460ff16600281111561205f5761205f613522565b03612119576000868152600d6020908152604080832033845290915290205460ff168411156120d05760405162461bcd60e51b815260206004820152601960248201527f4578636565647320616c6c6f776c697374656420636f756e74000000000000006044820152606401610a02565b6000868152600d60209081526040808320338452909152812080548692906120fc90849060ff1661394c565b92506101000a81548160ff021916908360ff1602179055506121b5565b60026000878152600c602052604090205460ff16600281111561213e5761213e613522565b036121b557600086815260076020526040902054156121b5576000868152600760205260409020548411156121b55760405162461bcd60e51b815260206004820152601d60248201527f436f756e7420657863656465732062756c6b206d696e74206c696d69740000006044820152606401610a02565b6121bf8685612310565b606060005b858110156122a0576040516335313c2160e11b81526001600160a01b03888116600483015260009190851690636a627842906024016020604051808303816000875af1158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c9190613873565b90508160000361226857604080516020810183905201604051602081830303815290604052925061228d565b828160405160200161227b92919061396f565b60405160208183030381529060405292505b50806122988161380f565b9150506121c4565b509695505050505050565b6122b582826110ba565b15610d77576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526004602052604081205461232990836127f7565b600084815260066020526040902080549192506123e8916123499061373a565b80601f01602080910402602001604051908101604052809291908181526020018280546123759061373a565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b50505050506040518060400160405280600381526020016208aa8960eb1b815250611b58565b6126015734156124605760405162461bcd60e51b815260206004820152603f60248201527f746869732070726f6a6563742061636365707473206120646966666572656e7460448201527f2063757272656e637920616e642063616e6e6f742061636365707420455448006064820152608401610a02565b60008381526005602052604090819020549051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156124bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124df9190613873565b10156125385760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742046756e647320417070726f76656420666f72206044820152610a8b60f31b6064820152608401610a02565b600083815260056020526040908190205490516370a0823160e01b815233600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801561258d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b19190613873565b10156125f75760405162461bcd60e51b815260206004820152601560248201527424b739bab33334b1b4b2b73a103130b630b731b29760591b6044820152606401610a02565b610ce38383612803565b803410156126515760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e74216044820152606401610a02565b610ce38383612d2d565b6060600061266a83600261399c565b612675906002613934565b67ffffffffffffffff81111561268d5761268d6139bb565b6040519080825280601f01601f1916602001820160405280156126b7576020820181803683370190505b509050600360fc1b816000815181106126d2576126d26137c6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612701576127016137c6565b60200101906001600160f81b031916908160001a905350600061272584600261399c565b612730906001613934565b90505b60018111156127a8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612764576127646137c6565b1a60f81b82828151811061277a5761277a6137c6565b60200101906001600160f81b031916908160001a90535060049490941c936127a1816139d1565b9050612733565b5083156119f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a02565b60006119f3828461399c565b6000828152600460205260408120549061281d82846127f7565b905060006128b06127106128aa600160009054906101000a90046001600160a01b03166001600160a01b0316631f7418976040518163ffffffff1660e01b81526004016020604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a39190613873565b85906127f7565b9061311e565b905080156129bc576000858152600560209081526040808320546001548251637dafc0d360e01b815292516001600160a01b03928316956323b872dd9533959390941693637dafc0d39360048082019492939183900301908290875af115801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129429190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ba91906139e8565b505b6001546040516309947d3760e31b8152600481018790526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015612a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2a9190613856565b9050806001600160a01b0316638cbe8d806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8e9190613856565b506000612b036127106128aa846001600160a01b0316632cc889746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afc9190613873565b87906127f7565b90508015612c0857600087815260056020908152604091829020548251636ff314c760e01b815292516001600160a01b03918216936323b872dd933393881692636ff314c79260048082019392918290030181865afa158015612b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8e9190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0691906139e8565b505b6000612c1e82612c18878761312a565b9061312a565b90508015612d23576000888152600560209081526040918290205482516301197d1b60e71b815292516001600160a01b03918216936323b872dd933393891692638cbe8d809260048082019392918290030181865afa158015612c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca99190613856565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064016020604051808303816000875af1158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2191906139e8565b505b5050505050505050565b3415610d775760008281526004602052604081205490612d4d82846127f7565b90506000612d5b348361312a565b90508015612d9257604051339082156108fc029083906000818181858888f19350505050158015612d90573d6000803e3d6000fd5b505b6000612e1d6127106128aa600160009054906101000a90046001600160a01b03166001600160a01b0316631f7418976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e169190613873565b86906127f7565b90508015612ed857600160009054906101000a90046001600160a01b03166001600160a01b0316637dafc0d36040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9e9190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015612ed6573d6000803e3d6000fd5b505b6001546040516309947d3760e31b8152600481018890526000916001600160a01b031690634ca3e9b890602401602060405180830381865afa158015612f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f469190613856565b90506000612fbc6127106128aa846001600160a01b0316632cc889746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb59190613873565b88906127f7565b9050801561306057816001600160a01b0316636ff314c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130269190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561305e573d6000803e3d6000fd5b505b600061307082612c18888761312a565b90508015612d2157826001600160a01b0316638cbe8d806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190613856565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015613112573d6000803e3d6000fd5b50505050505050505050565b60006119f38284613a05565b60006119f3828461391d565b8280546131429061373a565b90600052602060002090601f01602090048101928261316457600085556131aa565b82601f1061317d5782800160ff198235161785556131aa565b828001600101855582156131aa579182015b828111156131aa57823582559160200191906001019061318f565b506131b692915061322e565b5090565b8280546131c69061373a565b90600052602060002090601f0160209004810192826131e857600085556131aa565b82601f1061320157805160ff19168380011785556131aa565b828001600101855582156131aa579182015b828111156131aa578251825591602001919060010190613213565b5b808211156131b6576000815560010161322f565b60006020828403121561325557600080fd5b81356001600160e01b0319811681146119f357600080fd5b60006020828403121561327f57600080fd5b5035919050565b60008083601f84011261329857600080fd5b50813567ffffffffffffffff8111156132b057600080fd5b6020830191508360208285010111156132c857600080fd5b9250929050565b6001600160a01b03811681146132e457600080fd5b50565b600080600080606085870312156132fd57600080fd5b84359350602085013567ffffffffffffffff81111561331b57600080fd5b61332787828801613286565b909450925050604085013561333b816132cf565b939692955090935050565b803560ff8116811461335757600080fd5b919050565b6000806040838503121561336f57600080fd5b8235915061337f60208401613346565b90509250929050565b60008083601f84011261339a57600080fd5b50813567ffffffffffffffff8111156133b257600080fd5b6020830191508360208260051b85010111156132c857600080fd5b600080600080606085870312156133e357600080fd5b84359350602085013567ffffffffffffffff81111561340157600080fd5b61340d87828801613388565b9094509250613420905060408601613346565b905092959194509250565b6000806040838503121561343e57600080fd5b823591506020830135613450816132cf565b809150509250929050565b60008060006060848603121561347057600080fd5b833592506020840135613482816132cf565b929592945050506040919091013590565b60005b838110156134ae578181015183820152602001613496565b838111156134bd576000848401525b50505050565b60208152600082518060208401526134e2816040850160208701613493565b601f01601f19169190910160400192915050565b6000806040838503121561350957600080fd5b8235613514816132cf565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061355a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006040848603121561357557600080fd5b83359250602084013567ffffffffffffffff81111561359357600080fd5b61359f86828701613388565b9497909650939450505050565b80151581146132e457600080fd5b600080600080600060a086880312156135d257600080fd5b8535945060208601356135e4816132cf565b935060408601356135f4816135ac565b94979396509394606081013594506080013592915050565b6000806000806080858703121561362257600080fd5b843593506020850135613634816132cf565b925061364260408601613346565b9396929550929360600135925050565b60008060008060008060a0878903121561366b57600080fd5b86359550602087013567ffffffffffffffff81111561368957600080fd5b61369589828a01613286565b90965094505060408701356136a9816132cf565b959894975092956060810135946080909101359350915050565b600080604083850312156136d657600080fd5b8235915060208301356003811061345057600080fd5b60008060006060848603121561370157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561372b57600080fd5b50508035926020909101359150565b600181811c9082168061374e57607f821691505b60208210810361376e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b60208082526014908201527343616e27742063616c6c206f6e6365206c69766560601b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137ee57600080fd5b81356119f3816132cf565b634e487b7160e01b600052601160045260246000fd5b600060018201613821576138216137f9565b5060010190565b60208082526014908201527350726f6a656374206e6f7420796574206c69766560601b604082015260600190565b60006020828403121561386857600080fd5b81516119f3816132cf565b60006020828403121561388557600080fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516138c4816017850160208801613493565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516138f5816028840160208801613493565b01602801949350505050565b60008251613913818460208701613493565b9190910192915050565b60008282101561392f5761392f6137f9565b500390565b60008219821115613947576139476137f9565b500190565b600060ff821660ff841680821015613966576139666137f9565b90039392505050565b60008351613981818460208801613493565b600b60fa1b9201918252506001810191909152602101919050565b60008160001904831182151516156139b6576139b66137f9565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816139e0576139e06137f9565b506000190190565b6000602082840312156139fa57600080fd5b81516119f3816135ac565b600082613a2257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fb6dc7bd41c97bc1de8d011a01ef1800b543a9c03bd7b21a36252cc6269be4f364736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000016213f846a222da24eb4807a6cc5d0a5344994d6
-----Decoded View---------------
Arg [0] : _fineCoreAddresss (address): 0x16213f846a222DA24eB4807a6cC5D0A5344994D6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000016213f846a222da24eb4807a6cc5d0a5344994d6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.