[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "address", "name": "gateway", "type": "address" }, { "internalType": "address", "name": "trustedForwarder", "type": "address" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator", "type": "uint96" }, { "internalType": "uint256", "name": "_maxTokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_OPERATOR_WHITELIST_ID", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_SECURITY_LEVEL", "outputs": [ { "internalType": "enum TransferSecurityLevels", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_BasicERC721C", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_BasicERC721CWithBasicRoyalties", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gateway", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPermittedContractReceivers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSecurityPolicy", "outputs": [ { "components": [ { "internalType": "enum TransferSecurityLevels", "name": "transferSecurityLevel", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversId", "type": "uint120" } ], "internalType": "struct CollectionSecurityPolicy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "contract ICreatorTokenTransferValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "limit", "type": "uint256" } ], "name": "incTokenIdCounter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "isContractReceiverPermitted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isOperatorWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenId", "type": "uint256[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "resetOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_gateway", "type": "address" } ], "name": "setGateway", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTokenId", "type": "uint256" } ], "name": "setMaxTokenID", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomValidatorAndSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setToDefaultSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162003bdb38038062003bdb833981016040819052620000349162000435565b60408051602080820183526000808352835191820190935282815282546001600160a01b0319166001600160a01b0389811691909117909355918616608052849184918b918b918b918b918b91899187918791906001620000968382620005a9565b506002620000a58282620005a9565b505050620000ba82826200012360201b60201c565b50620000d19050620000cb62000145565b62000156565b600a805460ff60a01b19169055600c620000ec8582620005a9565b50620000fc600b80546001019055565b600d555062000113935085925084915050620001a8565b5050505050505050505062000675565b6007620001318382620005a9565b506008620001408282620005a9565b505050565b600062000151620001ff565b905090565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001b4828262000236565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b6080516000906001600160a01b0316331480156200021e575060143610155b1562000231575060131936013560601c90565b503390565b6127106001600160601b0382161115620002aa5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620003025760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620002a1565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600e55565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200036357600080fd5b81516001600160401b03808211156200038057620003806200033b565b604051601f8301601f19908116603f01168101908282118183101715620003ab57620003ab6200033b565b81604052838152602092508683858801011115620003c857600080fd5b600091505b83821015620003ec5785820183015181830184015290820190620003cd565b600093810190920192909252949350505050565b80516001600160a01b03811681146200041857600080fd5b919050565b80516001600160601b03811681146200041857600080fd5b600080600080600080600080610100898b0312156200045357600080fd5b88516001600160401b03808211156200046b57600080fd5b620004798c838d0162000351565b995060208b01519150808211156200049057600080fd5b6200049e8c838d0162000351565b985060408b0151915080821115620004b557600080fd5b50620004c48b828c0162000351565b965050620004d560608a0162000400565b9450620004e560808a0162000400565b9350620004f560a08a0162000400565b92506200050560c08a016200041d565b915060e089015190509295985092959890939650565b600181811c908216806200053057607f821691505b6020821081036200055157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200014057600081815260208120601f850160051c81016020861015620005805750805b601f850160051c820191505b81811015620005a1578281556001016200058c565b505050505050565b81516001600160401b03811115620005c557620005c56200033b565b620005dd81620005d684546200051b565b8462000557565b602080601f831160018114620006155760008415620005fc5750858301515b600019600386901b1c1916600185901b178555620005a1565b600085815260208120601f198616915b82811015620006465788860151825594840194600190910190840162000625565b5085821015620006655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161354362000698600039600081816104ba015261221c01526135436000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c80636352211e116101825780639d0b1a4c116100e9578063be537f43116100a2578063e8a3d4851161007c578063e8a3d4851461067d578063e985e9c514610685578063f2fde38b146106c1578063fd762d92146106d457600080fd5b8063be537f431461064d578063c87b56dd14610662578063d007af5c1461067557600080fd5b80639d0b1a4c146105ee5780639d645a4414610601578063a22cb46514610614578063a9fc664e14610627578063ad891d9e14610491578063b88d4fde1461063a57600080fd5b80637e463b1e1161013b5780637e463b1e1461059e5780638456cb59146105b15780638da5cb5b146105b957806390646b4a146105ca57806391ba317a146105dd57806395d89b41146105e657600080fd5b80636352211e146105425780636c3b86991461055557806370a082311461055d578063715018a61461057057806373cc802a1461057857806375ceb3411461058b57600080fd5b80632a55205a11610241578063495c8bf9116101fa5780635944c753116101d45780635944c753146104ea5780635c975abb146104fd5780635d4c1d461461050f578063613471621461052f57600080fd5b8063495c8bf91461047c5780634b061b7214610491578063572b6c05146104aa57600080fd5b80632a55205a146103f65780632e8da829146104285780633f4ba83a1461043b57806340c10f191461044357806342842e0e1461045657806342966c681461046957600080fd5b8063095ea7b311610293578063095ea7b314610384578063098144d414610397578063116191b6146103a85780631b25b077146103bb5780631c33b328146103ce57806323b872dd146103e357600080fd5b806301463546146102db57806301ffc9a71461031157806302fe53051461033457806304634d8d1461034957806306fdde031461035c578063081812fc14610371575b600080fd5b6102f471721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b61032461031f3660046128fc565b6106e7565b6040519015158152602001610308565b610347610342366004612919565b6106f8565b005b6103476103573660046129bc565b610712565b610364610728565b6040516103089190612a41565b6102f461037f366004612a54565b6107ba565b610347610392366004612a6d565b6107e1565b6009546001600160a01b03166102f4565b6000546102f4906001600160a01b031681565b6103246103c9366004612a99565b610908565b6103d6600181565b6040516103089190612b06565b6103476103f1366004612b14565b6109a1565b610409610404366004612b55565b6109d9565b604080516001600160a01b039093168352602083019190915201610308565b610324610436366004612b77565b610a85565b610347610b91565b610347610451366004612a6d565b610ba3565b610347610464366004612b14565b610bcb565b610347610477366004612a54565b610be6565b610484610c19565b6040516103089190612b94565b61049c630134d70181565b604051908152602001610308565b6103246104b8366004612b77565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b6103476104f8366004612be1565b610d2a565b600a54600160a01b900460ff16610324565b610517600181565b6040516001600160781b039091168152602001610308565b61034761053d366004612c41565b610d3d565b6102f4610550366004612a54565b610ea8565b610347610f08565b61049c61056b366004612b77565b611001565b610347611087565b610347610586366004612b77565b611099565b610347610599366004612c81565b6110aa565b61049c6105ac366004612a54565b6110f1565b61034761114d565b600a546001600160a01b03166102f4565b6103476105d8366004612b77565b61115d565b61049c600d5481565b610364611187565b6103476105fc366004612a54565b611196565b61032461060f366004612b77565b6111a3565b610347610622366004612d17565b61126b565b610347610635366004612b77565b61127d565b610347610648366004612d97565b61139e565b6106556113d7565b6040516103089190612e5b565b610364610670366004612a54565b611492565b6104846114d4565b61036461158d565b610324610693366004612e97565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6103476106cf366004612b77565b6115c1565b6103476106e2366004612ec5565b61162e565b60006106f28261172d565b92915050565b610700611752565b600c61070d828483612fa9565b505050565b61071a611752565b610724828261181a565b5050565b60606007805461073790612f21565b80601f016020809104026020016040519081016040528092919081815260200182805461076390612f21565b80156107b05780601f10610785576101008083540402835291602001916107b0565b820191906000526020600020905b81548152906001019060200180831161079357829003601f168201915b5050505050905090565b60006107c58261186f565b506000908152600560205260409020546001600160a01b031690565b60006107ec82610ea8565b9050806001600160a01b0316836001600160a01b03160361085e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166108706118ce565b6001600160a01b0316148061088c575061088c816106936118ce565b6108fe5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610855565b61070d83836118d8565b6009546000906001600160a01b0316156109965760095460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b15801561097157600080fd5b505afa925050508015610982575060015b61098e5750600061099a565b50600161099a565b5060015b9392505050565b6109b26109ac6118ce565b82611946565b6109ce5760405162461bcd60e51b815260040161085590613069565b61070d8383836119c5565b6000828152600f602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a4e575060408051808201909152600e546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a6d906001600160601b0316876130cc565b610a7791906130e3565b915196919550909350505050565b6009546000906001600160a01b031615610b8957600954604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d9190613105565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190613177565b506000919050565b610b99611752565b610ba1611b3e565b565b610bab611752565b80600003610bc157610bbe6110006110f1565b90505b6107248282611b99565b61070d8383836040518060200160405280600081525061139e565b610bf16109ac6118ce565b610c0d5760405162461bcd60e51b815260040161085590613069565b610c1681611c1e565b50565b6009546060906001600160a01b031615610d1757600954604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190613105565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d129190810190613194565b905090565b5060408051600081526020810190915290565b610d32611752565b61070d838383611ccb565b610d45611d25565b6000610d596009546001600160a01b031690565b90506001600160a01b038116610d8257604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c090610db09030908890600401613246565b600060405180830381600087803b158015610dca57600080fd5b505af1158015610dde573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa029150610e109030908790600401613263565b600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0384169250638d7443149150610e709030908690600401613263565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b5050505050505050565b6000818152600360205260408120546001600160a01b0316806106f25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610855565b610f10611d25565b610f2b71721c310194ccfc01e523fc93c9cccfa2a0ac61127d565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c090610f63903090600190600401613246565b600060405180830381600087803b158015610f7d57600080fd5b505af1158015610f91573d6000803e3d6000fd5b5050604051631182550160e11b815271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa029150610fcd903090600190600401613263565b600060405180830381600087803b158015610fe757600080fd5b505af1158015610ffb573d6000803e3d6000fd5b50505050565b60006001600160a01b03821661106b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610855565b506001600160a01b031660009081526004602052604090205490565b61108f611d29565b610ba16000611da2565b6110a1611df4565b610c1681611da2565b6110b2611752565b60005b81811015610ffb576110df848484848181106110d3576110d3613285565b90506020020135611b99565b806110e98161329b565b9150506110b5565b6000806110fd600b5490565b905061110983826132b4565b92505b828110156106f2576000818152600360205260409020546001600160a01b03166111365792915050565b611144600b80546001019055565b50600b5461110c565b611155611752565b610ba1611e60565b611165611df4565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60606008805461073790612f21565b61119e611752565b600d55565b6009546000906001600160a01b031615610b8957600954604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190613105565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b0385166024820152604401610b48565b6107246112766118ce565b8383611ea4565b611285611d25565b60006001600160a01b0382163b15611300576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa9250505080156112f8575060408051601f3d908101601f191682019092526112f591810190613177565b60015b156113005790505b6001600160a01b03821615801590611316575080155b15611334576040516332483afb60e01b815260040160405180910390fd5b600954604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600980546001600160a01b0319166001600160a01b0392909216919091179055565b6113af6113a96118ce565b83611946565b6113cb5760405162461bcd60e51b815260040161085590613069565b610ffb84848484611f6a565b60408051606081018252600080825260208201819052918101919091526009546001600160a01b03161561147157600954604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa15801561144d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d129190613105565b50604080516060810182526000808252602082018190529181019190915290565b6060600c6114a1306014611f9d565b6114ac846020611f9d565b6040516020016114be9392919061333a565b6040516020818303038152906040529050919050565b6009546060906001600160a01b031615610d1757600954604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa158015611538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c9190613105565b60409081015190516001600160e01b031960e084901b1681526001600160781b039091166004820152602401610ccd565b6060600c61159c306014611f9d565b6040516020016115ad929190613389565b604051602081830303815290604052905090565b6115c9611d29565b6001600160a01b0381166110a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b611636611d25565b61163f8461127d565b604051630368065360e61b81526001600160a01b0385169063da0194c09061166d9030908790600401613246565b600060405180830381600087803b15801561168757600080fd5b505af115801561169b573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa0291506116cd9030908690600401613263565b600060405180830381600087803b1580156116e757600080fd5b505af11580156116fb573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0387169250638d7443149150610e709030908590600401613263565b60006001600160e01b0319821663152a902d60e11b14806106f257506106f282612139565b600061175c6118ce565b6000549091506001600160a01b038083169116148061179d5750806001600160a01b0316611792600a546001600160a01b031690565b6001600160a01b0316145b610c165760405162461bcd60e51b815260206004820152604260248201527f47617465776179477561726465644f776e61626c653a2063616c6c657220697360448201527f206e656974686572207468652067617465776179206e6f7220746865206f776e60648201526132b960f11b608482015260a401610855565b611824828261215e565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b6000818152600360205260409020546001600160a01b0316610c165760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610855565b6000610d12612218565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061190d82610ea8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061195283610ea8565b9050806001600160a01b0316846001600160a01b0316148061199957506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b806119bd5750836001600160a01b03166119b2846107ba565b6001600160a01b0316145b949350505050565b826001600160a01b03166119d882610ea8565b6001600160a01b0316146119fe5760405162461bcd60e51b8152600401610855906133bb565b6001600160a01b038216611a605760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b611a6d838383600161226a565b826001600160a01b0316611a8082610ea8565b6001600160a01b031614611aa65760405162461bcd60e51b8152600401610855906133bb565b600081815260056020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260048552838620805460001901905590871680865283862080546001019055868652600390945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461070d838383600161227e565b611b466122ac565b600a805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b7c6118ce565b6040516001600160a01b03909116815260200160405180910390a1565b600d541580611baa5750600d548111155b611c045760405162461bcd60e51b815260206004820152602560248201527f4552433732313a20696e76616c69642c20746f6b656e4964203e206d6178546f6044820152641ad95b925960da1b6064820152608401610855565b6107248282604051806020016040528060008152506122fc565b6000611c2982610ea8565b9050611c3981600084600161226a565b611c4282610ea8565b600083815260056020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526004845282852080546000190190558785526003909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461072481600084600161227e565b611cd683838361232f565b6040516001600160601b03821681526001600160a01b0383169084907f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c906020015b60405180910390a3505050565b610ba15b611d316118ce565b6001600160a01b0316611d4c600a546001600160a01b031690565b6001600160a01b031614610ba15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610855565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000546001600160a01b03163314610ba15760405162461bcd60e51b815260206004820152602960248201527f47617465776179477561726465643a2063616c6c6572206973206e6f7420746860448201526865206761746577617960b81b6064820152608401610855565b611e686123fa565b600a805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b7c6118ce565b816001600160a01b0316836001600160a01b031603611f055760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610855565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d18565b611f758484846119c5565b611f8184848484612447565b610ffb5760405162461bcd60e51b815260040161085590613400565b60606000611fac8360026130cc565b611fb79060026132b4565b67ffffffffffffffff811115611fcf57611fcf612d50565b6040519080825280601f01601f191660200182016040528015611ff9576020820181803683370190505b509050600360fc1b8160008151811061201457612014613285565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061204357612043613285565b60200101906001600160f81b031916908160001a90535060006120678460026130cc565b6120729060016132b4565b90505b60018111156120ea576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120a6576120a6613285565b1a60f81b8282815181106120bc576120bc613285565b60200101906001600160f81b031916908160001a90535060049490941c936120e381613452565b9050612075565b50831561099a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610855565b60006001600160e01b031982166337f1ef5d60e01b14806106f257506106f28261254f565b6127106001600160601b03821611156121895760405162461bcd60e51b815260040161085590613469565b6001600160a01b0382166121df5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610855565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600e55565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633148015612253575060143610155b15612265575060131936013560601c90565b503390565b6122726123fa565b610ffb84848484612574565b60005b818110156122a55761229d858561229884876132b4565b61259b565b600101612281565b5050505050565b600a54600160a01b900460ff16610ba15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610855565b6123068383612605565b6123136000848484612447565b61070d5760405162461bcd60e51b815260040161085590613400565b6127106001600160601b038216111561235a5760405162461bcd60e51b815260040161085590613469565b6001600160a01b0382166123b05760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610855565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600f90529190942093519051909116600160a01b029116179055565b600a54600160a01b900460ff1615610ba15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610855565b60006001600160a01b0384163b1561254457836001600160a01b031663150b7a026124706118ce565b8786866040518563ffffffff1660e01b815260040161249294939291906134b3565b6020604051808303816000875af19250505080156124cd575060408051601f3d908101601f191682019092526124ca918101906134f0565b60015b61252a573d8080156124fb576040519150601f19603f3d011682016040523d82523d6000602084013e612500565b606091505b5080516000036125225760405162461bcd60e51b815260040161085590613400565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506119bd565b506001949350505050565b60006001600160e01b031982166310c8aba560e31b14806106f257506106f2826127a8565b60005b818110156122a557612593858561258e84876132b4565b6127f8565b600101612577565b6001600160a01b0383811615908316158180156125b55750805b156125d357604051635cbd944160e01b815260040160405180910390fd5b81156125e9576125e4610c166118ce565b6122a5565b80156125fa576125e4610c166118ce565b6122a5610c166118ce565b6001600160a01b03821661265b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610855565b6000818152600360205260409020546001600160a01b0316156126c05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610855565b6126ce60008383600161226a565b6000818152600360205260409020546001600160a01b0316156127335760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610855565b6001600160a01b038216600081815260046020908152604080832080546001019055848352600390915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461072460008383600161227e565b60006001600160e01b031982166380ac58cd60e01b14806127d957506001600160e01b03198216635b5e139f60e01b145b806106f257506301ffc9a760e01b6001600160e01b03198316146106f2565b6001600160a01b0383811615908316158180156128125750805b1561283057604051635cbd944160e01b815260040160405180910390fd5b8115612841576125e4610c166118ce565b8015612852576125e4610c166118ce565b6122a561285d6118ce565b868686346009546001600160a01b0316156122a55760095460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b1580156128c757600080fd5b505afa1580156128db573d6000803e3d6000fd5b505050505050505050565b6001600160e01b031981168114610c1657600080fd5b60006020828403121561290e57600080fd5b813561099a816128e6565b6000806020838503121561292c57600080fd5b823567ffffffffffffffff8082111561294457600080fd5b818501915085601f83011261295857600080fd5b81358181111561296757600080fd5b86602082850101111561297957600080fd5b60209290920196919550909350505050565b6001600160a01b0381168114610c1657600080fd5b80356001600160601b03811681146129b757600080fd5b919050565b600080604083850312156129cf57600080fd5b82356129da8161298b565b91506129e8602084016129a0565b90509250929050565b60005b83811015612a0c5781810151838201526020016129f4565b50506000910152565b60008151808452612a2d8160208601602086016129f1565b601f01601f19169290920160200192915050565b60208152600061099a6020830184612a15565b600060208284031215612a6657600080fd5b5035919050565b60008060408385031215612a8057600080fd5b8235612a8b8161298b565b946020939093013593505050565b600080600060608486031215612aae57600080fd5b8335612ab98161298b565b92506020840135612ac98161298b565b91506040840135612ad98161298b565b809150509250925092565b60078110612b0257634e487b7160e01b600052602160045260246000fd5b9052565b602081016106f28284612ae4565b600080600060608486031215612b2957600080fd5b8335612b348161298b565b92506020840135612b448161298b565b929592945050506040919091013590565b60008060408385031215612b6857600080fd5b50508035926020909101359150565b600060208284031215612b8957600080fd5b813561099a8161298b565b6020808252825182820181905260009190848201906040850190845b81811015612bd55783516001600160a01b031683529284019291840191600101612bb0565b50909695505050505050565b600080600060608486031215612bf657600080fd5b833592506020840135612c088161298b565b9150612c16604085016129a0565b90509250925092565b60078110610c1657600080fd5b6001600160781b0381168114610c1657600080fd5b600080600060608486031215612c5657600080fd5b8335612c6181612c1f565b92506020840135612c7181612c2c565b91506040840135612ad981612c2c565b600080600060408486031215612c9657600080fd5b8335612ca18161298b565b9250602084013567ffffffffffffffff80821115612cbe57600080fd5b818601915086601f830112612cd257600080fd5b813581811115612ce157600080fd5b8760208260051b8501011115612cf657600080fd5b6020830194508093505050509250925092565b8015158114610c1657600080fd5b60008060408385031215612d2a57600080fd5b8235612d358161298b565b91506020830135612d4581612d09565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d8f57612d8f612d50565b604052919050565b60008060008060808587031215612dad57600080fd5b8435612db88161298b565b9350602085810135612dc98161298b565b935060408601359250606086013567ffffffffffffffff80821115612ded57600080fd5b818801915088601f830112612e0157600080fd5b813581811115612e1357612e13612d50565b612e25601f8201601f19168501612d66565b91508082528984828501011115612e3b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000606082019050612e6e828451612ae4565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b60008060408385031215612eaa57600080fd5b8235612eb58161298b565b91506020830135612d458161298b565b60008060008060808587031215612edb57600080fd5b8435612ee68161298b565b93506020850135612ef681612c1f565b92506040850135612f0681612c2c565b91506060850135612f1681612c2c565b939692955090935050565b600181811c90821680612f3557607f821691505b602082108103612f5557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561070d57600081815260208120601f850160051c81016020861015612f825750805b601f850160051c820191505b81811015612fa157828155600101612f8e565b505050505050565b67ffffffffffffffff831115612fc157612fc1612d50565b612fd583612fcf8354612f21565b83612f5b565b6000601f8411600181146130095760008515612ff15750838201355b600019600387901b1c1916600186901b1783556122a5565b600083815260209020601f19861690835b8281101561303a578685013582556020948501946001909201910161301a565b50868210156130575760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106f2576106f26130b6565b60008261310057634e487b7160e01b600052601260045260246000fd5b500490565b60006060828403121561311757600080fd5b6040516060810181811067ffffffffffffffff8211171561313a5761313a612d50565b604052825161314881612c1f565b8152602083015161315881612c2c565b6020820152604083015161316b81612c2c565b60408201529392505050565b60006020828403121561318957600080fd5b815161099a81612d09565b600060208083850312156131a757600080fd5b825167ffffffffffffffff808211156131bf57600080fd5b818501915085601f8301126131d357600080fd5b8151818111156131e5576131e5612d50565b8060051b91506131f6848301612d66565b818152918301840191848101908884111561321057600080fd5b938501935b8385101561323a578451925061322a8361298b565b8282529385019390850190613215565b98975050505050505050565b6001600160a01b03831681526040810161099a6020830184612ae4565b6001600160a01b039290921682526001600160781b0316602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016132ad576132ad6130b6565b5060010190565b808201808211156106f2576106f26130b6565b600081546132d481612f21565b600182811680156132ec576001811461330157613330565b60ff1984168752821515830287019450613330565b8560005260208060002060005b858110156133275781548a82015290840190820161330e565b50505082870194505b5050505092915050565b600061334682866132c7565b602f60f81b8082528551613361816001850160208a016129f1565b6001920191820152835161337c8160028401602088016129f1565b0160020195945050505050565b600061339582856132c7565b602f60f81b815283516133af8160018401602088016129f1565b01600101949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600081613461576134616130b6565b506000190190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906134e690830184612a15565b9695505050505050565b60006020828403121561350257600080fd5b815161099a816128e656fea2646970667358221220f15bb7a428b3628080897fe645501fac4d8cf7f6935b93e85da1f100cb8f280e64736f6c634300081300330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000007127f0feaef8143241a5fac62ac5b7be02ef26a9000000000000000000000000ecf63dfba014dc9cea2715d10082bbbc892d218800000000000000000000000060c75f1017c6d8158dcc18aa87b15f2e2002543100000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000001754696d6566726f6e74202d2054696d656b65657065727300000000000000000000000000000000000000000000000000000000000000000000000000000000045446544b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b68747470733a2f2f6170692e787465722e696f2f61737365742f6e66742f6d6574612f657468657265756d000000000000000000000000000000000000000000