[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [], "name": "PAUSER_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": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ], "name": "mint", "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": "account", "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": "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": "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" } ]
60806040523480156200001157600080fd5b506040518060400160405280600a8152602001692a32b9ba103a37b5b2b760b11b815250604051806040016040528060038152602001621514d560ea1b815250604051806040016040528060098152602001681b1bd8d85b1a1bdcdd60ba1b815250828281600290805190602001906200008d92919062000299565b508051620000a390600390602084019062000299565b5050600c805460ff19169055508051620000c590600e90602084019062000299565b50620000d360003362000134565b620000ff7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000134565b6200012b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000134565b5050506200037c565b62000140828262000144565b5050565b6200015b82826200018760201b62000e201760201c565b60008281526001602090815260409091206200018291839062000ebe62000227821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000140576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001e33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200023e836001600160a01b03841662000247565b90505b92915050565b6000818152600183016020526040812054620002905750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000241565b50600062000241565b828054620002a7906200033f565b90600052602060002090601f016020900481019282620002cb576000855562000316565b82601f10620002e657805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000316578251825591602001919060010190620002f9565b506200032492915062000328565b5090565b5b8082111562000324576000815560010162000329565b600181811c908216806200035457607f821691505b602082108114156200037657634e487b7160e01b600052602260045260246000fd5b50919050565b61294f806200038c6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d53913931461041b578063d547741f14610442578063e63ab1e914610455578063e985e9c51461047c57600080fd5b8063a22cb465146103cf578063b88d4fde146103e2578063c87b56dd146103f5578063ca15c8731461040857600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b41146103bf578063a217fddf146103c757600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f836600461244a565b6104b8565b60405190151581526020015b60405180910390f35b61021a6104c9565b60405161020991906124bf565b61023a6102353660046124d2565b61055b565b6040516001600160a01b039091168152602001610209565b610265610260366004612507565b610582565b005b600a545b604051908152602001610209565b610265610287366004612531565b6106b9565b61026b61029a3660046124d2565b60009081526020819052604090206001015490565b6102656102bd36600461256d565b610731565b61026b6102d0366004612507565b610756565b6102656102e336600461256d565b6107fe565b61026561088a565b6102656102fe366004612531565b610932565b6102656103113660046124d2565b61094d565b61026b6103243660046124d2565b6109c4565b600c5460ff166101fd565b61023a6103423660046124d2565b610a68565b610265610355366004612599565b610acd565b61026b610368366004612599565b610b89565b610265610c23565b61023a6103833660046125b4565b610cc7565b6101fd61039636600461256d565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61021a610ce6565b61026b600081565b6102656103dd3660046125d6565b610cf5565b6102656103f0366004612628565b610d00565b61021a6104033660046124d2565b610d7e565b61026b6104163660046124d2565b610de4565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561045036600461256d565b610dfb565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd61048a366004612704565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006104c382610ed3565b92915050565b6060600280546104d89061272e565b80601f01602080910402602001604051908101604052809291908181526020018280546105049061272e565b80156105515780601f1061052657610100808354040283529160200191610551565b820191906000526020600020905b81548152906001019060200180831161053457829003601f168201915b5050505050905090565b600061056682610f11565b506000908152600660205260409020546001600160a01b031690565b600061058d82610a68565b9050806001600160a01b0316836001600160a01b0316141561061c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806106385750610638813361048a565b6106aa5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610613565b6106b48383610f75565b505050565b6106c4335b82610ff0565b6107265760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610613565b6106b483838361106f565b60008281526020819052604090206001015461074c81611282565b6106b4838361128c565b600061076183610b89565b82106107d55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610613565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b038116331461087c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610613565b61088682826112ae565b5050565b6108b47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b610928576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e70617573656064820152608401610613565b6109306112d0565b565b6106b483838360405180602001604052806000815250610d00565b610956336106be565b6109b85760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610613565b6109c181611322565b50565b60006109cf600a5490565b8210610a435760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610613565b600a8281548110610a5657610a56612769565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104c35760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610613565b610af77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610396565b610b695760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e740000006064820152608401610613565b610b7b81610b76600d5490565b6113d2565b6109c1600d80546001019055565b60006001600160a01b038216610c075760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610613565b506001600160a01b031660009081526005602052604090205490565b610c4d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b610cbf5760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20706175736500006064820152608401610613565b610930611578565b6000828152600160205260408120610cdf90836115b5565b9392505050565b6060600380546104d89061272e565b6108863383836115c1565b610d0a3383610ff0565b610d6c5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610613565b610d7884848484611690565b50505050565b6060610d8982610f11565b6000610d93611719565b90506000815111610db35760405180602001604052806000815250610cdf565b80610dbd84611728565b604051602001610dce92919061277f565b6040516020818303038152906040529392505050565b60008181526001602052604081206104c3906117d2565b600082815260208190526040902060010154610e1681611282565b6106b483836112ae565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610886576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e7a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610cdf836001600160a01b0384166117dc565b60006001600160e01b031982167f780e9d630000000000000000000000000000000000000000000000000000000014806104c357506104c38261182b565b6000818152600460205260409020546001600160a01b03166109c15760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610613565b6000818152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190610fb782610a68565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ffc83610a68565b9050806001600160a01b0316846001600160a01b0316148061104357506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b806110675750836001600160a01b031661105c8461055b565b6001600160a01b0316145b949350505050565b826001600160a01b031661108282610a68565b6001600160a01b0316146110e65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610613565b6001600160a01b0382166111615760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610613565b61116e838383600161189d565b826001600160a01b031661118182610a68565b6001600160a01b0316146111e55760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610613565b6000818152600660209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260058552838620805460001901905590871680865283862080546001019055868652600490945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109c181336118a9565b6112968282610e20565b60008281526001602052604090206106b49082610ebe565b6112b8828261191c565b60008281526001602052604090206106b4908261199b565b6112d86119b0565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600061132d82610a68565b905061133d81600084600161189d565b61134682610a68565b6000838152600660209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0385168085526005845282852080546000190190558785526004909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166114285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610613565b6000818152600460205260409020546001600160a01b03161561148d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610613565b61149b60008383600161189d565b6000818152600460205260409020546001600160a01b0316156115005760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610613565b6001600160a01b0382166000818152600560209081526040808320805460010190558483526004909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611580611a02565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113053390565b6000610cdf8383611a55565b816001600160a01b0316836001600160a01b031614156116235760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610613565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61169b84848461106f565b6116a784848484611a7f565b610d785760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610613565b6060600e80546104d89061272e565b6060600061173583611be2565b600101905060008167ffffffffffffffff81111561175557611755612612565b6040519080825280601f01601f19166020018201604052801561177f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846117c5576117ca565b611789565b509392505050565b60006104c3825490565b6000818152600183016020526040812054611823575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104c3565b5060006104c3565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061188e57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806104c357506104c382611cc4565b610d7884848484611d02565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610886576118da81611d87565b6118e5836020611d99565b6040516020016118f69291906127ae565b60408051601f198184030181529082905262461bcd60e51b8252610613916004016124bf565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610886576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610cdf836001600160a01b038416611f7a565b600c5460ff166109305760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610613565b600c5460ff16156109305760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610613565b6000826000018281548110611a6c57611a6c612769565b9060005260206000200154905092915050565b60006001600160a01b0384163b15611bd757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ac390339089908890889060040161282f565b602060405180830381600087803b158015611add57600080fd5b505af1925050508015611b0d575060408051601f3d908101601f19168201909252611b0a9181019061286b565b60015b611bbd573d808015611b3b576040519150601f19603f3d011682016040523d82523d6000602084013e611b40565b606091505b508051611bb55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610613565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611067565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611c2b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611c57576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611c7557662386f26fc10000830492506010015b6305f5e1008310611c8d576305f5e100830492506008015b6127108310611ca157612710830492506004015b60648310611cb3576064830492506002015b600a83106104c35760010192915050565b60006001600160e01b031982167f5a05180f0000000000000000000000000000000000000000000000000000000014806104c357506104c38261206d565b611d0e848484846120d4565b600c5460ff1615610d785760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201527f68696c65207061757365640000000000000000000000000000000000000000006064820152608401610613565b60606104c36001600160a01b03831660145b60606000611da883600261289e565b611db39060026128bd565b67ffffffffffffffff811115611dcb57611dcb612612565b6040519080825280601f01601f191660200182016040528015611df5576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611e2c57611e2c612769565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611e7757611e77612769565b60200101906001600160f81b031916908160001a9053506000611e9b84600261289e565b611ea69060016128bd565b90505b6001811115611f2b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611ee757611ee7612769565b1a60f81b828281518110611efd57611efd612769565b60200101906001600160f81b031916908160001a90535060049490941c93611f24816128d5565b9050611ea9565b508315610cdf5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610613565b60008181526001830160205260408120548015612063576000611f9e6001836128ec565b8554909150600090611fb2906001906128ec565b9050818114612017576000866000018281548110611fd257611fd2612769565b9060005260206000200154905080876000018481548110611ff557611ff5612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202857612028612903565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104c3565b60009150506104c3565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806104c357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146104c3565b6120e08484848461221c565b60018111156121575760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f7274656400000000000000000000006064820152608401610613565b816001600160a01b0385166121b3576121ae81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b6121d6565b836001600160a01b0316856001600160a01b0316146121d6576121d685826122a4565b6001600160a01b0384166121f2576121ed81612341565b612215565b846001600160a01b0316846001600160a01b0316146122155761221584826123f0565b5050505050565b6001811115610d78576001600160a01b03841615612262576001600160a01b0384166000908152600560205260408120805483929061225c9084906128ec565b90915550505b6001600160a01b03831615610d78576001600160a01b038316600090815260056020526040812080548392906122999084906128bd565b909155505050505050565b600060016122b184610b89565b6122bb91906128ec565b60008381526009602052604090205490915080821461230e576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090612353906001906128ec565b6000838152600b6020526040812054600a805493945090928490811061237b5761237b612769565b9060005260206000200154905080600a838154811061239c5761239c612769565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a8054806123d4576123d4612903565b6001900381819060005260206000200160009055905550505050565b60006123fb83610b89565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146109c157600080fd5b60006020828403121561245c57600080fd5b8135610cdf81612434565b60005b8381101561248257818101518382015260200161246a565b83811115610d785750506000910152565b600081518084526124ab816020860160208601612467565b601f01601f19169290920160200192915050565b602081526000610cdf6020830184612493565b6000602082840312156124e457600080fd5b5035919050565b80356001600160a01b038116811461250257600080fd5b919050565b6000806040838503121561251a57600080fd5b612523836124eb565b946020939093013593505050565b60008060006060848603121561254657600080fd5b61254f846124eb565b925061255d602085016124eb565b9150604084013590509250925092565b6000806040838503121561258057600080fd5b82359150612590602084016124eb565b90509250929050565b6000602082840312156125ab57600080fd5b610cdf826124eb565b600080604083850312156125c757600080fd5b50508035926020909101359150565b600080604083850312156125e957600080fd5b6125f2836124eb565b91506020830135801515811461260757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561263e57600080fd5b612647856124eb565b9350612655602086016124eb565b925060408501359150606085013567ffffffffffffffff8082111561267957600080fd5b818701915087601f83011261268d57600080fd5b81358181111561269f5761269f612612565b604051601f8201601f19908116603f011681019083821181831017156126c7576126c7612612565b816040528281528a60208487010111156126e057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561271757600080fd5b612720836124eb565b9150612590602084016124eb565b600181811c9082168061274257607f821691505b6020821081141561276357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008351612791818460208801612467565b8351908301906127a5818360208801612467565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516127e6816017850160208801612467565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612823816028840160208801612467565b01602801949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526128616080830184612493565b9695505050505050565b60006020828403121561287d57600080fd5b8151610cdf81612434565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156128b8576128b8612888565b500290565b600082198211156128d0576128d0612888565b500190565b6000816128e4576128e4612888565b506000190190565b6000828210156128fe576128fe612888565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cee17ee0f8ffe587cca524d68b1e2cf4f81cc96a566791c3bb4290d2cc6cde3864736f6c63430008090033