1 tx
2 calls
constructor
constructor(address initialOwner, string name_, string symbol_, string baseURI_, address engine_, address royaltyReceiver_, uint96 royaltyBps_)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
burnExpired
viewfunction burnExpired() view returns (bool)
currentTokenId
viewfunction currentTokenId() view returns (uint256)
engine
viewfunction engine() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
maxSupply
viewfunction maxSupply(uint8) view returns (uint256)
minted
viewfunction minted(uint8) view returns (uint256)
modelOf
viewfunction modelOf(uint256) view returns (uint8)
modelOfBatch
viewfunction modelOfBatch(uint256[] tokenIds) view returns (uint8[] models)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address, uint256)
supplyOf
viewfunction supplyOf(uint8 model) view returns (uint256 minted_, uint256 max_)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalMinted
viewfunction totalMinted(uint8 model) view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
deleteDefaultRoyalty
nonpayablefunction deleteDefaultRoyalty()
mint
nonpayablefunction mint(address to, uint8 model) returns (uint256 tokenId)
mintBatch
nonpayablefunction mintBatch(address to, uint8 model, uint256 amount) returns (uint256[] ids)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBase)
setBurnPolicy
nonpayablefunction setBurnPolicy(bool enabled)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint96 feeNumerator)
setEngine
nonpayablefunction setEngine(address newEngine)
setMaxSupply
nonpayablefunction setMaxSupply(uint8 model, uint256 newMax)
setMaxSupplyBatch
nonpayablefunction setMaxSupplyBatch(uint8[] models, uint256[] newMax)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseURIUpdated
event BaseURIUpdated(string previous, string current)
Burned
event Burned(uint256 indexed tokenId, uint8 indexed model)
BurnPolicyUpdated
event BurnPolicyUpdated(bool previous, bool current)
EngineUpdated
event EngineUpdated(address indexed previous, address indexed current)
MaxSupplyUpdated
event MaxSupplyUpdated(uint8 indexed model, uint256 previous, uint256 current)
Minted
event Minted(address indexed to, uint256 indexed tokenId, uint8 indexed model)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ERC2981InvalidDefaultRoyalty
error ERC2981InvalidDefaultRoyalty(uint256 numerator, uint256 denominator)
ERC2981InvalidDefaultRoyaltyReceiver
error ERC2981InvalidDefaultRoyaltyReceiver(address receiver)
ERC2981InvalidTokenRoyalty
error ERC2981InvalidTokenRoyalty(uint256 tokenId, uint256 numerator, uint256 denominator)
ERC2981InvalidTokenRoyaltyReceiver
error ERC2981InvalidTokenRoyaltyReceiver(uint256 tokenId, address receiver)
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040526010805460ff60a01b1916600160a01b179055348015610022575f5ffd5b50604051612ea1380380612ea183398101604081905261004191610421565b8686865f61004f8382610586565b50600161005c8282610586565b5050506001600160a01b03811661008d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61009681610276565b5060126100a38582610586565b50601080546001600160a01b0319166001600160a01b03858116919091179091558216158015906100dc57505f816001600160601b0316115b15610139576127106001600160601b038216111561012f5760405162461bcd60e51b815260206004820152601060248201526f0a4def2c2d8e8f240e8dede40d0d2ced60831b6044820152606401610084565b61013982826102c7565b5050600e6020525050613e807fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c555050611f407fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820755506117707f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f048155610fa07fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c908144556109607fa1d6913cd9e08c872be3e7525cca82e4fc0fc298a783f19022be725b19be685a556104b07fb9bec7e2561f624fe753ff070f1599b306cbf59fafd4e8d5a8184a1ea1841bce556102807f92b4482321f41ce3aa65f798bda23d0d12a60fc5f212868a548ddb00aa49de725560075f526101407f376529bb8a2d41b4a589a133407fc64f3212472dbd74744348be1098bf7ba08d55610640565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6127106001600160601b03821681101561030657604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610084565b6001600160a01b03831661032f57604051635b6cc80560e11b81525f6004820152602401610084565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b80516001600160a01b038116811461037f575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103a7575f5ffd5b81516001600160401b038111156103c0576103c0610384565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103ee576103ee610384565b604052818152838201602001851015610405575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f5f5f60e0888a031215610437575f5ffd5b61044088610369565b60208901519097506001600160401b0381111561045b575f5ffd5b6104678a828b01610398565b60408a015190975090506001600160401b03811115610484575f5ffd5b6104908a828b01610398565b60608a015190965090506001600160401b038111156104ad575f5ffd5b6104b98a828b01610398565b9450506104c860808901610369565b92506104d660a08901610369565b60c08901519092506001600160601b03811681146104f2575f5ffd5b8091505092959891949750929550565b600181811c9082168061051657607f821691505b60208210810361053457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561058157805f5260205f20601f840160051c8101602085101561055f5750805b601f840160051c820191505b8181101561057e575f815560010161056b565b50505b505050565b81516001600160401b0381111561059f5761059f610384565b6105b3816105ad8454610502565b8461053a565b6020601f8211600181146105e5575f83156105ce5750848201515b5f19600385901b1c1916600184901b17845561057e565b5f84815260208120601f198516915b8281101561061457878501518255602094850194600190920191016105f4565b508482101561063157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6128548061064d5f395ff3fe608060405234801561000f575f5ffd5b50600436106101f7575f3560e01c80634f6ccce7116101175780638da5cb5b116100a55780638da5cb5b1461048e57806395d89b411461049f5780639b87eb28146104a7578063a22cb465146104cf578063aa1b103f146104e2578063b88d4fde146104ea578063c87b56dd146104fd578063c9d4623f14610510578063e985e9c514610523578063f2fde38b14610536575f5ffd5b80634f6ccce7146103bf57806353f47f95146103d257806355f804b3146103e557806357759fc6146103f85780636352211e14610427578063691562a01461043a57806370a082311461044d578063715018a614610460578063814641a314610468578063897ac3841461047b575f5ffd5b806319777d1a1161019457806319777d1a146102cc57806323b872dd146102e05780632a55205a146102f35780632d8120b5146103145780632f745c591461033357806333873bac146103465780633fb30e391461035957806342842e0e1461037957806342966c681461038c57806349324be11461039f575f5ffd5b80629a9b7b146101fb57806301ffc9a71461021257806304634d8d1461023557806306fdde031461024a578063081812fc1461025f578063095ea7b31461027f5780630cabd0a6146102925780630e830e49146102b157806318160ddd146102c4575b5f5ffd5b6011545b6040519081526020015b60405180910390f35b610225610220366004611f24565b610549565b6040519015158152602001610209565b610248610243366004611f61565b610559565b005b6102526105c2565b6040516102099190611fcf565b61027261026d366004611fe1565b610651565b6040516102099190611ff8565b61024861028d36600461200c565b610665565b6101ff6102a0366004612044565b600f6020525f908152604090205481565b6102486102bf36600461205d565b610670565b6008546101ff565b60105461022590600160a01b900460ff1681565b6102486102ee366004612076565b61070d565b6103066103013660046120b0565b610796565b6040516102099291906120d0565b6101ff610322366004612044565b600e6020525f908152604090205481565b6101ff61034136600461200c565b610842565b610248610354366004612129565b610897565b61036c610367366004612193565b610941565b60405161020991906121d1565b610248610387366004612076565b610a06565b61024861039a366004611fe1565b610a25565b6103b26103ad366004612216565b610b0d565b604051610209919061223f565b6101ff6103cd366004611fe1565b610d9d565b6101ff6103e0366004612044565b610ded565b6102486103f3366004612276565b610e27565b61041a610406366004611fe1565b600d6020525f908152604090205460ff1681565b60405161020991906122f6565b610272610435366004611fe1565b610f0d565b6101ff61044836600461231c565b610f17565b6101ff61045b36600461205d565b6110dd565b610248611122565b61024861047636600461234d565b611135565b610248610489366004612376565b611147565b600c546001600160a01b0316610272565b6102526111b5565b6104ba6104b5366004612044565b6111c4565b60408051928352602083019190915201610209565b6102486104dd36600461238f565b61120d565b610248611218565b6102486104f83660046123cb565b611229565b61025261050b366004611fe1565b611240565b601054610272906001600160a01b031681565b6102256105313660046124a5565b6113db565b61024861054436600461205d565b611408565b5f61055382611445565b92915050565b610561611469565b6127106001600160601b03821611156105b45760405162461bcd60e51b815260206004820152601060248201526f0a4def2c2d8e8f240e8dede40d0d2ced60831b60448201526064015b60405180910390fd5b6105be8282611496565b5050565b60605f80546105d0906124cd565b80601f01602080910402602001604051908101604052809291908181526020018280546105fc906124cd565b80156106475780601f1061061e57610100808354040283529160200191610647565b820191905f5260205f20905b81548152906001019060200180831161062a57829003601f168201915b5050505050905090565b5f61065b82611538565b506105538261156f565b6105be828233611589565b610678611469565b6001600160a01b0381166106bc5760405162461bcd60e51b815260206004820152600b60248201526a5a65726f20656e67696e6560a81b60448201526064016105ab565b601080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa95ee8717264ffedf297acc43c2d34abb377b015e93039b48211403a2aeceb4c905f90a35050565b6001600160a01b038216610736575f604051633250574960e11b81526004016105ab9190611ff8565b5f610742838333611596565b9050836001600160a01b0316816001600160a01b031614610790576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105ab565b50505050565b5f828152600b602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161080a575060408051808201909152600a546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101515f9061271090610828906001600160601b031687612519565b6108329190612530565b91519350909150505b9250929050565b5f61084c836110dd565b821061086f57828260405163295f44f760e21b81526004016105ab9291906120d0565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b61089f611469565b8281146108e05760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064016105ab565b5f5b8381101561093a576109328585838181106108ff576108ff61254f565b90506020020160208101906109149190612044565b8484848181106109265761092661254f565b905060200201356115aa565b6001016108e2565b5050505050565b6060816001600160401b0381111561095b5761095b6123b7565b604051908082528060200260200182016040528015610984578160200160208202803683370190505b5090505f5b828110156109ff57600d5f8585848181106109a6576109a661254f565b602090810292909201358352508101919091526040015f205460ff1660078111156109d3576109d36122e2565b8282815181106109e5576109e561254f565b60ff90921660209283029190910190910152600101610989565b5092915050565b610a2083838360405180602001604052805f815250611229565b505050565b6010546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016105ab90612563565b601054600160a01b900460ff16610a985760405162461bcd60e51b815260206004820152600d60248201526c109d5c9b88191a5cd8589b1959609a1b60448201526064016105ab565b5f818152600d602052604081205460ff166007811115610aba57610aba6122e2565b5f838152600d60205260409020805460ff191690559050610ada826116c9565b60405160ff82169083907f1d07eeee6d9d85a293b161ce2e22b5b38aa2c197c5d27b007f0c6d8aa683e3ea905f90a35050565b6010546060906001600160a01b03163314610b3a5760405162461bcd60e51b81526004016105ab90612563565b6001600160a01b038416610b605760405162461bcd60e51b81526004016105ab90612591565b600760ff84161115610b845760405162461bcd60e51b81526004016105ab906125b7565b5f8211610bc15760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b60448201526064016105ab565b60ff83165f908152600e6020526040902054839080610bf25760405162461bcd60e51b81526004016105ab906125de565b60ff82165f908152600f60205260409020548190610c11908690612609565b1115610c565760405162461bcd60e51b815260206004820152601460248201527345786365656473206d6f64656c20737570706c7960601b60448201526064016105ab565b836001600160401b03811115610c6e57610c6e6123b7565b604051908082528060200260200182016040528015610c97578160200160208202803683370190505b5092505f5b84811015610d93575f60115f8154610cb39061261c565b918290555060ff85165f908152600f602052604081208054929350600192909190610cdf908490612609565b90915550610cef90508882611701565b8360ff166007811115610d0457610d046122e2565b5f828152600d60205260409020805460ff19166001836007811115610d2b57610d2b6122e2565b021790555080858381518110610d4357610d4361254f565b6020026020010181815250508360ff1681896001600160a01b03167fdcb23284f3935b5557998e99dcc286e29744c5000723d99eecd5d6f5694f6e1160405160405180910390a450600101610c9c565b5050509392505050565b5f610da760085490565b8210610dca575f8260405163295f44f760e21b81526004016105ab9291906120d0565b60088281548110610ddd57610ddd61254f565b905f5260205f2001549050919050565b5f600760ff83161115610e125760405162461bcd60e51b81526004016105ab906125b7565b5060ff165f908152600f602052604090205490565b610e2f611469565b5f60128054610e3d906124cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e69906124cd565b8015610eb45780601f10610e8b57610100808354040283529160200191610eb4565b820191905f5260205f20905b815481529060010190602001808311610e9757829003601f168201915b50505050509050828260129182610ecc929190612678565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818484604051610f0093929190612731565b60405180910390a1505050565b5f61055382611538565b6010545f906001600160a01b03163314610f435760405162461bcd60e51b81526004016105ab90612563565b6001600160a01b038316610f695760405162461bcd60e51b81526004016105ab90612591565b600760ff83161115610f8d5760405162461bcd60e51b81526004016105ab906125b7565b60ff82165f908152600e6020526040902054829080610fbe5760405162461bcd60e51b81526004016105ab906125de565b60ff82165f908152600f6020526040902054811161100f5760405162461bcd60e51b815260206004820152600e60248201526d135bd9195b081cdbdb19081bdd5d60921b60448201526064016105ab565b60115f815461101d9061261c565b918290555060ff83165f908152600f602052604081208054929550600192909190611049908490612609565b9091555061105990508584611701565b8160ff16600781111561106e5761106e6122e2565b5f848152600d60205260409020805460ff19166001836007811115611095576110956122e2565b02179055508160ff1683866001600160a01b03167fdcb23284f3935b5557998e99dcc286e29744c5000723d99eecd5d6f5694f6e1160405160405180910390a4505092915050565b5f6001600160a01b038216611107575f6040516322718ad960e21b81526004016105ab9190611ff8565b506001600160a01b03165f9081526003602052604090205490565b61112a611469565b6111335f61171a565b565b61113d611469565b6105be82826115aa565b61114f611469565b6010805460ff60a01b198116600160a01b84151581810292909217909355604080519390920460ff1680151584526020840191909152917fe979ba045b652316b82984d6321f6cc45eb2363cc1baeeef90dc21a51c273b23910160405180910390a15050565b6060600180546105d0906124cd565b5f80600760ff841611156111ea5760405162461bcd60e51b81526004016105ab906125b7565b505060ff165f908152600f6020908152604080832054600e909252909120549091565b6105be33838361176b565b611220611469565b6111335f600a55565b61123484848461070d565b61079084848484611800565b606061124b82611538565b505f61125561190d565b5f848152600d60205260408120549192509060ff16600781111561127b5761127b6122e2565b6040805161014081018252600661010082018181526518973539b7b760d11b6101208401528252825180840184528181526519173539b7b760d11b60208281019190915280840191909152835180850185528281526519973539b7b760d11b818301528385015283518085018552828152651a173539b7b760d11b81830152606084015283518085018552828152651a973539b7b760d11b81830152608084015283518085018552828152651b173539b7b760d11b8183015260a084015283518085018552828152651b973539b7b760d11b8183015260c08401528351808501909452908352651c173539b7b760d11b9083015260e0810191909152835191925090156113c25782818360ff16600881106113985761139861254f565b60200201516040516020016113ae92919061278c565b6040516020818303038152906040526113d2565b60405180602001604052805f8152505b95945050505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611410611469565b6001600160a01b038116611439575f604051631e4fbdf760e01b81526004016105ab9190611ff8565b6114428161171a565b50565b5f6001600160e01b0319821663152a902d60e11b148061055357506105538261191c565b600c546001600160a01b03163314611133573360405163118cdaa760e01b81526004016105ab9190611ff8565b6127106001600160601b0382168110156114d557604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044016105ab565b6001600160a01b0383166114fe575f604051635b6cc80560e11b81526004016105ab9190611ff8565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f5f61154383611940565b90506001600160a01b03811661055357604051637e27328960e01b8152600481018490526024016105ab565b5f908152600460205260409020546001600160a01b031690565b610a20838383600161195a565b5f6115a2848484611a55565b949350505050565b600760ff831611156115ce5760405162461bcd60e51b81526004016105ab906125b7565b60ff82165f908152600e6020526040902054808210156116265760405162461bcd60e51b8152602060048201526013602482015272086c2dcdcdee840c8cac6e4cac2e6ca40dac2f606b1b60448201526064016105ab565b60ff83165f908152600f60205260409020548210156116765760405162461bcd60e51b815260206004820152600c60248201526b10995b1bddc81b5a5b9d195960a21b60448201526064016105ab565b60ff83165f818152600e602090815260409182902085905581518481529081018590527f89f510e9dfcbec7749f9a7d54081ee953c1ae6bb06775fc9e9799429a19920a0910160405180910390a2505050565b5f6116d55f835f611596565b90506001600160a01b0381166105be57604051637e27328960e01b8152600481018390526024016105ab565b6105be828260405180602001604052805f815250611b20565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166117945781604051630b61174360e31b81526004016105ab9190611ff8565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561079057604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906118429033908890879087906004016127a0565b6020604051808303815f875af192505050801561187c575060408051601f3d908101601f19168201909252611879918101906127dc565b60015b6118da573d8080156118a9576040519150601f19603f3d011682016040523d82523d5f602084013e6118ae565b606091505b5080515f036118d25783604051633250574960e11b81526004016105ab9190611ff8565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461093a5783604051633250574960e11b81526004016105ab9190611ff8565b6060601280546105d0906124cd565b5f6001600160e01b0319821663780e9d6360e01b1480610553575061055382611b36565b5f908152600260205260409020546001600160a01b031690565b808061196e57506001600160a01b03821615155b15611a26575f61197d84611538565b90506001600160a01b038316158015906119a95750826001600160a01b0316816001600160a01b031614155b80156119bc57506119ba81846113db565b155b156119dc578260405163a9fbf51f60e01b81526004016105ab9190611ff8565b8115611a245783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f611a62858585611b85565b90506001600160a01b038116611abe57611ab984600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611ae1565b846001600160a01b0316816001600160a01b031614611ae157611ae18185611c72565b6001600160a01b038516611afd57611af884611cff565b6115a2565b846001600160a01b0316816001600160a01b0316146115a2576115a28585611da6565b611b2a8383611df4565b610a205f848484611800565b5f6001600160e01b031982166380ac58cd60e01b1480611b6657506001600160e01b03198216635b5e139f60e01b145b8061055357506301ffc9a760e01b6001600160e01b0319831614610553565b5f5f611b9084611940565b90506001600160a01b03831615611bac57611bac818486611e55565b6001600160a01b03811615611be657611bc75f855f5f61195a565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611c14576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f611c7c836110dd565b5f83815260076020526040902054909150808214611ccd576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f90611d10906001906127f7565b5f8381526009602052604081205460088054939450909284908110611d3757611d3761254f565b905f5260205f20015490508060088381548110611d5657611d5661254f565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480611d8d57611d8d61280a565b600190038181905f5260205f20015f9055905550505050565b5f6001611db2846110dd565b611dbc91906127f7565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611e1d575f604051633250574960e11b81526004016105ab9190611ff8565b5f611e2983835f611596565b90506001600160a01b03811615610a20575f6040516339e3563760e11b81526004016105ab9190611ff8565b611e60838383611eab565b610a20576001600160a01b038316611e8e57604051637e27328960e01b8152600481018290526024016105ab565b818160405163177e802f60e01b81526004016105ab9291906120d0565b5f6001600160a01b038316158015906115a25750826001600160a01b0316846001600160a01b03161480611ee45750611ee484846113db565b806115a25750826001600160a01b0316611efd8361156f565b6001600160a01b031614949350505050565b6001600160e01b031981168114611442575f5ffd5b5f60208284031215611f34575f5ffd5b8135611f3f81611f0f565b9392505050565b80356001600160a01b0381168114611f5c575f5ffd5b919050565b5f5f60408385031215611f72575f5ffd5b611f7b83611f46565b915060208301356001600160601b0381168114611f96575f5ffd5b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611f3f6020830184611fa1565b5f60208284031215611ff1575f5ffd5b5035919050565b6001600160a01b0391909116815260200190565b5f5f6040838503121561201d575f5ffd5b61202683611f46565b946020939093013593505050565b803560ff81168114611f5c575f5ffd5b5f60208284031215612054575f5ffd5b611f3f82612034565b5f6020828403121561206d575f5ffd5b611f3f82611f46565b5f5f5f60608486031215612088575f5ffd5b61209184611f46565b925061209f60208501611f46565b929592945050506040919091013590565b5f5f604083850312156120c1575f5ffd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b5f5f83601f8401126120f9575f5ffd5b5081356001600160401b0381111561210f575f5ffd5b6020830191508360208260051b850101111561083b575f5ffd5b5f5f5f5f6040858703121561213c575f5ffd5b84356001600160401b03811115612151575f5ffd5b61215d878288016120e9565b90955093505060208501356001600160401b0381111561217b575f5ffd5b612187878288016120e9565b95989497509550505050565b5f5f602083850312156121a4575f5ffd5b82356001600160401b038111156121b9575f5ffd5b6121c5858286016120e9565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561220b57835160ff168352602093840193909201916001016121ea565b509095945050505050565b5f5f5f60608486031215612228575f5ffd5b61223184611f46565b925061209f60208501612034565b602080825282518282018190525f918401906040840190835b8181101561220b578351835260209384019390920191600101612258565b5f5f60208385031215612287575f5ffd5b82356001600160401b0381111561229c575f5ffd5b8301601f810185136122ac575f5ffd5b80356001600160401b038111156122c1575f5ffd5b8560208284010111156122d2575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52602160045260245ffd5b602081016008831061231657634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f6040838503121561232d575f5ffd5b61233683611f46565b915061234460208401612034565b90509250929050565b5f5f6040838503121561235e575f5ffd5b61202683612034565b80358015158114611f5c575f5ffd5b5f60208284031215612386575f5ffd5b611f3f82612367565b5f5f604083850312156123a0575f5ffd5b6123a983611f46565b915061234460208401612367565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156123de575f5ffd5b6123e785611f46565b93506123f560208601611f46565b92506040850135915060608501356001600160401b03811115612416575f5ffd5b8501601f81018713612426575f5ffd5b80356001600160401b0381111561243f5761243f6123b7565b604051601f8201601f19908116603f011681016001600160401b038111828210171561246d5761246d6123b7565b604052818152828201602001891015612484575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f604083850312156124b6575f5ffd5b6124bf83611f46565b915061234460208401611f46565b600181811c908216806124e157607f821691505b6020821081036124ff57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761055357610553612505565b5f8261254a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b60208082526014908201527343616c6c6572206973206e6f7420656e67696e6560601b604082015260600190565b6020808252600c908201526b4d696e7420746f207a65726f60a01b604082015260600190565b6020808252600d908201526c125b9d985b1a59081b5bd9195b609a1b604082015260600190565b60208082526011908201527013585e14dd5c1c1b1e481b9bdd081cd95d607a1b604082015260600190565b8082018082111561055357610553612505565b5f6001820161262d5761262d612505565b5060010190565b601f821115610a2057805f5260205f20601f840160051c810160208510156126595750805b601f840160051c820191505b8181101561093a575f8155600101612665565b6001600160401b0383111561268f5761268f6123b7565b6126a38361269d83546124cd565b83612634565b5f601f8411600181146126d4575f85156126bd5750838201355b5f19600387901b1c1916600186901b17835561093a565b5f83815260208120601f198716915b8281101561270357868501358255602094850194600190920191016126e3565b508682101561271f575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f6127436040830186611fa1565b8281036020840152838152838560208301375f602085830101526020601f19601f860116820101915050949350505050565b5f81518060208401855e5f93019283525090919050565b5f6115a261279a8386612775565b84612775565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906127d290830184611fa1565b9695505050505050565b5f602082840312156127ec575f5ffd5b8151611f3f81611f0f565b8181038181111561055357610553612505565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212206f6c99ba88f9484de3acf6c1685c4683719f680b59be45b2548c3caac5cbdac664736f6c634300081e00330000000000000000000000002fd8158fb9b5a78fa36164c52499e81723d1133a00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000c625954ba808568af5d3e2150b24218ed60732a6000000000000000000000000c625954ba808568af5d3e2150b24218ed60732a600000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000e436c6f75644d696e6572204e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005434d4e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f636c6f75646d696e6572757364742e636f6d2f6d657461646174612f00000000000000000000000000000000000000000000000000000000