[ { "inputs": [ { "internalType": "address", "name": "defaultAdmin", "type": "address" }, { "internalType": "address", "name": "minter", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burnToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getIsActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "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": "bool", "name": "_isActive", "type": "bool" } ], "name": "setActive", "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": "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "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": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526001600c553480156200001657600080fd5b5060405162002110380380620021108339810160408190526200003991620001be565b6040518060400160405280600f81526020016e233092341021b7bab837b739903b1960891b815250604051806040016040528060048152602001632321bb1960e11b81525081600090816200008f91906200029d565b5060016200009e82826200029d565b5050600a805460ff1916905550620000b8600083620000ee565b50620000e57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620000ee565b50505062000369565b6000828152600b602090815260408083206001600160a01b038516845290915281205460ff1662000197576000838152600b602090815260408083206001600160a01b03861684529091529020805460ff191660011790556200014e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200019b565b5060005b92915050565b80516001600160a01b0381168114620001b957600080fd5b919050565b60008060408385031215620001d257600080fd5b620001dd83620001a1565b9150620001ed60208401620001a1565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022157607f821691505b6020821081036200024257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000298576000816000526020600020601f850160051c81016020861015620002735750805b601f850160051c820191505b8181101562000294578281556001016200027f565b5050505b505050565b81516001600160401b03811115620002b957620002b9620001f6565b620002d181620002ca84546200020c565b8462000248565b602080601f831160018114620003095760008415620002f05750858301515b600019600386901b1c1916600185901b17855562000294565b600085815260208120601f198616915b828110156200033a5788860151825594840194600190910190840162000319565b5085821015620003595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611d9780620003796000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80635c975abb1161010f578063a22cb465116100a2578063d539139311610071578063d53913931461043b578063d547741f14610462578063e985e9c514610475578063fba7cc79146104b157600080fd5b8063a22cb465146103ef578063acec338a14610402578063b88d4fde14610415578063c87b56dd1461042857600080fd5b80638456cb59116100de5780638456cb591461039e57806391d14854146103a657806395d89b41146103df578063a217fddf146103e757600080fd5b80635c975abb1461035a5780636352211e1461036557806370a08231146103785780637b47ec1a1461038b57600080fd5b80632f2ff15d1161018757806340d097c31161015657806340d097c31461030e57806342842e0e1461032157806342966c68146103345780634f6ccce71461034757600080fd5b80632f2ff15d146102cd5780632f745c59146102e057806336568abe146102f35780633f4ba83a1461030657600080fd5b806318160ddd116101c357806318160ddd1461027257806323b872dd14610284578063248a9ca314610297578063248b71fc146102ba57600080fd5b806301ffc9a7146101f557806306fdde031461021d578063081812fc14610232578063095ea7b31461025d575b600080fd5b610208610203366004611930565b6104bc565b60405190151581526020015b60405180910390f35b6102256104cd565b604051610214919061199d565b6102456102403660046119b0565b61055f565b6040516001600160a01b039091168152602001610214565b61027061026b3660046119e5565b610588565b005b6008545b604051908152602001610214565b610270610292366004611a0f565b610597565b6102766102a53660046119b0565b6000908152600b602052604090206001015490565b6102706102c83660046119e5565b610640565b6102706102db366004611a4b565b6106f1565b6102766102ee3660046119e5565b610716565b610270610301366004611a4b565b61077b565b6102706107cc565b61027061031c366004611a77565b6107e2565b61027061032f366004611a0f565b61087f565b6102706103423660046119b0565b61089a565b6102766103553660046119b0565b6108a6565b600a5460ff16610208565b6102456103733660046119b0565b6108ff565b610276610386366004611a77565b61090a565b6102706103993660046119b0565b61096b565b6102706109d1565b6102086103b4366004611a4b565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102256109e4565b610276600081565b6102706103fd366004611aa2565b6109f3565b610270610410366004611acc565b6109fe565b610270610423366004611afd565b610a1d565b6102256104363660046119b0565b610a34565b6102767f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610270610470366004611a4b565b610a9c565b610208610483366004611bd9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600d5460ff16610208565b60006104c782610ac1565b92915050565b6060600080546104dc90611c03565b80601f016020809104026020016040519081016040528092919081815260200182805461050890611c03565b80156105555780601f1061052a57610100808354040283529160200191610555565b820191906000526020600020905b81548152906001019060200180831161053857829003601f168201915b5050505050905090565b600061056a82610aff565b506000828152600460205260409020546001600160a01b03166104c7565b610593828233610b38565b5050565b6001600160a01b0382166105c657604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105d3838333610b45565b9050836001600160a01b0316816001600160a01b03161461063a576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016105bd565b50505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661066a81610b5a565b600d5460ff166106bc5760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f74206163746976650000000000000000000060448201526064016105bd565b60005b8281101561063a57600c8054600091826106d883611c53565b9190505590506106e88582610b64565b506001016106bf565b6000828152600b602052604090206001015461070c81610b5a565b61063a8383610be2565b60006107218361090a565b82106107525760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105bd565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03811633146107bd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c78282610c90565b505050565b60006107d781610b5a565b6107df610d17565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661080c81610b5a565b600d5460ff1661085e5760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f74206163746976650000000000000000000060448201526064016105bd565b600c80546000918261086f83611c53565b9190505590506107c78382610d69565b6107c783838360405180602001604052806000815250610a1d565b61059360008233610b45565b60006108b160085490565b82106108da5760405163295f44f760e21b815260006004820152602481018390526044016105bd565b600882815481106108ed576108ed611c6c565b90600052602060002001549050919050565b60006104c782610aff565b60006001600160a01b03821661094f576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016105bd565b506001600160a01b031660009081526003602052604090205490565b600061097681610b5a565b600d5460ff166109c85760405162461bcd60e51b815260206004820152601660248201527f436f6e7472616374206973206e6f74206163746976650000000000000000000060448201526064016105bd565b61059382610d83565b60006109dc81610b5a565b6107df610dbe565b6060600180546104dc90611c03565b610593338383610dfb565b6000610a0981610b5a565b50600d805460ff1916911515919091179055565b610a28848484610597565b61063a84848484610eb3565b6060610a3f82610aff565b506000610a4a610fdc565b90506000815111610a6a5760405180602001604052806000815250610a95565b80610a7484610ffc565b604051602001610a85929190611c82565b6040516020818303038152906040525b9392505050565b6000828152600b6020526040902060010154610ab781610b5a565b61063a8383610c90565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806104c757506104c78261109c565b6000818152600260205260408120546001600160a01b0316806104c757604051637e27328960e01b8152600481018490526024016105bd565b6107c783838360016110da565b6000610b52848484611225565b949350505050565b6107df813361123a565b6001600160a01b038216610b8e57604051633250574960e11b8152600060048201526024016105bd565b6000610b9c83836000610b45565b90506001600160a01b038116156107c7576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016105bd565b6000828152600b602090815260408083206001600160a01b038516845290915281205460ff16610c88576000838152600b602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610c403390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016104c7565b5060006104c7565b6000828152600b602090815260408083206001600160a01b038516845290915281205460ff1615610c88576000838152600b602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016104c7565b610d1f6112a8565b600a805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6105938282604051806020016040528060008152506112e6565b6000610d926000836000610b45565b90506001600160a01b03811661059357604051637e27328960e01b8152600481018390526024016105bd565b610dc66112fd565b600a805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d4c3390565b6001600160a01b038216610e46576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016105bd565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561063a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610ef5903390889087908790600401611cb1565b6020604051808303816000875af1925050508015610f30575060408051601f3d908101601f19168201909252610f2d91810190611ced565b60015b610f99573d808015610f5e576040519150601f19603f3d011682016040523d82523d6000602084013e610f63565b606091505b508051600003610f9157604051633250574960e11b81526001600160a01b03851660048201526024016105bd565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610fd557604051633250574960e11b81526001600160a01b03851660048201526024016105bd565b5050505050565b60606040518060600160405280602e8152602001611d34602e9139905090565b606060006110098361133a565b600101905060008167ffffffffffffffff81111561102957611029611ae7565b6040519080825280601f01601f191660200182016040528015611053576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461105d57509392505050565b60006001600160e01b031982167f780e9d630000000000000000000000000000000000000000000000000000000014806104c757506104c78261141c565b80806110ee57506001600160a01b03821615155b156111e85760006110fe84610aff565b90506001600160a01b0383161580159061112a5750826001600160a01b0316816001600160a01b031614155b801561115c57506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b1561119e576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016105bd565b81156111e65783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061122f6112fd565b610b528484846114b7565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff16610593576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016105bd565b600a5460ff166112e4576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6112f08383610b64565b6107c76000848484610eb3565b600a5460ff16156112e4576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611383577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106113af576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106113cd57662386f26fc10000830492506010015b6305f5e10083106113e5576305f5e100830492506008015b61271083106113f957612710830492506004015b6064831061140b576064830492506002015b600a83106104c75760010192915050565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061147f57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806104c757507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146104c7565b6000806114c5858585611584565b90506001600160a01b0381166115225761151d84600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611545565b846001600160a01b0316816001600160a01b03161461154557611545818561168a565b6001600160a01b0385166115615761155c8461171b565b610b52565b846001600160a01b0316816001600160a01b031614610b5257610b5285856117ca565b6000828152600260205260408120546001600160a01b03908116908316156115b1576115b181848661181a565b6001600160a01b038116156115ef576115ce6000856000806110da565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561161e576001600160a01b0385166000908152600360205260409020805460010190555b600084815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60006116958361090a565b6000838152600760205260409020549091508082146116e8576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061172d90600190611d0a565b6000838152600960205260408120546008805493945090928490811061175557611755611c6c565b90600052602060002001549050806008838154811061177657611776611c6c565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806117ae576117ae611d1d565b6001900381819060005260206000200160009055905550505050565b600060016117d78461090a565b6117e19190611d0a565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b611825838383611897565b6107c7576001600160a01b03831661185357604051637e27328960e01b8152600481018290526024016105bd565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016105bd565b60006001600160a01b03831615801590610b525750826001600160a01b0316846001600160a01b031614806118f157506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80610b525750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b0319811681146107df57600080fd5b60006020828403121561194257600080fd5b8135610a958161191a565b60005b83811015611968578181015183820152602001611950565b50506000910152565b6000815180845261198981602086016020860161194d565b601f01601f19169290920160200192915050565b602081526000610a956020830184611971565b6000602082840312156119c257600080fd5b5035919050565b80356001600160a01b03811681146119e057600080fd5b919050565b600080604083850312156119f857600080fd5b611a01836119c9565b946020939093013593505050565b600080600060608486031215611a2457600080fd5b611a2d846119c9565b9250611a3b602085016119c9565b9150604084013590509250925092565b60008060408385031215611a5e57600080fd5b82359150611a6e602084016119c9565b90509250929050565b600060208284031215611a8957600080fd5b610a95826119c9565b803580151581146119e057600080fd5b60008060408385031215611ab557600080fd5b611abe836119c9565b9150611a6e60208401611a92565b600060208284031215611ade57600080fd5b610a9582611a92565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611b1357600080fd5b611b1c856119c9565b9350611b2a602086016119c9565b925060408501359150606085013567ffffffffffffffff80821115611b4e57600080fd5b818701915087601f830112611b6257600080fd5b813581811115611b7457611b74611ae7565b604051601f8201601f19908116603f01168101908382118183101715611b9c57611b9c611ae7565b816040528281528a6020848701011115611bb557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611bec57600080fd5b611bf5836119c9565b9150611a6e602084016119c9565b600181811c90821680611c1757607f821691505b602082108103611c3757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c6557611c65611c3d565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60008351611c9481846020880161194d565b835190830190611ca881836020880161194d565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611ce36080830184611971565b9695505050505050565b600060208284031215611cff57600080fd5b8151610a958161191a565b818103818111156104c7576104c7611c3d565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f666173682d636c61696d2d6170692e626e762e6d652f6170692f76322f6d657461646174612fa2646970667358221220d5c30923a5b4dce6b4b16acb89018ea9be93dacdd0b480a7b96bc4c64be2101664736f6c63430008180033000000000000000000000000b7403e2161358c6d819e97878a7ce653b08a2e1a00000000000000000000000013974b63d8d962d9f88e316ec2be7afe72e0b62a