1 tx
3 calls
constructor
constructor()
functions
authorizer
viewfunction authorizer() view returns (address)
basePlatformFee
viewfunction basePlatformFee() view returns (uint256)
deployedCollections
viewfunction deployedCollections(uint256) view returns (address)
getCollections
viewfunction getCollections() view returns (address[])
getGenerationFee
viewfunction getGenerationFee(string model) view returns (uint256)
getMintCollection
viewfunction getMintCollection(address user) view returns (address[])
getMintPadCollections
viewfunction getMintPadCollections() view returns (address[])
getPlatformFee
viewfunction getPlatformFee(uint256 _mintPrice) view returns (uint256)
getUserCollection
viewfunction getUserCollection(address user) view returns (address[])
hasMintedLevel
viewfunction hasMintedLevel(address, uint256) view returns (bool)
levelNFTCollection
viewfunction levelNFTCollection() view returns (address)
maxBasePlatformFee
viewfunction maxBasePlatformFee() view returns (uint256)
mintPadCollections
viewfunction mintPadCollections(uint256) view returns (address)
modelGenerationFee
viewfunction modelGenerationFee(string) view returns (uint256)
owner
viewfunction owner() view returns (address)
percentagePlatformFee
viewfunction percentagePlatformFee() view returns (uint256)
usedSignatures
viewfunction usedSignatures(bytes32) view returns (bool)
w3PassAddress
viewfunction w3PassAddress() view returns (address)
addModel
nonpayablefunction addModel(string model, uint256 _initialFee)
createAndMint
payablefunction createAndMint(string name, string description, string model, string style, string symbol, string initialBaseURI) payable
createCollection
nonpayablefunction createCollection(string name, string description, string model, string style, string symbol, string initialBaseURI, uint256 maxSupply, uint256 maxTime, bool mintPerWallet, uint256 mintPrice, bool isUltimateMintTime, bool isUltimateMintQuantity) returns (address)
mintLevelNFT
nonpayablefunction mintLevelNFT(uint256 level, bytes signature)
mintNFT
payablefunction mintNFT(address collectionAddress, address to, uint256 quantity) payable
mintW3Pass
payablefunction mintW3Pass(uint256 _discountTier, bytes32[] _merkleProof, bytes _signature) payable
payGenerateFee
payablefunction payGenerateFee(string model) payable
renounceOwnership
nonpayablefunction renounceOwnership()
setAuthorizer
nonpayablefunction setAuthorizer(address _newAuthorizer)
setBasePlatformFee
nonpayablefunction setBasePlatformFee(uint256 _newFee)
setGenerationModelFee
nonpayablefunction setGenerationModelFee(string model, uint256 _newFee)
setLevelNFTCollection
nonpayablefunction setLevelNFTCollection(address _collectionAddress)
setMaxBasePlatformFee
nonpayablefunction setMaxBasePlatformFee(uint256 _newFee)
setPercentageBasePlatformFee
nonpayablefunction setPercentageBasePlatformFee(uint256 _newFee)
setW3PassAddress
nonpayablefunction setW3PassAddress(address _newAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
events
AuthorizerSet
event AuthorizerSet(address indexed newAuthorizer)
BasePlatformFeeSet
event BasePlatformFeeSet(uint256 indexed newFee)
ChangeGenerateFee
event ChangeGenerateFee(uint256 indexed newFee)
CollectionCreated
event CollectionCreated(address indexed collection, string indexed name, string indexed description, string model, string style, string symbol, uint256 maxSupply, uint256 maxTime, string initialBaseURI, bool mintPerWallet, uint256 mintPrice, address owner)
EtherWithdrawn
event EtherWithdrawn(address indexed recipient, uint256 indexed amount)
LevelNFTCollectionSet
event LevelNFTCollectionSet(address indexed collectionAddress)
LevelNFTMinted
event LevelNFTMinted(address indexed collectionAddress, address indexed minter, uint256 indexed level, uint256 tokenId)
MaxBasePlatformFeeSet
event MaxBasePlatformFeeSet(uint256 indexed maxNewFee)
ModelFeeSet
event ModelFeeSet(string indexed model, uint256 indexed newFee)
NFTMinted
event NFTMinted(address indexed collectionAddress, address indexed to, uint256 indexed quantity)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PayGenerateFee
event PayGenerateFee(uint256 indexed amount)
PercentagePlatformFeeSet
event PercentagePlatformFeeSet(uint256 indexed newPercentage)
W3PassAddressSet
event W3PassAddressSet(address indexed w3PassAddress)
W3PassMinted
event W3PassMinted(address indexed minter)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InsufficientFee
error InsufficientFee()
InvalidRecipient
error InvalidRecipient()
NoEtherToWithdraw
error NoEtherToWithdraw()
OnlyAdmin
error OnlyAdmin()
OnlyAdminOrAuthorizer
error OnlyAdminOrAuthorizer()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040525f60055534801562000014575f80fd5b5033806200003b57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200004681620000be565b506509184e72a000600a604051620000669061763160f01b815260020190565b90815260405190819003602001812091909155613b1960f11b81526509184e72a00090600a906002019081526040519081900360200190205564e8d4a51000600c5566071afd498d0000600d556005600e556200010d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b614cb0806200011b5f395ff3fe60806040526004361062000227575f3560e01c8063715018a6116200012a578063c555f8d411620000aa578063e2fdff9a1162000076578063e2fdff9a1462000655578063e76f5f4a1462000679578063f2fde38b146200069d578063f634c1c514620006c1578063f978fd6114620006d8575f80fd5b8063c555f8d414620005d5578063d09edf3114620005f9578063d97939eb146200061a578063dd9658cd146200063e575f80fd5b80639616452311620000f657806396164523146200054b57806399432cf51462000562578063aa81073a1462000586578063af3ac78714620005a7578063be65124b14620005be575f80fd5b8063715018a614620004db57806372b2a6fb14620004f2578063806acdbd14620005095780638da5cb5b146200052d575f80fd5b8063441a494911620001b65780635e95b84f11620001825780635e95b84f1462000441578063618a88901462000465578063634b56f014620004895780636876f8be14620004a05780636f1b2fa814620004c4575f80fd5b8063441a4949146200036e57806344a3190d14620003b857806346e63586146200040657806351c63e35146200041d575f80fd5b806331d9b40911620001f657806331d9b40914620002ee57806333c8b1d0146200031257806334c17e8714620003365780633ccfd60b1462000357575f80fd5b806302342a85146200022b578063058a628f1462000267578063059d7e8c146200028d578063111ec81c14620002ca575b5f80fd5b34801562000237575f80fd5b506200024f6200024936600462001f02565b6200070a565b6040516200025e919062001f25565b60405180910390f35b34801562000273575f80fd5b506200028b6200028536600462001f02565b6200077f565b005b34801562000299575f80fd5b50620002b1620002ab36600462001f73565b6200083c565b6040516001600160a01b0390911681526020016200025e565b348015620002d6575f80fd5b50620002b1620002e83660046200204a565b62000865565b348015620002fa575f80fd5b50620002b16200030c36600462001f73565b62000a95565b3480156200031e575f80fd5b506200028b6200033036600462001f73565b62000aa5565b34801562000342575f80fd5b50600754620002b1906001600160a01b031681565b34801562000363575f80fd5b506200028b62000b1c565b3480156200037a575f80fd5b50620003a96200038c366004620021c2565b8051602081830181018051600a8252928201919093012091525481565b6040519081526020016200025e565b348015620003c4575f80fd5b50620003f5620003d6366004620021ff565b600860209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016200025e565b34801562000412575f80fd5b506200024f62000bc1565b34801562000429575f80fd5b50620003a96200043b36600462002271565b62000c23565b3480156200044d575f80fd5b506200028b6200045f366004620022b3565b62000c50565b34801562000471575f80fd5b506200028b62000483366004620022fe565b6200100c565b34801562000495575f80fd5b506200024f620010ee565b348015620004ac575f80fd5b506200028b620004be366004620022fe565b6200114e565b6200028b620004d536600462002349565b62001193565b348015620004e7575f80fd5b506200028b620012f4565b6200028b6200050336600462002271565b6200130b565b34801562000515575f80fd5b506200028b6200052736600462001f02565b62001381565b34801562000539575f80fd5b505f546001600160a01b0316620002b1565b34801562000557575f80fd5b50620003a9600c5481565b3480156200056e575f80fd5b506200028b6200058036600462001f73565b62001425565b34801562000592575f80fd5b50600b54620002b1906001600160a01b031681565b348015620005b3575f80fd5b50620003a9600d5481565b348015620005ca575f80fd5b50620003a9600e5481565b348015620005e1575f80fd5b506200024f620005f336600462001f02565b6200149c565b34801562000605575f80fd5b50600654620002b1906001600160a01b031681565b34801562000626575f80fd5b50620003a96200063836600462001f73565b6200150f565b6200028b6200064f36600462002387565b62001546565b34801562000661575f80fd5b506200028b6200067336600462001f02565b62001793565b34801562000685575f80fd5b506200028b6200069736600462001f73565b6200184c565b348015620006a9575f80fd5b506200028b620006bb36600462001f02565b620018c3565b6200028b620006d236600462002430565b62001906565b348015620006e4575f80fd5b50620003f5620006f636600462001f73565b60096020525f908152604090205460ff1681565b6001600160a01b0381165f908152600460209081526040918290208054835181840281018401909452808452606093928301828280156200077357602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000754575b50505050509050919050565b6200078962001b89565b6001600160a01b038116620007f35760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f742073657420617574686f72697a657220746f207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517fb251079a3e59729d2256949e48e44b7959908cdf34789078b6a1462ec3276720905f90a250565b600281815481106200084c575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f80604051806101a001604052808f81526020018e81526020018d81526020018c81526020018b8152602001846200089e5789620008a1565b5f195b815260200185620008b35788620008b6565b5f195b81526020018a81526020018715158152602001868152602001620008e15f546001600160a01b031690565b6001600160a01b0316815233602082015230604091820152519091505f9082906200090c9062001edd565b6200091891906200257e565b604051809103905ff08015801562000932573d5f803e3d5ffd5b506001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b03199182168117909255600280548085019091557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018054821683179055335f90815260036020908152604080832080549687018155835291209093018054909116909117905551909150620009e9908f90620026cb565b60405180910390208f60405162000a019190620026cb565b6040518091039020826001600160a01b03167f135f2dbcf3595047be1315ad9769e48d2821633b335029c5f74817fd4525ae898560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518d610160015160405162000a7b99989796959493929190620026e8565b60405180910390a49e9d5050505050505050505050505050565b600181815481106200084c575f80fd5b5f546001600160a01b0316331480159062000acb57506006546001600160a01b03163314155b1562000aea5760405163f1cfd5d360e01b815260040160405180910390fd5b600e81905560405181907f75faffe75a3166656e7f696e84a459c5667ba0e5606bae570bfea881450db78c905f90a250565b62000b2662001b89565b5f546001600160a01b03168062000b5057604051634e46966960e11b815260040160405180910390fd5b475f81900362000b7357604051632450b79d60e11b815260040160405180910390fd5b62000b886001600160a01b0383168262001bb7565b60405181906001600160a01b038416907f06097061aeda806b5e9cb4133d9899f332ff0913956567fc0f7ea15e3d19947c905f90a35050565b6060600180548060200260200160405190810160405280929190818152602001828054801562000c1957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000bfa575b5050505050905090565b5f600a838360405162000c3892919062002777565b90815260200160405180910390205490505b92915050565b6007546001600160a01b031662000caa5760405162461bcd60e51b815260206004820152601c60248201527f4c6576656c204e465420636f6c6c656374696f6e206e6f7420736574000000006044820152606401620007ea565b6006546001600160a01b031662000cf95760405162461bcd60e51b8152602060048201526012602482015271105d5d1a1bdc9a5e995c881b9bdd081cd95d60721b6044820152606401620007ea565b335f90815260086020908152604080832086845290915290205460ff161562000d705760405162461bcd60e51b815260206004820152602260248201527f596f75206861766520616c7265616479206d696e7465642074686973206c6576604482015261195b60f21b6064820152608401620007ea565b5f828260405162000d8392919062002777565b60408051918290039091205f8181526009602052919091205490915060ff161562000dea5760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c9948185b1c9958591e481d5cd95960521b6044820152606401620007ea565b6040516bffffffffffffffffffffffff193360601b166020820152603481018590525f906054016040516020818303038152906040528051906020012090505f62000e61827f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b90505f62000ea786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869392505062001c509050565b6006549091506001600160a01b0380831691161462000efd5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401620007ea565b335f8181526008602090815260408083208b8452909152808220805460ff1916600117905560075490516340c10f1960e01b81526004810193909352602483018a905290916001600160a01b03909116906340c10f19906044016020604051808303815f875af115801562000f74573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000f9a919062002786565b5f8681526009602052604090819020805460ff191660011790556007549051919250899133916001600160a01b0316907f6f83ddf415d64fe4327d5d8fdadd602bd988566aea7a66158c9d3e0fd79f156b9062000ffa9086815260200190565b60405180910390a45050505050505050565b6200101662001b89565b600a83836040516200102a92919062002777565b9081526020016040518091039020545f14620010805760405162461bcd60e51b81526020600482015260146024820152734d6f64656c20616c72656164792065786973747360601b6044820152606401620007ea565b80600a84846040516200109592919062002777565b908152602001604051809103902081905550808383604051620010ba92919062002777565b604051908190038120907f3d1d9e8fb13faa4246f2ab2c3fd238806cf12b847a35de62340e06c1fc7a4f7a905f90a3505050565b6060600280548060200260200160405190810160405280929190818152602001828054801562000c1957602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000bfa575050505050905090565b5f546001600160a01b031633148015906200117457506006546001600160a01b03163314155b15620010805760405163f1cfd5d360e01b815260040160405180910390fd5b604051631c710e6760e11b81526001600160a01b03838116600483015284915f918316906338e21cce90602401602060405180830381865afa158015620011dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200120291906200279e565b6040516340c10f1960e01b81526001600160a01b03868116600483015260248201869052919250908316906340c10f199034906044015f604051808303818588803b15801562001250575f80fd5b505af115801562001263573d5f803e3d5ffd5b505050505080620012ac576001600160a01b038481165f9081526004602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b82846001600160a01b0316866001600160a01b03167f2f7377f0470ca5f5d5bcb55c33ff5e20e0a2653933e0615e99f01e81640d0a9260405160405180910390a45050505050565b620012fe62001b89565b620013095f62001c7c565b565b5f600a83836040516200132092919062002777565b908152602001604051809103902054905080341015620013525760405162976f7560e21b815260040160405180910390fd5b60405134907f18670fa1cdfd19af5ad00ef62100297b4c830d6a097ff81c909accc556777613905f90a2505050565b6200138b62001b89565b6001600160a01b038116620013dc5760405162461bcd60e51b815260206004820152601660248201527543616e6e6f74206265207a65726f206164647265737360501b6044820152606401620007ea565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f7385b7560f5405dff81649e6c766532edc2772c415bfe8ba2b8100d288b665d9905f90a250565b5f546001600160a01b031633148015906200144b57506006546001600160a01b03163314155b156200146a5760405163f1cfd5d360e01b815260040160405180910390fd5b600d81905560405181907f7c7486a3781a20d42c9a0cc71380d3bbc70a58898719a52745dad523674ecbc1905f90a250565b6001600160a01b0381165f908152600360209081526040918290208054835181840281018401909452808452606093928301828280156200077357602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620007545750505050509050919050565b5f600d5482111562001539576064600e54836200152d9190620027d0565b62000c4a9190620027ea565b5050600c5490565b919050565b600b546001600160a01b0316620015995760405162461bcd60e51b815260206004820152601660248201527515ccd41054d4c81859191c995cdcc81b9bdd081cd95d60521b6044820152606401620007ea565b6006546001600160a01b0316620015e85760405162461bcd60e51b8152602060048201526012602482015271105d5d1a1bdc9a5e995c881b9bdd081cd95d60721b6044820152606401620007ea565b604080513360601b6bffffffffffffffffffffffff191660208083019190915282516014818403018152603490920190925280519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c812090505f6200169385858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869392505062001c509050565b6006549091506001600160a01b03808316911614620016f55760405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420617574686f72697a6572207369676e6174757265000000006044820152606401620007ea565b600b54604051630190738560e61b81526001600160a01b039091169063641ce1409034906200172f9033908d908d908d906004016200280a565b5f604051808303818588803b15801562001747575f80fd5b505af11580156200175a573d5f803e3d5ffd5b50506040513393507fbc24e9a943218d17067a1351f8078c6bc6926f656863f34b1abff1e9503c121b92505f9150a25050505050505050565b6200179d62001b89565b6001600160a01b038116620018035760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f742073657420636f6c6c656374696f6e20746f207a65726f206164604482015264647265737360d81b6064820152608401620007ea565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f13b06a27f15378e8f18b7df703b5c344936ac73d48d0cacf2a4c3cd297015dfb905f90a250565b5f546001600160a01b031633148015906200187257506006546001600160a01b03163314155b15620018915760405163f1cfd5d360e01b815260040160405180910390fd5b600c81905560405181907f85e719490764df16f8621cf6bbc641fa378d51f0f20a1a45d7499ae565e1109c905f90a250565b620018cd62001b89565b6001600160a01b038116620018f857604051631e4fbdf760e01b81525f6004820152602401620007ea565b620019038162001c7c565b50565b5f6200191542610e106200285b565b90505f600190505f604051806101a001604052808a81526020018981526020018881526020018781526020018681526020018381526020018481526020018581526020016001151581526020015f81526020016200197a5f546001600160a01b031690565b6001600160a01b0316815233602082015230604091820152519091505f908290620019a59062001edd565b620019b191906200257e565b604051809103905ff080158015620019cb573d5f803e3d5ffd5b506001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b03199182168117909255335f818152600460209081526040808320805480890182559084528284200180548616871790559282526003815282822080549687018155825290209093018054909116909117905551909150819062001a70908b90620026cb565b60405180910390208b60405162001a889190620026cb565b6040518091039020826001600160a01b03167f135f2dbcf3595047be1315ad9769e48d2821633b335029c5f74817fd4525ae898c8c8c8a8c8e60015f3360405162001adc99989796959493929190620026e8565b60405180910390a46040516340c10f1960e01b8152336004820152600160248201526001600160a01b038316906340c10f199034906044015f604051808303818588803b15801562001b2c575f80fd5b505af115801562001b3f573d5f803e3d5ffd5b5050604051600193503392506001600160a01b03851691507f2f7377f0470ca5f5d5bcb55c33ff5e20e0a2653933e0615e99f01e81640d0a92905f90a45050505050505050505050565b5f546001600160a01b03163314620013095760405163118cdaa760e01b8152336004820152602401620007ea565b8047101562001be35760405163cf47918160e01b815247600482015260248101829052604401620007ea565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f811462001c2f576040519150601f19603f3d011682016040523d82523d5f602084013e62001c34565b606091505b50915091508162001c4a5762001c4a8162001ccb565b50505050565b5f805f8062001c60868662001cf5565b92509250925062001c72828262001d42565b5090949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80511562001cdc5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f805f835160410362001d30576020840151604085015160608601515f1a62001d218882858562001e10565b95509550955050505062001d3b565b505081515f91506002905b9250925092565b5f82600381111562001d585762001d5862002871565b0362001d62575050565b600182600381111562001d795762001d7962002871565b0362001d985760405163f645eedf60e01b815260040160405180910390fd5b600282600381111562001daf5762001daf62002871565b0362001dd25760405163fce698f760e01b815260048101829052602401620007ea565b600382600381111562001de95762001de962002871565b0362001e0c576040516335e2f38360e21b815260048101829052602401620007ea565b5050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111562001e4b57505f9150600390508262001ed3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001e9d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811662001eca57505f92506001915082905062001ed3565b92505f91508190505b9450945094915050565b6123f5806200288683390190565b80356001600160a01b038116811462001541575f80fd5b5f6020828403121562001f13575f80fd5b62001f1e8262001eeb565b9392505050565b602080825282518282018190525f9190848201906040850190845b8181101562001f675783516001600160a01b03168352928401929184019160010162001f40565b50909695505050505050565b5f6020828403121562001f84575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262001faf575f80fd5b81356001600160401b038082111562001fcc5762001fcc62001f8b565b604051601f8301601f19908116603f0116810190828211818310171562001ff75762001ff762001f8b565b8160405283815286602085880101111562002010575f80fd5b836020870160208301375f602085830101528094505050505092915050565b801515811462001903575f80fd5b803562001541816200202f565b5f805f805f805f805f805f806101808d8f03121562002067575f80fd5b6001600160401b038d3511156200207c575f80fd5b6200208b8e8e358f0162001f9f565b9b506001600160401b0360208e01351115620020a5575f80fd5b620020b78e60208f01358f0162001f9f565b9a506001600160401b0360408e01351115620020d1575f80fd5b620020e38e60408f01358f0162001f9f565b99506001600160401b0360608e01351115620020fd575f80fd5b6200210f8e60608f01358f0162001f9f565b98506001600160401b0360808e0135111562002129575f80fd5b6200213b8e60808f01358f0162001f9f565b97506001600160401b0360a08e0135111562002155575f80fd5b620021678e60a08f01358f0162001f9f565b965060c08d0135955060e08d01359450620021866101008e016200203d565b93506101208d013592506200219f6101408e016200203d565b9150620021b06101608e016200203d565b90509295989b509295989b509295989b565b5f60208284031215620021d3575f80fd5b81356001600160401b03811115620021e9575f80fd5b620021f78482850162001f9f565b949350505050565b5f806040838503121562002211575f80fd5b6200221c8362001eeb565b946020939093013593505050565b5f8083601f8401126200223b575f80fd5b5081356001600160401b0381111562002252575f80fd5b6020830191508360208285010111156200226a575f80fd5b9250929050565b5f806020838503121562002283575f80fd5b82356001600160401b0381111562002299575f80fd5b620022a7858286016200222a565b90969095509350505050565b5f805f60408486031215620022c6575f80fd5b8335925060208401356001600160401b03811115620022e3575f80fd5b620022f1868287016200222a565b9497909650939450505050565b5f805f6040848603121562002311575f80fd5b83356001600160401b0381111562002327575f80fd5b62002335868287016200222a565b909790965060209590950135949350505050565b5f805f606084860312156200235c575f80fd5b620023678462001eeb565b9250620023776020850162001eeb565b9150604084013590509250925092565b5f805f805f606086880312156200239c575f80fd5b8535945060208601356001600160401b0380821115620023ba575f80fd5b818801915088601f830112620023ce575f80fd5b813581811115620023dd575f80fd5b8960208260051b8501011115620023f2575f80fd5b60208301965080955050604088013591508082111562002410575f80fd5b506200241f888289016200222a565b969995985093965092949392505050565b5f805f805f8060c0878903121562002446575f80fd5b86356001600160401b03808211156200245d575f80fd5b6200246b8a838b0162001f9f565b9750602089013591508082111562002481575f80fd5b6200248f8a838b0162001f9f565b96506040890135915080821115620024a5575f80fd5b620024b38a838b0162001f9f565b95506060890135915080821115620024c9575f80fd5b620024d78a838b0162001f9f565b94506080890135915080821115620024ed575f80fd5b620024fb8a838b0162001f9f565b935060a089013591508082111562002511575f80fd5b506200252089828a0162001f9f565b9150509295509295509295565b5f5b83811015620025495781810151838201526020016200252f565b50505f910152565b5f81518084526200256a8160208601602086016200252d565b601f01601f19169290920160200192915050565b602081525f82516101a08060208501526200259e6101c085018362002551565b91506020850151601f1980868503016040870152620025be848362002551565b93506040870151915080868503016060870152620025dd848362002551565b93506060870151915080868503016080870152620025fc848362002551565b935060808701519150808685030160a08701526200261b848362002551565b935060a087015160c087015260c087015160e087015260e0870151915061010081878603018188015262002650858462002551565b945080880151925050506101206200266b8187018315159052565b86015161014086810191909152860151905061016062002695818701836001600160a01b03169052565b8601519050610180620026b2868201836001600160a01b03169052565b909501516001600160a01b031693019290925250919050565b5f8251620026de8184602087016200252d565b9190910192915050565b5f610120808352620026fd8184018d62002551565b9050828103602084015262002713818c62002551565b9050828103604084015262002729818b62002551565b905088606084015287608084015282810360a08401526200274b818862002551565b95151560c0840152505060e08101929092526001600160a01b0316610100909101529695505050505050565b818382375f9101908152919050565b5f6020828403121562002797575f80fd5b5051919050565b5f60208284031215620027af575f80fd5b815162001f1e816200202f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000c4a5762000c4a620027bc565b5f826200280557634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03851681526020810184905260606040820181905281018290525f6001600160fb1b0383111562002840575f80fd5b8260051b808560808501379190910160800195945050505050565b8082018082111562000c4a5762000c4a620027bc565b634e487b7160e01b5f52602160045260245ffdfe61010060405234801562000011575f80fd5b50604051620023f5380380620023f58339810160408190526200003491620003b8565b610140810151815160808301515f6200004e8382620005eb565b5060016200005d8282620005eb565b5050506001600160a01b0381166200008f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200009a8162000240565b50620000a842603c620006b7565b8160c0015110156200010c5760405162461bcd60e51b815260206004820152602660248201527f4d61782074696d652073686f756c6420626520656e64207570206e657874206d604482015265696e7574657360d01b606482015260840162000086565b60018160a0015110156200016f5760405162461bcd60e51b815260206004820152602360248201527f4d617820537570706c792073686f756c642062652067726174686572207468616044820152626e203160e81b606482015260840162000086565b60a0810151600b5560e0810151600c906200018b9082620005eb565b505f600a5560c0810151600d5561010081015115156080526020810151600790620001b79082620005eb565b506060810151600890620001cc9082620005eb565b506040810151600990620001e19082620005eb565b5061012081015160c0908152810151600e805460a08085015161ffff199092165f1994851461ff0019161761010094909214939093021790556101608201516001600160a01b0390811660e052610180909201519091169052620006dd565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b6040516101a081016001600160401b0381118282101715620002cb57620002cb62000291565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620002fc57620002fc62000291565b604052919050565b5f82601f83011262000314575f80fd5b81516001600160401b0381111562000330576200033062000291565b602062000346601f8301601f19168201620002d1565b82815285828487010111156200035a575f80fd5b5f5b83811015620003795785810183015182820184015282016200035c565b505f928101909101919091529392505050565b805180151581146200039c575f80fd5b919050565b80516001600160a01b03811681146200039c575f80fd5b5f60208284031215620003c9575f80fd5b81516001600160401b0380821115620003e0575f80fd5b908301906101a08286031215620003f5575f80fd5b620003ff620002a5565b8251828111156200040e575f80fd5b6200041c8782860162000304565b82525060208301518281111562000431575f80fd5b6200043f8782860162000304565b60208301525060408301518281111562000457575f80fd5b620004658782860162000304565b6040830152506060830151828111156200047d575f80fd5b6200048b8782860162000304565b606083015250608083015182811115620004a3575f80fd5b620004b18782860162000304565b60808301525060a083015160a082015260c083015160c082015260e083015182811115620004dd575f80fd5b620004eb8782860162000304565b60e0830152506101009150620005038284016200038c565b8282015261012091508183015182820152610140915062000526828401620003a1565b8282015261016091506200053c828401620003a1565b82820152610180915062000552828401620003a1565b91810191909152949350505050565b600181811c908216806200057657607f821691505b6020821081036200059557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005e657805f5260205f20601f840160051c81016020851015620005c25750805b601f840160051c820191505b81811015620005e3575f8155600101620005ce565b50505b505050565b81516001600160401b0381111562000607576200060762000291565b6200061f8162000618845462000561565b846200059b565b602080601f83116001811462000655575f84156200063d5750858301515b5f19600386901b1c1916600185901b178555620006af565b5f85815260208120601f198616915b82811015620006855788860151825594840194600190910190840162000664565b5085821015620006a357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b80820180821115620006d757634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e051611cb3620007425f395f81816105ed01528181610ad501528181610cf00152610d2801525f81816109fe0152610aa001525f81816104de0152610a2601525f818161041f01528181610c130152610e8d0152611cb35ff3fe608060405260043610610207575f3560e01c8063715018a611610113578063b88d4fde1161009d578063d5d643ce1161006d578063d5d643ce146105c3578063e927fc5c146105dc578063e985e9c51461060f578063eb6db3381461062e578063f2fde38b14610642575f80fd5b8063b88d4fde1461055c578063c87b56dd1461057b578063cfc86f7b1461059a578063d5abeb01146105ae575f80fd5b806395d89b41116100e357806395d89b41146104b9578063966dae0e146104cd57806398b777e714610500578063a22cb4651461051f578063a6728a431461053e575f80fd5b8063715018a6146104605780637284e41614610474578063780e0a90146104885780638da5cb5b1461049c575f80fd5b80633ccfd60b1161019457806355f804b31161016457806355f804b3146103b15780636352211e146103d05780636f8b44b0146103ef578063700c35d21461040e57806370a0823114610441575f80fd5b80633ccfd60b1461034c57806340c10f191461036057806342842e0e146103735780634f6c171d14610392575f80fd5b80630ad9d052116101da5780630ad9d052146102b857806318160ddd146102cc57806322e67e71146102ea57806323b872dd146102ff57806338e21cce1461031e575f80fd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f80fd5b348015610216575f80fd5b5061022a6102253660046117b1565b610661565b60405190151581526020015b60405180910390f35b34801561024a575f80fd5b506102536106b2565b6040516102369190611816565b34801561026b575f80fd5b5061027f61027a366004611828565b610741565b6040516001600160a01b039091168152602001610236565b3480156102a2575f80fd5b506102b66102b136600461185a565b610768565b005b3480156102c3575f80fd5b50610253610777565b3480156102d7575f80fd5b50600a545b604051908152602001610236565b3480156102f5575f80fd5b506102dc600d5481565b34801561030a575f80fd5b506102b6610319366004611882565b610803565b348015610329575f80fd5b5061022a6103383660046118bb565b600f6020525f908152604090205460ff1681565b348015610357575f80fd5b506102b6610891565b6102b661036e36600461185a565b610995565b34801561037e575f80fd5b506102b661038d366004611882565b610e5d565b34801561039d575f80fd5b5061022a6103ac3660046118bb565b610e7c565b3480156103bc575f80fd5b506102b66103cb36600461195b565b610ed1565b3480156103db575f80fd5b5061027f6103ea366004611828565b610f20565b3480156103fa575f80fd5b506102b6610409366004611828565b610f2a565b348015610419575f80fd5b5061022a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044c575f80fd5b506102dc61045b3660046118bb565b610f78565b34801561046b575f80fd5b506102b6610fbd565b34801561047f575f80fd5b50610253610fd0565b348015610493575f80fd5b50610253610fdd565b3480156104a7575f80fd5b506006546001600160a01b031661027f565b3480156104c4575f80fd5b50610253610fea565b3480156104d8575f80fd5b5061027f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b575f80fd5b506102b661051a366004611828565b610ff9565b34801561052a575f80fd5b506102b66105393660046119a0565b611042565b348015610549575f80fd5b50600e5461022a90610100900460ff1681565b348015610567575f80fd5b506102b66105763660046119d9565b61104d565b348015610586575f80fd5b50610253610595366004611828565b611065565b3480156105a5575f80fd5b5061025361106f565b3480156105b9575f80fd5b506102dc600b5481565b3480156105ce575f80fd5b50600e5461022a9060ff1681565b3480156105e7575f80fd5b5061027f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561061a575f80fd5b5061022a610629366004611a50565b61107c565b348015610639575f80fd5b5061022a6110a9565b34801561064d575f80fd5b506102b661065c3660046118bb565b6110c3565b5f6001600160e01b031982166380ac58cd60e01b148061069157506001600160e01b03198216635b5e139f60e01b145b806106ac57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f80546106c090611a81565b80601f01602080910402602001604051908101604052809291908181526020018280546106ec90611a81565b80156107375780601f1061070e57610100808354040283529160200191610737565b820191905f5260205f20905b81548152906001019060200180831161071a57829003601f168201915b5050505050905090565b5f61074b82611100565b505f828152600460205260409020546001600160a01b03166106ac565b610773828233611138565b5050565b6009805461078490611a81565b80601f01602080910402602001604051908101604052809291908181526020018280546107b090611a81565b80156107fb5780601f106107d2576101008083540402835291602001916107fb565b820191905f5260205f20905b8154815290600101906020018083116107de57829003601f168201915b505050505081565b6001600160a01b03821661083157604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f61083d838333611145565b9050836001600160a01b0316816001600160a01b03161461088b576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610828565b50505050565b610899611237565b5f6108ac6006546001600160a01b031690565b90506001600160a01b0381166109045760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e742061646472657373000000000000006044820152606401610828565b47806109495760405162461bcd60e51b81526020600482015260146024820152734e6f20457468657220746f20776974686472617760601b6044820152606401610828565b61095c6001600160a01b03831682611264565b60405181906001600160a01b038416907f06097061aeda806b5e9cb4133d9899f332ff0913956567fc0f7ea15e3d19947c905f90a35050565b5f81116109ef5760405162461bcd60e51b815260206004820152602260248201527f5175616e74697479206d7573742062652067726561746572207468616e207a65604482015261726f60f01b6064820152608401610828565b60405163d97939eb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d97939eb90602401602060405180830381865afa158015610a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a979190611ab9565b90505f610ac4837f0000000000000000000000000000000000000000000000000000000000000000611ae4565b90505f610ad18484611ae4565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610b10575f91505b5f610b1b8284611afb565b90508015610b6b5780341015610b6b5760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58da595b9d08115512081cd95b9d605a1b6044820152606401610828565b600d54421115610bbd5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e6720706572696f642068617320656e64656400000000000000006044820152606401610828565b600b54600a54610bce908790611afb565b1115610c115760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610828565b7f000000000000000000000000000000000000000000000000000000000000000015610ce8576001851115610c885760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f6e65204e4654207065722077616c6c65740000000000000000006044820152606401610828565b6001600160a01b0386165f908152600f602052604090205460ff1615610ce85760405162461bcd60e51b815260206004820152601560248201527415d85b1b195d08185b1c9958591e481b5a5b9d1959605a1b6044820152606401610828565b8215610d70577f0000000000000000000000000000000000000000000000000000000000000000610d198185611264565b60405184906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fd4b790586a22e543be99b9a2560a5863f3188af747b3d27ee2bacbd291d49537905f90a3505b8115610dd5575f610d896006546001600160a01b031690565b9050610d9e6001600160a01b03821684611264565b60405183906001600160a01b038316907f06097061aeda806b5e9cb4133d9899f332ff0913956567fc0f7ea15e3d19947c905f90a3505b6001600160a01b0386165f908152600f60205260408120805460ff19166001179055600a5490610e058783611afb565b905086600a5f015f828254610e1a9190611afb565b909155505f9050610e2c836001611afb565b90505b818111610e5257610e4089826112f0565b80610e4a81611b0e565b915050610e2f565b505050505050505050565b610e7783838360405180602001604052805f81525061104d565b505050565b5f610e856110a9565b806106ac57507f000000000000000000000000000000000000000000000000000000000000000080156106ac5750506001600160a01b03165f908152600f602052604090205460ff1690565b610ed9611237565b600c610ee58282611b6a565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad81604051610f159190611816565b60405180910390a150565b5f6106ac82611100565b610f32611237565b600b819055600e805461ff0019165f1983146101000217905560405181907f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c905f90a250565b5f6001600160a01b038216610fa2576040516322718ad960e21b81525f6004820152602401610828565b506001600160a01b03165f9081526003602052604090205490565b610fc5611237565b610fce5f611309565b565b6007805461078490611a81565b6008805461078490611a81565b6060600180546106c090611a81565b611001611237565b600d819055600e805460ff19165f19831417905560405181907fdcc2397cbdfd096a8c766309b72e7dcb3750a9a06087f2400925c9237c8220ee905f90a250565b61077333838361135a565b611058848484610803565b61088b33858585856113f8565b60606106ac611520565b600c805461078490611a81565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f600d544211806110be5750600b54600a5410155b905090565b6110cb611237565b6001600160a01b0381166110f457604051631e4fbdf760e01b81525f6004820152602401610828565b6110fd81611309565b50565b5f818152600260205260408120546001600160a01b0316806106ac57604051637e27328960e01b815260048101849052602401610828565b610e77838383600161152f565b5f828152600260205260408120546001600160a01b039081169083161561117157611171818486611633565b6001600160a01b038116156111ab5761118c5f855f8061152f565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156111d9576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b03163314610fce5760405163118cdaa760e01b8152336004820152602401610828565b8047101561128e5760405163cf47918160e01b815247600482015260248101829052604401610828565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f81146112d8576040519150601f19603f3d011682016040523d82523d5f602084013e6112dd565b606091505b50915091508161088b5761088b81611697565b610773828260405180602001604052805f8152506116c0565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661138c57604051630b61174360e31b81526001600160a01b0383166004820152602401610828565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561151957604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061143a908890889087908790600401611c26565b6020604051808303815f875af1925050508015611474575060408051601f3d908101601f1916820190925261147191810190611c62565b60015b6114db573d8080156114a1576040519150601f19603f3d011682016040523d82523d5f602084013e6114a6565b606091505b5080515f036114d357604051633250574960e11b81526001600160a01b0385166004820152602401610828565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461151757604051633250574960e11b81526001600160a01b0385166004820152602401610828565b505b5050505050565b6060600c80546106c090611a81565b808061154357506001600160a01b03821615155b15611604575f61155284611100565b90506001600160a01b0383161580159061157e5750826001600160a01b0316816001600160a01b031614155b8015611591575061158f818461107c565b155b156115ba5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610828565b81156116025783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61163e8383836116d7565b610e77576001600160a01b03831661166c57604051637e27328960e01b815260048101829052602401610828565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610828565b8051156116a75780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6116ca838361173b565b610e77335f8585856113f8565b5f6001600160a01b038316158015906117335750826001600160a01b0316846001600160a01b031614806117105750611710848461107c565b8061173357505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b03821661176457604051633250574960e11b81525f6004820152602401610828565b5f61177083835f611145565b90506001600160a01b03811615610e77576040516339e3563760e11b81525f6004820152602401610828565b6001600160e01b0319811681146110fd575f80fd5b5f602082840312156117c1575f80fd5b81356117cc8161179c565b9392505050565b5f81518084525f5b818110156117f7576020818501810151868301820152016117db565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6117cc60208301846117d3565b5f60208284031215611838575f80fd5b5035919050565b80356001600160a01b0381168114611855575f80fd5b919050565b5f806040838503121561186b575f80fd5b6118748361183f565b946020939093013593505050565b5f805f60608486031215611894575f80fd5b61189d8461183f565b92506118ab6020850161183f565b9150604084013590509250925092565b5f602082840312156118cb575f80fd5b6117cc8261183f565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611902576119026118d4565b604051601f8501601f19908116603f0116810190828211818310171561192a5761192a6118d4565b81604052809350858152868686011115611942575f80fd5b858560208301375f602087830101525050509392505050565b5f6020828403121561196b575f80fd5b813567ffffffffffffffff811115611981575f80fd5b8201601f81018413611991575f80fd5b611733848235602084016118e8565b5f80604083850312156119b1575f80fd5b6119ba8361183f565b9150602083013580151581146119ce575f80fd5b809150509250929050565b5f805f80608085870312156119ec575f80fd5b6119f58561183f565b9350611a036020860161183f565b925060408501359150606085013567ffffffffffffffff811115611a25575f80fd5b8501601f81018713611a35575f80fd5b611a44878235602084016118e8565b91505092959194509250565b5f8060408385031215611a61575f80fd5b611a6a8361183f565b9150611a786020840161183f565b90509250929050565b600181811c90821680611a9557607f821691505b602082108103611ab357634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611ac9575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106ac576106ac611ad0565b808201808211156106ac576106ac611ad0565b5f60018201611b1f57611b1f611ad0565b5060010190565b601f821115610e7757805f5260205f20601f840160051c81016020851015611b4b5750805b601f840160051c820191505b81811015611519575f8155600101611b57565b815167ffffffffffffffff811115611b8457611b846118d4565b611b9881611b928454611a81565b84611b26565b602080601f831160018114611bcb575f8415611bb45750858301515b5f19600386901b1c1916600185901b178555611517565b5f85815260208120601f198616915b82811015611bf957888601518255948401946001909101908401611bda565b5085821015611c1657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611c58908301846117d3565b9695505050505050565b5f60208284031215611c72575f80fd5b81516117cc8161179c56fea2646970667358221220d13528935098247fdadfcb0523b34d553fc2a9165f52d41937ac04805c16798f64736f6c63430008180033a2646970667358221220f589c8e619984eec5c5e0f66032e710d2ec3d04e724ab50220aee865fd89ccf064736f6c63430008180033