0 txs
0 calls
constructor
No constructor.
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
baseMetadataURI
viewfunction baseMetadataURI() view returns (string)
contractURI
viewfunction contractURI() view returns (string)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAllPaymentTokenAddresses
viewfunction getAllPaymentTokenAddresses() view returns (address[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
ID_HUNDRED
viewfunction ID_HUNDRED() view returns (uint256)
ID_ONE
viewfunction ID_ONE() view returns (uint256)
ID_TEN
viewfunction ID_TEN() view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
NAME
viewfunction NAME() view returns (string)
paused
viewfunction paused() view returns (bool)
paymentTokenAddresses
viewfunction paymentTokenAddresses(uint256) view returns (address)
paymentTokenExists
viewfunction paymentTokenExists(address) view returns (bool)
paymentTokens
viewfunction paymentTokens(address) view returns (bool active, uint256 unitMintPrice)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
SYMBOL
viewfunction SYMBOL() view returns (string)
totalBalanceOf
viewfunction totalBalanceOf(address account) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
uri
viewfunction uri(uint256 id) view returns (string)
VERSION
viewfunction VERSION() view returns (string)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string baseURI_, address admin_)
mintBatch
nonpayablefunction mintBatch(uint256[] tokenIds, uint256[] amounts, address paymentToken)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
rescueERC20
nonpayablefunction rescueERC20(address token, address to, uint256 amount)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setPaymentToken
nonpayablefunction setPaymentToken(address token, bool active, uint256 mintPrice)
setPaymentTokenBatch
nonpayablefunction setPaymentTokenBatch(address[] tokens, bool[] actives, uint256[] mintPrices)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
BaseURIUpdated
event BaseURIUpdated(string newBaseURI)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
PaymentTokenUpdated
event PaymentTokenUpdated(address indexed token, bool active, uint256 mintPrice)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TokensMinted
event TokensMinted(address indexed account, uint256[] tokenIds, uint256[] amounts)
TokensRescued
event TokensRescued(address token, address to, uint256 amount)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
TreasuryUpdated
event TreasuryUpdated(address newTreasury)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
URI
event URI(string value, uint256 indexed id)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015601357600080fd5b50608051613a0d61003d60003960008181611ba301528181611bcc0152611d6e0152613a0d6000f3fe6080604052600436106102d05760003560e01c80638456cb5911610179578063c3b88b42116100d6578063f0f442601161008a578063f76f8d7811610064578063f76f8d78146108d4578063f9777a951461091d578063ffa1ad741461094d57600080fd5b8063f0f442601461087f578063f242432a1461089f578063f40a8543146108bf57600080fd5b8063e8a3d485116100bb578063e8a3d485146107e2578063e985e9c5146107f7578063f03f06291461085f57600080fd5b8063c3b88b4214610771578063d547741f146107c257600080fd5b8063a3f4df7e1161012d578063b2118a8d11610112578063b2118a8d1461071c578063bb31930f1461073c578063bc279b0d1461075157600080fd5b8063a3f4df7e146106be578063ad3cb1cc146106d357600080fd5b806395d8defa1161015e57806395d8defa14610674578063a217fddf14610689578063a22cb4651461069e57600080fd5b80638456cb59146105fa57806391d148541461060f57600080fd5b80634b79ee1d1161023257806355f804b3116101e657806361d027b3116101c057806361d027b31461058657806375b238fc146105a65780637ab4339d146105da57600080fd5b806355f804b31461051a5780635b2bd79e1461053a5780635c975abb1461054f57600080fd5b80634f1ef286116102175780634f1ef286146104d257806352d1902d146104e557806353a89465146104fa57600080fd5b80634b79ee1d146104835780634e1273f4146104a557600080fd5b80632eb2c2d61161028957806336568abe1161026e57806336568abe1461042e5780633f4ba83a1461044e5780634b0ee02a1461046357600080fd5b80632eb2c2d6146103ec5780632f2ff15d1461040e57600080fd5b80630e89341c116102ba5780630e89341c1461033857806314d3201f14610365578063248a9ca31461039d57600080fd5b8062fdd58e146102d557806301ffc9a714610308575b600080fd5b3480156102e157600080fd5b506102f56102f0366004612e1f565b610996565b6040519081526020015b60405180910390f35b34801561031457600080fd5b50610328610323366004612e5f565b6109df565b60405190151581526020016102ff565b34801561034457600080fd5b50610358610353366004612e7c565b6109ea565b6040516102ff9190612ee5565b34801561037157600080fd5b50610385610380366004612e7c565b610a89565b6040516001600160a01b0390911681526020016102ff565b3480156103a957600080fd5b506102f56103b8366004612e7c565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156103f857600080fd5b5061040c610407366004613047565b610ab3565b005b34801561041a57600080fd5b5061040c6104293660046130fd565b610b58565b34801561043a57600080fd5b5061040c6104493660046130fd565b610ba2565b34801561045a57600080fd5b5061040c610bf3565b34801561046f57600080fd5b506102f561047e366004613129565b610c28565b34801561048f57600080fd5b50610498610c96565b6040516102ff9190613144565b3480156104b157600080fd5b506104c56104c03660046131f5565b610cf8565b6040516102ff919061329a565b61040c6104e03660046132ad565b610dc5565b3480156104f157600080fd5b506102f5610de4565b34801561050657600080fd5b5061040c610515366004613301565b610e13565b34801561052657600080fd5b5061040c6105353660046133f5565b610f0c565b34801561054657600080fd5b50610358610f7e565b34801561055b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610328565b34801561059257600080fd5b50600054610385906001600160a01b031681565b3480156105b257600080fd5b506102f57fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156105e657600080fd5b5061040c6105f5366004613432565b611007565b34801561060657600080fd5b5061040c611202565b34801561061b57600080fd5b5061032861062a3660046130fd565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561068057600080fd5b506102f5606481565b34801561069557600080fd5b506102f5600081565b3480156106aa57600080fd5b5061040c6106b9366004613477565b611234565b3480156106ca57600080fd5b5061035861123f565b3480156106df57600080fd5b506103586040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561072857600080fd5b5061040c6107373660046134a1565b61125b565b34801561074857600080fd5b506102f5600a81565b34801561075d57600080fd5b5061040c61076c3660046134de565b611340565b34801561077d57600080fd5b506107ab61078c366004613129565b6002602052600090815260409020805460019091015460ff9091169082565b6040805192151583526020830191909152016102ff565b3480156107ce57600080fd5b5061040c6107dd3660046130fd565b611650565b3480156107ee57600080fd5b50610358611694565b34801561080357600080fd5b50610328610812366004613557565b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b34801561086b57600080fd5b5061040c61087a366004613581565b6116bc565b34801561088b57600080fd5b5061040c61089a366004613129565b6116f1565b3480156108ab57600080fd5b5061040c6108ba3660046135ad565b6117cc565b3480156108cb57600080fd5b506102f5600181565b3480156108e057600080fd5b506103586040518060400160405280600581526020017f424e4f544500000000000000000000000000000000000000000000000000000081525081565b34801561092957600080fd5b50610328610938366004613129565b60036020526000908152604090205460ff1681565b34801561095957600080fd5b506103586040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b60008181527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500602090815260408083206001600160a01b03861684529091529020545b92915050565b60006109d982611869565b606060018214806109fb5750600a82145b80610a065750606482145b610a575760405162461bcd60e51b815260206004820152601060248201527f496e76616c696420746f6b656e2049440000000000000000000000000000000060448201526064015b60405180910390fd5b6001610a62836118a7565b604051602001610a739291906136b2565b6040516020818303038152906040529050919050565b60048181548110610a9957600080fd5b6000918252602090912001546001600160a01b0316905081565b336001600160a01b0386168114801590610b1257506001600160a01b0380871660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b15610b435760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610a4e565b610b508686868686611947565b505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b92816119a7565b610b9c83836119b1565b50505050565b6001600160a01b0381163314610be4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bee8282611a80565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610c1d816119a7565b610c25611b26565b50565b600080610c36836001610996565b610c41906001613715565b610c4b908261372c565b9050610c5883600a610996565b610c6390600a613715565b610c6d908261372c565b9050610c7a836064610996565b610c85906064613715565b610c8f908261372c565b9392505050565b60606004805480602002602001604051908101604052809291908181526020018280548015610cee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cd0575b5050505050905090565b60608151835114610d295781518351604051635b05999160e01b815260048101929092526024820152604401610a4e565b6000835167ffffffffffffffff811115610d4557610d45612ef8565b604051908082528060200260200182016040528015610d6e578160200160208202803683370190505b50905060005b8451811015610dbd57602080820286010151610d9890602080840287010151610996565b828281518110610daa57610daa61373f565b6020908102919091010152600101610d74565b509392505050565b610dcd611b98565b610dd682611c51565b610de08282611c7b565b5050565b6000610dee611d63565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610e3d816119a7565b82518451148015610e4f575081518451145b610e9b5760405162461bcd60e51b815260206004820152601560248201527f4172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610a4e565b60005b8451811015610f0557610efd858281518110610ebc57610ebc61373f565b6020026020010151858381518110610ed657610ed661373f565b6020026020010151858481518110610ef057610ef061373f565b6020026020010151611dac565b600101610e9e565b5050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f36816119a7565b6001610f42838261379c565b507f6741b2fc379fad678116fe3d4d4b9a1a184ab53ba36b86ad0fa66340b1ab41ad82604051610f729190612ee5565b60405180910390a15050565b606060018054610f8d90613606565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb990613606565b8015610cee5780601f10610fdb57610100808354040283529160200191610cee565b820191906000526020600020905b815481529060010190602001808311610fe957509395945050505050565b6000611011611f36565b805490915060ff68010000000000000000820416159067ffffffffffffffff1660008115801561103e5750825b905060008267ffffffffffffffff16600114801561105b5750303b155b905081158015611069575080155b156110a0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110d457845468ff00000000000000001916680100000000000000001785555b6110dd87611f5f565b6110e5611f70565b6110ed611f70565b6110f5611f78565b6110fd611f70565b6111086000876119b1565b506111337fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775876119b1565b506001611140888261379c565b50466001148061115257504662aa36a7145b156111ae57611174866001603260405180602001604052806000815250611f88565b61119186600a603760405180602001604052806000815250611f88565b6111ae866064603060405180602001604052806000815250611f88565b83156111f957845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561122c816119a7565b610c25611fe5565b610de0338383612040565b6040518060600160405280602181526020016139b76021913981565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611285816119a7565b6001600160a01b0383166112db5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073656e6420746f207a65726f206164647265737300000000006044820152606401610a4e565b6112ef6001600160a01b0385168484612114565b604080516001600160a01b038087168252851660208201529081018390527f77023e19c7343ad491fd706c36335ca0e738340a91f29b1fd81e2673d44896c49060600160405180910390a150505050565b611348612188565b6113506121eb565b6000546001600160a01b03166113f45760405162461bcd60e51b815260206004820152604860248201527f5472656173757279206e6f7420796574207365742e205472656173757279206d60448201527f75737420626520736574206265666f7265206d696e74696e672063616e20626560648201527f20616c6c6f776564000000000000000000000000000000000000000000000000608482015260a401610a4e565b81518351146114455760405162461bcd60e51b815260206004820152601560248201527f4172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610a4e565b6001600160a01b03811660009081526002602052604090205460ff166114ad5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7420746f6b656e206e6f742061636365707465640000000000006044820152606401610a4e565b6000805b84518110156115ab5760008582815181106114ce576114ce61373f565b6020026020010151905060018114806114e75750600a81145b806114f25750606481145b61153e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420746f6b656e496400000000000000000000000000000000006044820152606401610a4e565b808583815181106115515761155161373f565b602002602001015160026000876001600160a01b03166001600160a01b031681526020019081526020016000206001015461158c9190613715565b6115969190613715565b6115a0908461372c565b9250506001016114b1565b506000546115c8906001600160a01b038481169133911684612247565b6115e333858560405180602001604052806000815250612280565b336001600160a01b03167f0d5579d7ec4bf729b3bf9001f85a063d8186c26369c0269ae7bcaf8fd89e484f858560405161161e92919061385b565b60405180910390a250610bee60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461168a816119a7565b610b9c8383611a80565b606060016040516020016116a89190613880565b604051602081830303815290604052905090565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116e6816119a7565b610b9c848484611dac565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561171b816119a7565b6001600160a01b0382166117715760405162461bcd60e51b815260206004820152601f60248201527f54726561737572792063616e6e6f74206265207a65726f2061646472657373006044820152606401610a4e565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556040519081527f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190602001610f72565b336001600160a01b038616811480159061182b57506001600160a01b0380871660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b1561185c5760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610a4e565b610b5086868686866122de565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806109d957506109d982612363565b606060006118b4836123fe565b600101905060008167ffffffffffffffff8111156118d4576118d4612ef8565b6040519080825280601f01601f1916602001820160405280156118fe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461190857509392505050565b6001600160a01b03841661197157604051632bfa23e760e11b815260006004820152602401610a4e565b6001600160a01b03851661199a57604051626a0d4560e21b815260006004820152602401610a4e565b610f0585858585856124e0565b610c258133612533565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a76576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611a2c3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d9565b60009150506109d9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a76576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d9565b611b2e6125c0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c3157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c257f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c4f5760405163703e46dd60e11b815260040160405180910390fd5b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610de0816119a7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cd5575060408051601f3d908101601f19168201909252611cd2918101906138b9565b60015b611cfd57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d59576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a4e565b610bee838361261b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c4f5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b038316611e285760405162461bcd60e51b815260206004820152602360248201527f5061796d656e74546f6b656e2063616e6e6f74206265207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a4e565b604080518082018252831515815260208082018481526001600160a01b0387166000908152600283528481209351845460ff1916901515178455905160019093019290925560039052205460ff16611eeb576004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386169081179091556000908152600360205260409020805460ff191690911790555b604080518315158152602081018390526001600160a01b038516917f788882f3c3fc5a560504d6e3688fb36e39a1c5fcb5eb3eb20283ce3a53845256910160405180910390a2505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006109d9565b611f67612671565b610c25816126af565b611c4f612671565b611f80612671565b611c4f6126c0565b6001600160a01b038416611fb257604051632bfa23e760e11b815260006004820152602401610a4e565b60408051600180825260208201869052818301908152606082018590526080820190925290610b506000878484876124e0565b611fed6121eb565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b7a565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b0383166120a4576040517fced3e10000000000000000000000000000000000000000000000000000000000815260006004820152602401610a4e565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6040516001600160a01b03838116602483015260448201839052610bee91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126c8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016121e5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c4f576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610b9c9186918216906323b872dd90608401612141565b6001600160a01b0384166122aa57604051632bfa23e760e11b815260006004820152602401610a4e565b610b9c6000858585856124e0565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b03841661230857604051632bfa23e760e11b815260006004820152602401610a4e565b6001600160a01b03851661233157604051626a0d4560e21b815260006004820152602401610a4e565b604080516001808252602082018690528183019081526060820185905260808201909252906111f987878484876124e0565b60006001600160e01b031982167fd9b67a260000000000000000000000000000000000000000000000000000000014806123c657506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b806109d957507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146109d9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612447577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612473576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061249157662386f26fc10000830492506010015b6305f5e10083106124a9576305f5e100830492506008015b61271083106124bd57612710830492506004015b606483106124cf576064830492506002015b600a83106109d95760010192915050565b6124ec85858585612752565b6001600160a01b03841615610f055782513390600103612525576020848101519084015161251e8389898585896129a2565b5050610b50565b610b50818787878787612ac6565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610de0576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610a4e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c4f576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61262482612baf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561266957610bee8282612c33565b610de0612ca9565b612679612ce1565b611c4f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126b7612671565b610c2581612d00565b6122b8612671565b600080602060008451602086016000885af1806126eb576040513d6000823e3d81fd5b50506000513d91508115612703578060011415612710565b6001600160a01b0384163b155b15610b9c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a4e565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450091146127a35782518251604051635b05999160e01b815260048101929092526024820152604401610a4e565b3360005b84518110156128c2576020818102868101820151908601909101516001600160a01b03891615612873576000828152602086815260408083206001600160a01b038d1684529091529020548181101561284c576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481018290526044810183905260648101849052608401610a4e565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b038816156128b8576000828152602086815260408083206001600160a01b038c168452909152812080548392906128b290849061372c565b90915550505b50506001016127a7565b5083516001036129435760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612934929190918252602082015260400190565b60405180910390a45050610b50565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161299292919061385b565b60405180910390a4505050505050565b6001600160a01b0384163b15610b505760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906129e690899089908890889088906004016138d2565b6020604051808303816000875af1925050508015612a21575060408051601f3d908101601f19168201909252612a1e9181019061391a565b60015b612a8a573d808015612a4f576040519150601f19603f3d011682016040523d82523d6000602084013e612a54565b606091505b508051600003612a8257604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a4e565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b146111f957604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a4e565b6001600160a01b0384163b15610b505760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612b0a9089908990889088908890600401613937565b6020604051808303816000875af1925050508015612b45575060408051601f3d908101601f19168201909252612b429181019061391a565b60015b612b73573d808015612a4f576040519150601f19603f3d011682016040523d82523d6000602084013e612a54565b6001600160e01b0319811663bc197c8160e01b146111f957604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a4e565b806001600160a01b03163b600003612be557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a4e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612c50919061399a565b600060405180830381855af49150503d8060008114612c8b576040519150601f19603f3d011682016040523d82523d6000602084013e612c90565b606091505b5091509150612ca0858383612d4c565b95945050505050565b3415611c4f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612ceb611f36565b5468010000000000000000900460ff16919050565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502610bee838261379c565b606082612d6157612d5c82612dc1565b610c8f565b8151158015612d7857506001600160a01b0384163b155b15612dba576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a4e565b5092915050565b805115612dd15780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b0381168114612e1a57600080fd5b919050565b60008060408385031215612e3257600080fd5b612e3b83612e03565b946020939093013593505050565b6001600160e01b031981168114610c2557600080fd5b600060208284031215612e7157600080fd5b8135610c8f81612e49565b600060208284031215612e8e57600080fd5b5035919050565b60005b83811015612eb0578181015183820152602001612e98565b50506000910152565b60008151808452612ed1816020860160208601612e95565b601f01601f19169290920160200192915050565b602081526000610c8f6020830184612eb9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f3757612f37612ef8565b604052919050565b600067ffffffffffffffff821115612f5957612f59612ef8565b5060051b60200190565b600082601f830112612f7457600080fd5b8135612f87612f8282612f3f565b612f0e565b8082825260208201915060208360051b860101925085831115612fa957600080fd5b602085015b83811015612fc6578035835260209283019201612fae565b5095945050505050565b600082601f830112612fe157600080fd5b81356020830160008067ffffffffffffffff84111561300257613002612ef8565b50601f8301601f191660200161301781612f0e565b91505082815285838301111561302c57600080fd5b82826020830137600092810160200192909252509392505050565b600080600080600060a0868803121561305f57600080fd5b61306886612e03565b945061307660208701612e03565b9350604086013567ffffffffffffffff81111561309257600080fd5b61309e88828901612f63565b935050606086013567ffffffffffffffff8111156130bb57600080fd5b6130c788828901612f63565b925050608086013567ffffffffffffffff8111156130e457600080fd5b6130f088828901612fd0565b9150509295509295909350565b6000806040838503121561311057600080fd5b8235915061312060208401612e03565b90509250929050565b60006020828403121561313b57600080fd5b610c8f82612e03565b602080825282518282018190526000918401906040840190835b818110156131855783516001600160a01b031683526020938401939092019160010161315e565b509095945050505050565b600082601f8301126131a157600080fd5b81356131af612f8282612f3f565b8082825260208201915060208360051b8601019250858311156131d157600080fd5b602085015b83811015612fc6576131e781612e03565b8352602092830192016131d6565b6000806040838503121561320857600080fd5b823567ffffffffffffffff81111561321f57600080fd5b61322b85828601613190565b925050602083013567ffffffffffffffff81111561324857600080fd5b61325485828601612f63565b9150509250929050565b600081518084526020840193506020830160005b82811015613290578151865260209586019590910190600101613272565b5093949350505050565b602081526000610c8f602083018461325e565b600080604083850312156132c057600080fd5b6132c983612e03565b9150602083013567ffffffffffffffff8111156132e557600080fd5b61325485828601612fd0565b80358015158114612e1a57600080fd5b60008060006060848603121561331657600080fd5b833567ffffffffffffffff81111561332d57600080fd5b61333986828701613190565b935050602084013567ffffffffffffffff81111561335657600080fd5b8401601f8101861361336757600080fd5b8035613375612f8282612f3f565b8082825260208201915060208360051b85010192508883111561339757600080fd5b6020840193505b828410156133c0576133af846132f1565b82526020938401939091019061339e565b9450505050604084013567ffffffffffffffff8111156133df57600080fd5b6133eb86828701612f63565b9150509250925092565b60006020828403121561340757600080fd5b813567ffffffffffffffff81111561341e57600080fd5b61342a84828501612fd0565b949350505050565b6000806040838503121561344557600080fd5b823567ffffffffffffffff81111561345c57600080fd5b61346885828601612fd0565b92505061312060208401612e03565b6000806040838503121561348a57600080fd5b61349383612e03565b9150613120602084016132f1565b6000806000606084860312156134b657600080fd5b6134bf84612e03565b92506134cd60208501612e03565b929592945050506040919091013590565b6000806000606084860312156134f357600080fd5b833567ffffffffffffffff81111561350a57600080fd5b61351686828701612f63565b935050602084013567ffffffffffffffff81111561353357600080fd5b61353f86828701612f63565b92505061354e60408501612e03565b90509250925092565b6000806040838503121561356a57600080fd5b61357383612e03565b915061312060208401612e03565b60008060006060848603121561359657600080fd5b61359f84612e03565b92506134cd602085016132f1565b600080600080600060a086880312156135c557600080fd5b6135ce86612e03565b94506135dc60208701612e03565b93506040860135925060608601359150608086013567ffffffffffffffff8111156130e457600080fd5b600181811c9082168061361a57607f821691505b60208210810361363a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000815461364d81613606565b6001821680156136645760018114613679576136a9565b60ff19831686528115158202860193506136a9565b84600052602060002060005b838110156136a157815488820152600190910190602001613685565b505081860193505b50505092915050565b60006136be8285613640565b83516136ce818360208801612e95565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109d9576109d96136ff565b808201808211156109d9576109d96136ff565b634e487b7160e01b600052603260045260246000fd5b601f821115610bee57806000526020600020601f840160051c8101602085101561377c5750805b601f840160051c820191505b81811015610f055760008155600101613788565b815167ffffffffffffffff8111156137b6576137b6612ef8565b6137ca816137c48454613606565b84613755565b6020601f8211600181146137fe57600083156137e65750848201515b600019600385901b1c1916600184901b178455610f05565b600084815260208120601f198516915b8281101561382e578785015182556020948501946001909201910161380e565b508482101561384c5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60408152600061386e604083018561325e565b8281036020840152612ca0818561325e565b600061388c8284613640565b7f636f6e74726163742e6a736f6e000000000000000000000000000000000000008152600d019392505050565b6000602082840312156138cb57600080fd5b5051919050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a06080820152600061390f60a0830184612eb9565b979650505050505050565b60006020828403121561392c57600080fd5b8151610c8f81612e49565b6001600160a01b03861681526001600160a01b038516602082015260a06040820152600061396860a083018661325e565b828103606084015261397a818661325e565b9050828103608084015261398e8185612eb9565b98975050505050505050565b600082516139ac818460208701612e95565b919091019291505056fe4269747472656573205265736561726368205072656665727265642053746f636ba2646970667358221220b552a059eaba16dbe8f857f81f280952c992d6eec8faf041cda35d511966b9b564736f6c634300081c0033