0 txs
1 call
constructor
constructor()
functions
canvasHeight
viewfunction canvasHeight() view returns (uint16)
canvasWidth
viewfunction canvasWidth() view returns (uint16)
compositesPerChunk
viewfunction compositesPerChunk() view returns (uint256)
compositesPointers
viewfunction compositesPointers(uint256) view returns (address)
getComposite
viewfunction getComposite(uint256 compositeIndex) view returns (uint256[])
getCompositesCount
viewfunction getCompositesCount() view returns (uint256)
isRevealed
viewfunction isRevealed() view returns (bool)
isSealed
viewfunction isSealed() view returns (bool)
layerNames
viewfunction layerNames(uint256) view returns (string)
mintbayGenerativeContract
viewfunction mintbayGenerativeContract() view returns (address)
numberOfLayers
viewfunction numberOfLayers() view returns (uint256)
owner
viewfunction owner() view returns (address)
paletteCount
viewfunction paletteCount() view returns (uint256)
palettePointer
viewfunction palettePointer() view returns (address)
paletteRegistry
viewfunction paletteRegistry(uint256) view returns (address)
revealSeed
viewfunction revealSeed() view returns (uint256)
tokenAttributes
viewfunction tokenAttributes(uint256 compositeIndex) view returns (bytes)
tokenImageSvg
viewfunction tokenImageSvg(uint256 compositeIndex, uint256 tokenId) view returns (string)
tokenPalettePointers
viewfunction tokenPalettePointers(uint256) view returns (address)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
traitNames
viewfunction traitNames(uint256, uint256) view returns (string)
traitPointers
viewfunction traitPointers(uint256, uint256) view returns (address)
traits
viewfunction traits(uint256, uint256) view returns (uint256 pointerIndex, uint256 offset, uint256 length)
addComposite
nonpayablefunction addComposite(uint256[] traitIndices)
addCompositesBatch
nonpayablefunction addCompositesBatch(uint256[][] traitIndicesArray)
addTrait
nonpayablefunction addTrait(uint256 layerId, uint256 traitId, bytes data, string name)
addTraitsBatch
nonpayablefunction addTraitsBatch(uint256 layerId, uint256[] traitIds, bytes[] datas, string[] names)
renounceOwnership
nonpayablefunction renounceOwnership()
sealContract
nonpayablefunction sealContract()
setCanvasSize
nonpayablefunction setCanvasSize(uint16 _width, uint16 _height)
setCompositesPerChunk
nonpayablefunction setCompositesPerChunk(uint256 _compositesPerChunk)
setLayer
nonpayablefunction setLayer(uint256 layerId, string name)
setLayersBatch
nonpayablefunction setLayersBatch(uint256[] layerIds, string[] names)
setMintbayGenerativeContract
nonpayablefunction setMintbayGenerativeContract(address _mintbayGenerativeContract)
setPalette
nonpayablefunction setPalette(bytes _palette)
setRevealSeed
nonpayablefunction setRevealSeed(uint256 _seed)
setTokenPaletteToExisting
nonpayablefunction setTokenPaletteToExisting(uint256 targetTokenId, uint256 sourceTokenId)
setTokenPaletteToRegistered
nonpayablefunction setTokenPaletteToRegistered(uint256 targetTokenId, uint256 paletteId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateTokenPaletteColors
nonpayablefunction updateTokenPaletteColors(uint256 tokenId, uint256[] indices, bytes newColors)
events
CanvasSizeSet
event CanvasSizeSet(uint16 width, uint16 height)
CompositeChunkAdded
event CompositeChunkAdded(uint256 chunkId, address pointer)
CompositesPerChunkSet
event CompositesPerChunkSet(uint256 compositesPerChunk)
ContractSealed
event ContractSealed()
LayerSet
event LayerSet(uint256 layerId, string name)
MetadataUpdate
event MetadataUpdate(uint256 indexed _tokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaletteRegistered
event PaletteRegistered(uint256 indexed paletteId, address pointer)
PaletteSet
event PaletteSet(address pointer)
RevealSeedSet
event RevealSeedSet(uint256 seed)
TokenPaletteUpdated
event TokenPaletteUpdated(uint256 indexed tokenId, address pointer)
TraitAdded
event TraitAdded(uint256 layerId, uint256 traitId, string name, uint256 pointerIndex, uint256 offset)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040523480156200001157600080fd5b5033806200003957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000448162000061565b50600d80546001600160a01b03191690556101f4600155620000b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b614ec780620000c16000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806399b0eb621161013b578063de9aa594116100b8578063f2824b531161007c578063f2824b5314610578578063f2fde38b1461058b578063f69d3fad1461059e578063f7a96887146105b1578063f8d4be6d146105c457600080fd5b8063de9aa5941461052e578063eaa9751c14610541578063efca8f0814610554578063f132914b14610567578063f253bef31461056f57600080fd5b8063bf2d7b32116100ff578063bf2d7b32146104d1578063c06bb205146104f1578063c87b56dd146104ff578063c8aa088114610512578063dd6f6eb61461051b57600080fd5b806399b0eb621461045e5780639c71a38014610471578063a318a32614610498578063ae481f74146104ab578063aff31edc146104be57600080fd5b8063631f9852116101c9578063844e2cd51161018d578063844e2cd514610401578063865dfcd9146104145780638da5cb5b146104275780638f6594871461043857806393119e0a1461044b57600080fd5b8063631f98521461037557806368bd580e146103895780636b3fc69514610391578063715018a6146103a457806379d3cd00146103ac57600080fd5b806332c2f7f81161021057806332c2f7f8146102fb57806340ce89c21461030457806354214f691461031e578063561d62251461034257806362415a191461035557600080fd5b806306016b701461024d578063094441d1146102935780631d8d4f60146102a857806328c855d4146102d15780632fa2acf8146102e4575b600080fd5b61027661025b366004613db6565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102a66102a1366004613e1a565b6105d7565b005b6102766102b6366004613db6565b6004602052600090815260409020546001600160a01b031681565b6102a66102df366004613e70565b6108dd565b6102ed60015481565b60405190815260200161028a565b6102ed600c5481565b60025461027690600160301b90046001600160a01b031681565b60025461033290600160281b900460ff1681565b604051901515815260200161028a565b6102a6610350366004613e8d565b610979565b610368610363366004613db6565b610b2e565b60405161028a9190613f48565b60025461033290600160201b900460ff1681565b6102a6610bc8565b6102a661039f366004613f9c565b610c0f565b6102a6610d99565b6103e66103ba36600461401e565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161028a565b6102a661040f366004614040565b610dad565b61036861042236600461401e565b610f7c565b6000546001600160a01b0316610276565b6102a6610446366004613db6565b610fa0565b600d54610276906001600160a01b031681565b6102a661046c366004613db6565b611109565b6002546104859062010000900461ffff1681565b60405161ffff909116815260200161028a565b6102a66104a6366004613e1a565b611202565b6102a66104b936600461401e565b611475565b6102766104cc366004613db6565b611702565b6104e46104df366004613db6565b61172c565b60405161028a9190614075565b6002546104859061ffff1681565b61036861050d366004613db6565b6118a9565b6102ed60055481565b6102a661052936600461401e565b6119a3565b6102a661053c3660046140d0565b611bcc565b61036861054f36600461401e565b611cd6565b6102a6610562366004614103565b611fd3565b6102ed6123c5565b6102ed60095481565b610368610586366004613db6565b61244b565b6102a6610599366004613e70565b6124a6565b6102a66105ac3660046141a6565b6124e4565b6102a66105bf3660046141f1565b61257b565b6102766105d236600461401e565b612b1e565b6105df612b56565b600254600160201b900460ff16156106125760405162461bcd60e51b81526004016106099061426a565b60405180910390fd5b808061064e5760405162461bcd60e51b815260206004820152600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606401610609565b600954600061065d82846142ac565b6001600160401b03811115610674576106746142c3565b6040519080825280601f01601f19166020018201604052801561069e576020820181803683370190505b5090506000805b8481101561083d573660008888848181106106c2576106c26142d9565b90506020028101906106d491906142ef565b90925090508581146107235760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610609565b60005b8681101561082f576000838383818110610742576107426142d9565b90506020020135905060ff80168111156107965760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610609565b6000828152600a602090815260408083208484529091529020600201546107f55760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610609565b8060f81b87878151811061080b5761080b6142d9565b60200101906001600160f81b031916908160001a9053505060019485019401610726565b5082600101925050506106a5565b5061084782612b83565b6007547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a99061087890600190614338565b6007805461088890600190614338565b81548110610898576108986142d9565b6000918252602090912001546040516108cd92916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b6108e5612b56565b600254600160201b900460ff161561090f5760405162461bcd60e51b81526004016106099061426a565b6001600160a01b0381166109575760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610609565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610981612b56565b600254600160201b900460ff16156109ab5760405162461bcd60e51b81526004016106099061426a565b8281146109ee5760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610609565b60005b83811015610b2757828282818110610a0b57610a0b6142d9565b9050602002810190610a1d919061434b565b60086000888886818110610a3357610a336142d9565b9050602002013581526020019081526020016000209182610a5592919061441a565b50600954858583818110610a6b57610a6b6142d9565b9050602002013510610aa057848482818110610a8957610a896142d9565b905060200201356001610a9c91906144d9565b6009555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa11858583818110610ad357610ad36142d9565b90506020020135848484818110610aec57610aec6142d9565b9050602002810190610afe919061434b565b604051610b0d939291906144ec565b60405180910390a180610b1f81614522565b9150506109f1565b5050505050565b60086020526000908152604090208054610b4790614391565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7390614391565b8015610bc05780601f10610b9557610100808354040283529160200191610bc0565b820191906000526020600020905b815481529060010190602001808311610ba357829003601f168201915b505050505081565b610bd0612b56565b6002805464ff000000001916600160201b1790556040517fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a0190600090a1565b610c17612b56565b600254600160201b900460ff1615610c415760405162461bcd60e51b81526004016106099061426a565b6009548610610c825760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610609565b60ff851115610cc85760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610609565b610d0784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bc392505050565b600080610d3a88878790508888604051602001610d269392919061453b565b604051602081830303815290604052612e8d565b9250925050610d8f888886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610d89915087905060206144d9565b8a612f46565b5050505050505050565b610da1612b56565b610dab6000612fdc565b565b610db5612b56565b600254600160201b900460ff1615610ddf5760405162461bcd60e51b81526004016106099061426a565b610dea60048261456b565b15610e2e5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606401610609565b60ff610e3b60048361457f565b1115610e895760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920636f6c6f727320696e2070616c657474650000000000006044820152606401610609565b616000610e978260206144d9565b1115610ee55760405162461bcd60e51b815260206004820152601d60248201527f50616c6574746520746f6f206c6172676520666f72205353544f5245320000006044820152606401610609565b604051610f1290610efe9083908590829060200161453b565b60405160208183030381529060405261302c565b600280546601000000000000600160d01b031916600160301b6001600160a01b0393841681029190911791829055604051910490911681527f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c906020015b60405180910390a15050565b600b60209081526000928352604080842090915290825290208054610b4790614391565b610fa8612b56565b600254600160201b900460ff1615610fd25760405162461bcd60e51b81526004016106099061426a565b600081116110175760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606401610609565b600754156110775760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206368616e676520616674657220636f6d706f736974657320756044820152661c1b1bd859195960ca1b6064820152608401610609565b6160006009548261108891906142ac565b11156110cd5760405162461bcd60e51b81526020600482015260146024820152734368756e6b2073697a6520746f6f206c6172676560601b6044820152606401610609565b60018190556040518181527f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc906020015b60405180910390a150565b600d546001600160a01b031633148061112c57506000546001600160a01b031633145b6111695760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610609565b600254600160281b900460ff16156111b65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152606401610609565b600c8190556002805465ff00000000001916600160281b1790556040517f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e906110fe9083815260200190565b61120a612b56565b600254600160201b900460ff16156112345760405162461bcd60e51b81526004016106099061426a565b60095481146112805760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610609565b60005b8181101561137b576000818152600a60205260408120818585858181106112ac576112ac6142d9565b90506020020135815260200190815260200160002060020154116113085760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610609565b60ff83838381811061131c5761131c6142d9565b9050602002013511156113695760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610609565b8061137381614522565b915050611283565b50606060005b828110156113d8578184848381811061139c5761139c6142d9565b905060200201356040516020016113b4929190614593565b604051602081830303815290604052915080806113d090614522565b915050611381565b506113e281612b83565b6007547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a99061141390600190614338565b6007805461142390600190614338565b81548110611433576114336142d9565b60009182526020909120015460405161146892916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b600254600160281b900460ff1661149e5760405162461bcd60e51b8152600401610609906145c5565b600d546001600160a01b03166114c65760405162461bcd60e51b8152600401610609906145eb565b600d546040516331a9108f60e11b81526004810184905233916001600160a01b031690636352211e90602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190614622565b6001600160a01b0316146115825760405162461bcd60e51b81526020600482015260166024820152752737ba103a30b933b2ba103a37b5b2b71037bbb732b960511b6044820152606401610609565b60055481106115c85760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c185b195d1d1948125160721b6044820152606401610609565b6000818152600460205260409020546001600160a01b031661161e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070616c6574746560881b6044820152606401610609565b6000828152600360205260409020546001600160a01b0316158061164c5750600254600160201b900460ff16155b6116685760405162461bcd60e51b81526004016106099061463f565b600081815260046020908152604080832054858452600383529281902080546001600160a01b0319166001600160a01b0390941693841790555191825283917fd194401f97c9998a202d0d146f2b0d8314bba3b6445bb740f9cf84dc6676888791015b60405180910390a260405182907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790600090a25050565b6007818154811061171257600080fd5b6000918252602090912001546001600160a01b0316905081565b60606117366123c5565b82106117545760405162461bcd60e51b815260040161060990614681565b6000600954600161176591906142ac565b9050600060015484611777919061457f565b90506000826001548661178a919061456b565b61179491906142ac565b60075490915082106117b85760405162461bcd60e51b8152600401610609906146b8565b60006117f5600784815481106117d0576117d06142d9565b6000918252602090912001546001600160a01b0316836117f087826144d9565b613070565b905060006009546001600160401b03811115611813576118136142c3565b60405190808252806020026020018201604052801561183c578160200160208202803683370190505b50905060005b60095481101561189e5782818151811061185e5761185e6142d9565b602001015160f81c60f81b60f81c60ff16828281518110611881576118816142d9565b60209081029190910101528061189681614522565b915050611842565b509695505050505050565b600254606090600160281b900460ff166118d55760405162461bcd60e51b8152600401610609906145c5565b6118dd6123c5565b821061191e5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081d1bdad95b88125160821b6044820152606401610609565b600061192a8384611cd6565b90506000611937846130d9565b90506000611944856132ae565b61194d84613340565b83604051602001611960939291906146e2565b604051602081830303815290604052905061197a81613340565b60405160200161198a91906147da565b6040516020818303038152906040529350505050919050565b600254600160281b900460ff166119cc5760405162461bcd60e51b8152600401610609906145c5565b600d546001600160a01b03166119f45760405162461bcd60e51b8152600401610609906145eb565b600d546040516331a9108f60e11b81526004810184905233916001600160a01b031690636352211e90602401602060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a619190614622565b6001600160a01b031614611ab05760405162461bcd60e51b81526020600482015260166024820152752737ba103a30b933b2ba103a37b5b2b71037bbb732b960511b6044820152606401610609565b6000818152600360205260409020546001600160a01b0316611b1f5760405162461bcd60e51b815260206004820152602260248201527f536f7572636520746f6b656e20686173206e6f20637573746f6d2070616c6574604482015261746560f01b6064820152608401610609565b6000828152600360205260409020546001600160a01b03161580611b4d5750600254600160201b900460ff16155b611b695760405162461bcd60e51b81526004016106099061463f565b6000818152600360209081526040808320548584529281902080546001600160a01b0319166001600160a01b0390941693841790555191825283917fd194401f97c9998a202d0d146f2b0d8314bba3b6445bb740f9cf84dc6676888791016116cb565b611bd4612b56565b600254600160201b900460ff1615611bfe5760405162461bcd60e51b81526004016106099061426a565b60008261ffff16118015611c16575060008161ffff16115b8015611c2857506101008261ffff1611155b8015611c3a57506101008161ffff1611155b611c7c5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152606401610609565b6002805461ffff84811663ffffffff19909216821762010000918516918202179092556040805191825260208201929092527f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb29101610f70565b600254606090600160281b900460ff16611d025760405162461bcd60e51b8152600401610609906145c5565b611d0a6123c5565b8310611d285760405162461bcd60e51b815260040161060990614681565b60006040518060a00160405280607b8152602001614dd7607b9139600254611d539061ffff166132ae565b600254611d699062010000900461ffff166132ae565b604051806060016040528060318152602001614da660319139604051602001611d95949392919061481f565b604051602081830303815290604052905060006009546001611db791906142ac565b9050600060015486611dc9919061457f565b905060008260015488611ddc919061456b565b611de691906142ac565b6007549091508210611e0a5760405162461bcd60e51b8152600401610609906146b8565b6000611e22600784815481106117d0576117d06142d9565b600088815260036020526040812054919250906001600160a01b0316611e6357600254611e5e90600160301b90046001600160a01b0316613366565b611e84565b600088815260036020526040902054611e84906001600160a01b0316613366565b905060005b600954811015611fa2576000838281518110611ea757611ea76142d9565b016020908101516000848152600a8352604080822060f89390931c8083529284528082208151606081018352815481526001820154958101959095526002015490840181905291935003611efc575050611f90565b600083815260066020526040812082518154611f4e9291908110611f2257611f226142d9565b600091825260209182902001549084015160408501516001600160a01b03909216916117f090826144d9565b90506000611f5c8287613394565b805190915015611f8b578a81604051602001611f79929190614886565b6040516020818303038152906040529a505b505050505b80611f9a81614522565b915050611e89565b5085604051602001611fb491906148b5565b60408051601f1981840301815291905296505050505050505b92915050565b611fdb612b56565b600254600160201b900460ff16156120055760405162461bcd60e51b81526004016106099061426a565b60095487106120465760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610609565b848314801561205457508281145b6120945760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610609565b60005b858110156121705760ff8787838181106120b3576120b36142d9565b9050602002013511156120fd5760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610609565b61215e858583818110612112576121126142d9565b9050602002810190612124919061434b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bc392505050565b8061216881614522565b915050612097565b50606060005b86811015612217576000868683818110612192576121926142d9565b90506020028101906121a4919061434b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082516040519394506121f29387935090915084906020016148df565b604051602081830303815290604052925050808061220f90614522565b915050612176565b506000806122258a84612e8d565b9250925050600081602061223991906144d9565b905060005b898110156123b75760001989898381811061225b5761225b6142d9565b905060200281019061226d919061434b565b905061227a8460206144d9565b61228491906144d9565b11156122c45760405162461bcd60e51b815260206004820152600f60248201526e4f6666736574206f766572666c6f7760881b6044820152606401610609565b6123698c8c8c848181106122da576122da6142d9565b905060200201358989858181106122f3576122f36142d9565b9050602002810190612305919061434b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508891508f90508e88818110612350576123506142d9565b9050602002810190612362919061434b565b9050612f46565b88888281811061237b5761237b6142d9565b905060200281019061238d919061434b565b612399915060206144d9565b6123a390836144d9565b9150806123af81614522565b91505061223e565b505050505050505050505050565b600954600090819081906123da9060016142ac565b905060005b600754811015612443578161241a60078381548110612400576124006142d9565b6000918252602090912001546001600160a01b0316613366565b51612425919061457f565b61242f90846144d9565b92508061243b81614522565b9150506123df565b509092915050565b600254606090600160281b900460ff166124775760405162461bcd60e51b8152600401610609906145c5565b61247f6123c5565b821061249d5760405162461bcd60e51b815260040161060990614681565b611fcd826130d9565b6124ae612b56565b6001600160a01b0381166124d857604051631e4fbdf760e01b815260006004820152602401610609565b6124e181612fdc565b50565b6124ec612b56565b600254600160201b900460ff16156125165760405162461bcd60e51b81526004016106099061426a565b600083815260086020526040902061252f82848361441a565b506009548310612548576125448360016144d9565b6009555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa11838383604051611468939291906144ec565b600254600160281b900460ff166125a45760405162461bcd60e51b8152600401610609906145c5565b600d546001600160a01b03166125cc5760405162461bcd60e51b8152600401610609906145eb565b600d546040516331a9108f60e11b81526004810187905233916001600160a01b031690636352211e90602401602060405180830381865afa158015612615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126399190614622565b6001600160a01b0316146126815760405162461bcd60e51b815260206004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606401610609565b6000858152600360205260409020546001600160a01b031615806126af5750600254600160201b900460ff16155b6126cb5760405162461bcd60e51b81526004016106099061463f565b82158015906126e357506126e060048261457f565b83145b61272f5760405162461bcd60e51b815260206004820152601d60248201527f4d69736d61746368656420696e646963657320616e6420636f6c6f72730000006044820152606401610609565b61273a60048261456b565b1561277d5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420636f6c6f7273206461746160681b6044820152606401610609565b60025460009061279c90600160301b90046001600160a01b0316613366565b905060208151116127bf5760405162461bcd60e51b815260040161060990614916565b60006127ca82614944565b90506127d760048261456b565b156127f45760405162461bcd60e51b815260040161060990614968565b600061280160048361457f565b905060005b8681101561287f5781888883818110612821576128216142d9565b905060200201351061286d5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0c2d8cae8e8ca40d2dcc8caf605b1b6044820152606401610609565b8061287781614522565b915050612806565b506000826001600160401b0381111561289a5761289a6142c3565b6040519080825280601f01601f1916602001820160405280156128c4576020820181803683370190505b50905060005b8381101561293457846128de8260206144d9565b815181106128ee576128ee6142d9565b602001015160f81c60f81b82828151811061290b5761290b6142d9565b60200101906001600160f81b031916908160001a9053508061292c81614522565b9150506128ca565b5060005b87811015612a01576000898983818110612954576129546142d9565b90506020020135600461296791906142ac565b905060005b60048110156129ec578888826129838660046142ac565b61298d91906144d9565b81811061299c5761299c6142d9565b9050013560f81c60f81b8482846129b391906144d9565b815181106129c3576129c36142d9565b60200101906001600160f81b031916908160001a905350806129e481614522565b91505061296c565b505080806129f990614522565b915050612938565b506000612a1a8483604051602001610efe929190614998565b60008b815260036020908152604080832080546001600160a01b0386166001600160a01b031991821681179092556005805486526004855294839020805490911682179055925490519283529293507f4af28c6be94f0999b274584fe3fa345892dc938bec156d0e92634dcee06bbd25910160405180910390a260058054906000612aa483614522565b90915550506040516001600160a01b03821681528a907fd194401f97c9998a202d0d146f2b0d8314bba3b6445bb740f9cf84dc667688879060200160405180910390a26040518a907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790600090a250505050505050505050565b60066020528160005260406000208181548110612b3a57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000546001600160a01b03163314610dab5760405163118cdaa760e01b8152336004820152602401610609565b6007612b8e8261302c565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905550565b600254600090612be290600160301b90046001600160a01b0316613366565b90506020815111612c055760405162461bcd60e51b815260040161060990614916565b6000612c1082614944565b8351909150612c219060059061456b565b15612c6e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642072656374616e676c652064617461206c656e6774680000006044820152606401610609565b60005b8351811015612e87576000848281518110612c8e57612c8e6142d9565b016020015160f81c9050600085612ca68460016144d9565b81518110612cb657612cb66142d9565b016020015160f81c9050600086612cce8560026144d9565b81518110612cde57612cde6142d9565b016020015160f81c9050600087612cf68660036144d9565b81518110612d0657612d066142d9565b016020015160f81c9050600088612d1e8760046144d9565b81518110612d2e57612d2e6142d9565b016020015160025460f89190911c915061ffff16612d5260ff8581169088166149be565b61ffff1611158015612d83575060025462010000900461ffff16612d7c60ff8481169087166149be565b61ffff1611155b612dc45760405162461bcd60e51b815260206004820152601260248201527152656374206f7574206f6620626f756e647360701b6044820152606401610609565b60008360ff16118015612dda575060008260ff16115b612e1d5760405162461bcd60e51b815260206004820152601460248201527316995c9bc81dda591d1a081bdc881a195a59da1d60621b6044820152606401610609565b612e2a8160ff168861375c565b612e6e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0c2d8cae8e8ca40d2dcc8caf605b1b6044820152606401610609565b5050505050600581612e8091906144d9565b9050612c71565b50505050565b600080600061600084511115612ee55760405162461bcd60e51b815260206004820152601e60248201527f446174612065786365656473206d617820636f6e74726163742073697a6500006044820152606401610609565b6000858152600660205260409020612efc8561302c565b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b0384161790558254919550612f3891614338565b925060009150509250925092565b60408051606081018252848152602080820185815282840185815260008b8152600a84528581208b82528452858120945185559151600185015551600290930192909255888252600b8152828220888352905220612fa485826149e0565b507fa10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03de86868686866040516108cd959493929190614a9f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f091508161306a5763301164256000526004601cfd5b90915290565b60405161ffff82106130825761ffff91505b818310838303026001810184601f8401873c8082015160ff166130bc576001853b038060281c3d3d3e808403818511028203858211029150505b808252600081602084010152806040830101604052509392505050565b6060600060095460016130ec91906142ac565b90506000600154846130fe919061457f565b905060008260015486613111919061456b565b61311b91906142ac565b600754909150821061313f5760405162461bcd60e51b8152600401610609906146b8565b6000613157600784815481106117d0576117d06142d9565b6040805180820190915260018152605b60f81b60208201529091506000805b600954811015613280576000848281518110613194576131946142d9565b016020908101516000848152600b8352604080822060f89390931c80835292909352919091208054919250906131c990614391565b159050806131f157506000828152600a60209081526040808320848452909152902060020154155b156131fc575061326e565b821561322557836040516020016132139190614ad2565b60405160208183030381529060405293505b6000828152600860209081526040808320600b8352818420858552835292819020905161325793889390929101614b6a565b604051602081830303815290604052935060019250505b8061327881614522565b915050613176565b50816040516020016132929190614bd7565b6040516020818303038152906040529650505050505050919050565b606060006132bb836137ab565b60010190506000816001600160401b038111156132da576132da6142c3565b6040519080825280601f01601f191660200182016040528015613304576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461330e57509392505050565b6060611fcd82604051806060016040528060408152602001614e52604091396001613883565b60405164ffffffffff600019833b0116602181016000601f8401853c80825260408201810160405250919050565b606082516000036133b45750604080516020810190915260008152611fcd565b60008251116133d55760405162461bcd60e51b815260040161060990614916565b60006133e083614944565b90506133ed60048261456b565b1561340a5760405162461bcd60e51b815260040161060990614968565b600061341760048361457f565b9050610100811061346a5760405162461bcd60e51b815260206004820152601860248201527f546f6f206d616e792070616c6574746520696e646963657300000000000000006044820152606401610609565b60006134778260016144d9565b6001600160401b0381111561348e5761348e6142c3565b6040519080825280602002602001820160405280156134c157816020015b60608152602001906001900390816134ac5790505b50905060005b865181101561366e5760008782815181106134e4576134e46142d9565b016020015160f81c90506000886134fc8460016144d9565b8151811061350c5761350c6142d9565b016020015160f81c90506000896135248560026144d9565b81518110613534576135346142d9565b016020015160f81c905060008a61354c8660036144d9565b8151811061355c5761355c6142d9565b016020015160f81c905060008b6135748760046144d9565b81518110613584576135846142d9565b016020015160f81c905060ff8190036135a157505050505061365c565b60006135af8660ff166132ae565b6135bb8660ff166132ae565b6135c78660ff166132ae565b6135d38660ff166132ae565b6040516020016135e69493929190614bfc565b6040516020818303038152906040529050878260ff168151811061360c5761360c6142d9565b602002602001015181604051602001613626929190614886565b604051602081830303815290604052888360ff168151811061364a5761364a6142d9565b60200260200101819052505050505050505b6136676005826144d9565b90506134c7565b506060602060005b8481101561374f57838181518110613690576136906142d9565b6020026020010151516000031561373d5760006136ae8260046142ac565b6136b890846144d9565b905060006136c6828b613a04565b905060006136f68b6136d98560036144d9565b815181106136e9576136e96142d9565b016020015160f81c613cf1565b905085828289878151811061370d5761370d6142d9565b60200260200101516040516020016137289493929190614cb9565b60405160208183030381529060405295505050505b8061374781614522565b915050613676565b5090979650505050505050565b600061376960048361456b565b156137865760405162461bcd60e51b815260040161060990614968565b600061379360048461457f565b9050808410806137a357508360ff145b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106137ea5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613816576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061383457662386f26fc10000830492506010015b6305f5e100831061384c576305f5e100830492506008015b612710831061386057612710830492506004015b60648310613872576064830492506002015b600a8310611fcd5760010192915050565b606083516000036138a357506040805160208101909152600081526139fd565b6000826138d4576003855160046138ba91906142ac565b6138c59060026144d9565b6138cf919061457f565b6138f9565b6003855160026138e491906144d9565b6138ee919061457f565b6138f99060046142ac565b90506000816001600160401b03811115613915576139156142c3565b6040519080825280601f01601f19166020018201604052801561393f576020820181803683370190505b50905060018501602082018788518901602081018051600082525b828410156139b5576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061395a565b9052505085156139f6576003885106600181146139d957600281146139ec576139f4565b603d6001830353603d60028303536139f4565b603d60018303535b505b5090925050505b9392505050565b8051606090613a148460036144d9565b10613a5a5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c185b195d1d19481bd9999cd95d60521b6044820152606401610609565b6000828481518110613a6e57613a6e6142d9565b016020015160f81c9050600083613a868660016144d9565b81518110613a9657613a966142d9565b016020015160f81c9050600084613aae8760026144d9565b81518110613abe57613abe6142d9565b602001015160f81c60f81b60f81c90506040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048460ff16901c60ff1681518110613b1257613b126142d9565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525084600f1660ff1681518110613b5d57613b5d6142d9565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048560ff16901c60ff1681518110613bac57613bac6142d9565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525085600f1660ff1681518110613bf757613bf76142d9565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048660ff16901c60ff1681518110613c4657613c466142d9565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525086600f1660ff1681518110613c9157613c916142d9565b016020908101516040516001600160f81b0319978816928101929092529486166021820152928516602284015290841660238301528316602482015291166025820152602601604051602081830303815290604052935050505092915050565b60608160ff1660ff03613d1b5750506040805180820190915260018152603160f81b602082015290565b8160ff16600003613d435750506040805180820190915260018152600360fc1b602082015290565b600060ff613d558482166103e86142ac565b613d5f919061457f565b9050613d74613d6f60648361457f565b6132ae565b613d8e600a613d8460648561456b565b613d6f919061457f565b604051602001613d9f929190614d65565b604051602081830303815290604052915050919050565b600060208284031215613dc857600080fd5b5035919050565b60008083601f840112613de157600080fd5b5081356001600160401b03811115613df857600080fd5b6020830191508360208260051b8501011115613e1357600080fd5b9250929050565b60008060208385031215613e2d57600080fd5b82356001600160401b03811115613e4357600080fd5b613e4f85828601613dcf565b90969095509350505050565b6001600160a01b03811681146124e157600080fd5b600060208284031215613e8257600080fd5b81356139fd81613e5b565b60008060008060408587031215613ea357600080fd5b84356001600160401b0380821115613eba57600080fd5b613ec688838901613dcf565b90965094506020870135915080821115613edf57600080fd5b50613eec87828801613dcf565b95989497509550505050565b60005b83811015613f13578181015183820152602001613efb565b50506000910152565b60008151808452613f34816020860160208601613ef8565b601f01601f19169290920160200192915050565b6020815260006139fd6020830184613f1c565b60008083601f840112613f6d57600080fd5b5081356001600160401b03811115613f8457600080fd5b602083019150836020828501011115613e1357600080fd5b60008060008060008060808789031215613fb557600080fd5b863595506020870135945060408701356001600160401b0380821115613fda57600080fd5b613fe68a838b01613f5b565b90965094506060890135915080821115613fff57600080fd5b5061400c89828a01613f5b565b979a9699509497509295939492505050565b6000806040838503121561403157600080fd5b50508035926020909101359150565b6000806020838503121561405357600080fd5b82356001600160401b0381111561406957600080fd5b613e4f85828601613f5b565b6020808252825182820181905260009190848201906040850190845b818110156140ad57835183529284019291840191600101614091565b50909695505050505050565b803561ffff811681146140cb57600080fd5b919050565b600080604083850312156140e357600080fd5b6140ec836140b9565b91506140fa602084016140b9565b90509250929050565b60008060008060008060006080888a03121561411e57600080fd5b8735965060208801356001600160401b038082111561413c57600080fd5b6141488b838c01613dcf565b909850965060408a013591508082111561416157600080fd5b61416d8b838c01613dcf565b909650945060608a013591508082111561418657600080fd5b506141938a828b01613dcf565b989b979a50959850939692959293505050565b6000806000604084860312156141bb57600080fd5b8335925060208401356001600160401b038111156141d857600080fd5b6141e486828701613f5b565b9497909650939450505050565b60008060008060006060868803121561420957600080fd5b8535945060208601356001600160401b038082111561422757600080fd5b61423389838a01613dcf565b9096509450604088013591508082111561424c57600080fd5b5061425988828901613f5b565b969995985093965092949392505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611fcd57611fcd614296565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261430657600080fd5b8301803591506001600160401b0382111561432057600080fd5b6020019150600581901b3603821315613e1357600080fd5b81810381811115611fcd57611fcd614296565b6000808335601e1984360301811261436257600080fd5b8301803591506001600160401b0382111561437c57600080fd5b602001915036819003821315613e1357600080fd5b600181811c908216806143a557607f821691505b6020821081036143c557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561441557600081815260208120601f850160051c810160208610156143f25750805b601f850160051c820191505b81811015614411578281556001016143fe565b5050505b505050565b6001600160401b03831115614431576144316142c3565b6144458361443f8354614391565b836143cb565b6000601f84116001811461447957600085156144615750838201355b600019600387901b1c1916600186901b178355610b27565b600083815260209020601f19861690835b828110156144aa578685013582556020948501946001909201910161448a565b50868210156144c75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115611fcd57611fcd614296565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006001820161453457614534614296565b5060010190565b838152818360208301376000910160200190815292915050565b634e487b7160e01b600052601260045260246000fd5b60008261457a5761457a614555565b500690565b60008261458e5761458e614555565b500490565b600083516145a5818460208801613ef8565b60f89390931b6001600160f81b0319169190920190815260010192915050565b6020808252600c908201526b139bdd081c995d99585b195960a21b604082015260600190565b60208082526018908201527f4d696e7462617920636f6e7472616374206e6f74207365740000000000000000604082015260600190565b60006020828403121561463457600080fd5b81516139fd81613e5b565b60208082526022908201527f43616e6e6f7420757064617465207365616c656420746f6b656e2070616c6574604082015261746560f01b606082015260800190565b60208082526017908201527f496e76616c696420636f6d706f7369746520696e646578000000000000000000604082015260600190565b60208082526010908201526f125b9d985b1a590818da1d5b9ac8125160821b604082015260600190565b727b226e616d65223a22506978656c4e4654202360681b81528351600090614711816013850160208901613ef8565b7f222c226465736372697074696f6e223a2246756c6c79206f6e2d636861696e206013918401918201527f706978656c20617274204e4654222c22696d616765223a22646174613a696d6160338201527119d94bdcdd99cade1b5b0ed8985cd94d8d0b60721b6053820152845161478f816065840160208901613ef8565b6e11161130ba3a3934b13aba32b9911d60891b6065929091019182015283516147bf816074840160208801613ef8565b607d60f81b6074929091019182015260750195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161481281601d850160208701613ef8565b91909101601d0192915050565b60008551614831818460208a01613ef8565b855190830190614845818360208a01613ef8565b600160fd1b91019081528451614862816001840160208901613ef8565b8451910190614878816001840160208801613ef8565b016001019695505050505050565b60008351614898818460208801613ef8565b8351908301906148ac818360208801613ef8565b01949350505050565b600082516148c7818460208701613ef8565b651e17b9bb339f60d11b920191825250600601919050565b600084516148f1818460208901613ef8565b82018481528351614909816020808501908801613ef8565b0160200195945050505050565b602080825260149082015273496e76616c69642070616c65747465206461746160601b604082015260600190565b805160208083015191908110156143c55760001960209190910360031b1b16919050565b602080825260169082015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b604082015260600190565b828152600082516149b0816020850160208701613ef8565b919091016020019392505050565b61ffff8181168382160190808211156149d9576149d9614296565b5092915050565b81516001600160401b038111156149f9576149f96142c3565b614a0d81614a078454614391565b846143cb565b602080601f831160018114614a425760008415614a2a5750858301515b600019600386901b1c1916600185901b178555614411565b600085815260208120601f198616915b82811015614a7157888601518255948401946001909101908401614a52565b5085821015614a8f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b85815284602082015260a060408201526000614abe60a0830186613f1c565b606083019490945250608001529392505050565b60008251614ae4818460208701613ef8565b600b60fa1b920191825250600101919050565b60008154614b0481614391565b60018281168015614b1c5760018114614b3157614b60565b60ff1984168752821515830287019450614b60565b8560005260208060002060005b85811015614b575781548a820152908401908201614b3e565b50505082870194505b5050505092915050565b60008451614b7c818460208901613ef8565b6e3d913a3930b4ba2fba3cb832911d1160891b908301908152614ba2600f820186614af7565b6a1116113b30b63ab2911d1160a91b81529050614bc2600b820185614af7565b61227d60f01b81526002019695505050505050565b60008251614be9818460208701613ef8565b605d60f81b920191825250600101919050565b681e3932b1ba103c1e9160b91b81528451600090614c21816009850160208a01613ef8565b6411103c9e9160d91b6009918401918201528551614c4681600e840160208a01613ef8565b6811103bb4b23a341e9160b91b600e92909101918201528451614c70816017840160208901613ef8565b6911103432b4b3b43a1e9160b11b601792909101918201528351614c9b816021840160208801613ef8565b6211179f60e91b602192909101918201526024019695505050505050565b60008551614ccb818460208a01613ef8565b693c672066696c6c3d222360b01b9083019081528551614cf281600a840160208a01613ef8565b6f11103334b63616b7b830b1b4ba3c9e9160811b600a92909101918201528451614d2381601a840160208901613ef8565b61111f60f11b601a92909101918201528351614d4681601c840160208801613ef8565b631e17b39f60e11b601c92909101918201526020019695505050505050565b61181760f11b815260008351614d82816002850160208801613ef8565b835190830190614d99816002840160208801613ef8565b0160020194935050505056fe223e3c7374796c653e726563747b73686170652d72656e646572696e673a637269737045646765737d3c2f7374796c653e3c7376672077696474683d223132303022206865696768743d2231323030222073686170652d72656e646572696e673d22637269737045646765732220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030204142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220a8ec0f80da8cc29d77ac06ac4e1bcd91e70a724eb40a391b1cef702d2fa1a7d264736f6c63430008140033