[ { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "string", "name": "_contractURIString", "type": "string" }, { "internalType": "address", "name": "_contractOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": 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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "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": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURIString", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_cardCount", "type": "uint256" } ], "name": "getTotalBalance", "outputs": [ { "internalType": "uint256[][]", "name": "amounts", "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": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "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" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_cardId", "type": "uint256" }, { "internalType": "uint256", "name": "_cardLevel", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes1", "name": "_mintedContractChar", "type": "bytes1" }, { "internalType": "uint256", "name": "_number", "type": "uint256" }, { "internalType": "uint256[]", "name": "_data", "type": "uint256[]" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "string", "name": "_baseURIString", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRecipient", "type": "address" }, { "internalType": "uint256", "name": "basisPoints", "type": "uint256" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_contractURIString", "type": "string" } ], "name": "setcontractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "subContract", "outputs": [ { "internalType": "contract INftSubcontract", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "tokenVars", "outputs": [ { "components": [ { "internalType": "uint128", "name": "cardId", "type": "uint128" }, { "internalType": "uint32", "name": "level", "type": "uint32" }, { "internalType": "uint32", "name": "number", "type": "uint32" }, { "internalType": "bytes1", "name": "mintedContractChar", "type": "bytes1" } ], "internalType": "struct RainiCardsv3.TokenVars", "name": "", "type": "tuple" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "updateSubContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
6080604052620f4240600c553480156200001857600080fd5b50604051620035ba380380620035ba8339810160408190526200003b916200030a565b82620000478162000107565b50620000533362000119565b6200006060003362000143565b6200006d60008262000143565b620000997f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000143565b620000c57f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8483362000143565b6006620000d3848262000426565b50600980546001600160a01b0319166001600160a01b0383161790556007620000fd838262000426565b50505050620004f2565b600262000115828262000426565b5050565b600480546001600160a01b031916905562000140816200014f602090811b620012e917901c565b50565b620001158282620001a1565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620001155760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002013390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200026d57600080fd5b81516001600160401b03808211156200028a576200028a62000245565b604051601f8301601f19908116603f01168101908282118183101715620002b557620002b562000245565b81604052838152602092508683858801011115620002d257600080fd5b600091505b83821015620002f65785820183015181830184015290820190620002d7565b600093810190920192909252949350505050565b6000806000606084860312156200032057600080fd5b83516001600160401b03808211156200033857600080fd5b62000346878388016200025b565b945060208601519150808211156200035d57600080fd5b506200036c868287016200025b565b604086015190935090506001600160a01b03811681146200038c57600080fd5b809150509250925092565b600181811c90821680620003ac57607f821691505b602082108103620003cd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200042157600081815260208120601f850160051c81016020861015620003fc5750805b601f850160051c820191505b818110156200041d5782815560010162000408565b5050505b505050565b81516001600160401b0381111562000442576200044262000245565b6200045a8162000453845462000397565b84620003d3565b602080601f831160018114620004925760008415620004795750858301515b600019600386901b1c1916600185901b1785556200041d565b600085815260208120601f198616915b82811015620004c357888601518255948401946001909101908401620004a2565b5085821015620004e25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6130b880620005026000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80638c7ea24b11610130578063c0d06d89116100b8578063e985e9c51161007c578063e985e9c51461057f578063efa00ce7146105bb578063f242432a146105ce578063f2fde38b146105e1578063f5298aca146105f457600080fd5b8063c0d06d891461052b578063d53913931461053e578063d547741f14610553578063e30c397814610566578063e8a3d4851461057757600080fd5b80639592c996116100ff5780639592c996146104d55780639abc8320146104f5578063a217fddf146104fd578063a22cb46514610505578063a39501df1461051857600080fd5b80638c7ea24b146104815780638da5cb5b1461049457806391ba317a146104b957806391d14854146104c257600080fd5b80632f2ff15d116101b3578063571286831161018257806357128683146104435780636f16760414610456578063715018a61461046957806379ba5097146104715780637e41d8351461047957600080fd5b80632f2ff15d146103ea57806336568abe146103fd5780634e1273f41461041057806355f804b31461043057600080fd5b8063156e29f6116101fa578063156e29f614610346578063248a9ca31461035b578063282c51f31461037e5780632a55205a146103a55780632eb2c2d6146103d757600080fd5b8062fdd58e1461022b57806301870f021461025157806301ffc9a7146103035780630e89341c14610326575b600080fd5b61023e610239366004612247565b610607565b6040519081526020015b60405180910390f35b6102b261025f366004612271565b60408051608081018252600080825260208201819052918101829052606081019190915250604080516080810182526001600160801b039092168252600060208301819052908201819052606082015290565b6040805182516001600160801b0316815260208084015163ffffffff908116918301919091528383015116918101919091526060918201516001600160f81b03191691810191909152608001610248565b6103166103113660046122a0565b6106a0565b6040519015158152602001610248565b610339610334366004612271565b610716565b604051610248919061230d565b610359610354366004612320565b6107d1565b005b61023e610369366004612271565b60009081526005602052604090206001015490565b61023e7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6103b86103b3366004612353565b610825565b604080516001600160a01b039093168352602083019190915201610248565b6103596103e53660046124d8565b61085f565b6103596103f8366004612581565b6108ab565b61035961040b366004612581565b6108d0565b61042361041e36600461261a565b61094e565b60405161024891906126b8565b61035961043e3660046126cb565b610a77565b61035961045136600461271b565b610a97565b6103596104643660046127a2565b610b93565b610359610bc9565b610359610bdd565b610339610c57565b61035961048f366004612247565b610ce5565b6003546001600160a01b03165b6040516001600160a01b039091168152602001610248565b61023e600c5481565b6103166104d0366004612581565b610d7e565b6104e86104e3366004612247565b610da9565b60405161024891906127bd565b610339611072565b61023e600081565b61035961051336600461281f565b61107f565b61035961052636600461285b565b61108a565b6008546104a1906001600160a01b031681565b61023e60008051602061306383398151915281565b610359610561366004612581565b6110e2565b6004546001600160a01b03166104a1565b610339611107565b61031661058d3660046128ee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6103596105c93660046126cb565b611199565b6103596105dc366004612918565b6111b9565b6103596105ef3660046127a2565b6111fe565b610359610602366004612320565b61126f565b60006001600160a01b0383166106775760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806106d157506001600160e01b031982166303a24d0760e21b145b806106ec57506001600160e01b03198216637965db0b60e01b145b8061070757506001600160e01b0319821663152a902d60e11b145b8061069a575061069a8261133b565b6008546060906001600160a01b031661075b57600661073483611360565b6040516020016107459291906129b6565b6040516020818303038152906040529050919050565b6008546040516303a24d0760e21b8152600481018490526001600160a01b0390911690630e89341c90602401600060405180830381865afa1580156107a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261069a9190810190612a4e565b919050565b6107e960008051602061306383398151915233610d7e565b6108055760405162461bcd60e51b815260040161066e90612acf565b610820838383604051806020016040528060008152506113f2565b505050565b600a54600b5460009182916001600160a01b03909116906127109061084a9086612b15565b6108549190612b2c565b915091509250929050565b6001600160a01b03851633148061087b575061087b853361058d565b6108975760405162461bcd60e51b815260040161066e90612b4e565b6108a485858585856114c3565b5050505050565b6000828152600560205260409020600101546108c68161165f565b6108208383611669565b6001600160a01b03811633146109405760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161066e565b61094a82826116ef565b5050565b606081518351146109b35760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161066e565b600083516001600160401b038111156109ce576109ce612375565b6040519080825280602002602001820160405280156109f7578160200160208202803683370190505b50905060005b8451811015610a6f57610a42858281518110610a1b57610a1b612b9c565b6020026020010151858381518110610a3557610a35612b9c565b6020026020010151610607565b828281518110610a5457610a54612b9c565b6020908102919091010152610a6881612bb2565b90506109fd565b509392505050565b610a82600033610d7e565b610a8b57600080fd5b600661094a8282612c11565b610aaf60008051602061306383398151915233610d7e565b610acb5760405162461bcd60e51b815260040161066e90612acf565b8251600103610b095761082083600081518110610aea57610aea612b9c565b6020026020010151838360405180602001604052806000815250611756565b60005b8351811015610b8d57610b7b848281518110610b2a57610b2a612b9c565b6020026020010151848381518110610b4457610b44612b9c565b6020026020010151848481518110610b5e57610b5e612b9c565b6020026020010151604051806020016040528060008152506113f2565b80610b8581612bb2565b915050610b0c565b50505050565b610b9e600033610d7e565b610ba757600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610bd16118a1565b610bdb60006118fb565b565b60045433906001600160a01b03168114610c4b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161066e565b610c54816118fb565b50565b60078054610c649061297c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c909061297c565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b505050505081565b610ced6118a1565b6001600160a01b038216610d585760405162461bcd60e51b815260206004820152602c60248201527f526f79616c746965733a206e657720726563697069656e74206973207468652060448201526b7a65726f206164647265737360a01b606482015260840161066e565b600a80546001600160a01b0319166001600160a01b039390931692909217909155600b55565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606000826001600160401b03811115610dc557610dc5612375565b604051908082528060200260200182016040528015610df857816020015b6060815260200190600190039081610de35790505b509050600060015b848111610ee8576000610e138783610607565b90508015610ed557604080516002808252606082018352909160208301908036833701905050848481518110610e4b57610e4b612b9c565b602002602001018190525081848481518110610e6957610e69612b9c565b6020026020010151600081518110610e8357610e83612b9c565b60200260200101818152505080848481518110610ea257610ea2612b9c565b6020026020010151600181518110610ebc57610ebc612b9c565b602090810291909101015282610ed181612bb2565b9350505b5080610ee081612bb2565b915050610e00565b506000816001600160401b03811115610f0357610f03612375565b604051908082528060200260200182016040528015610f3657816020015b6060815260200190600190039081610f215790505b50905060005b8281101561106857604080516002808252606082018352909160208301908036833701905050828281518110610f7457610f74612b9c565b6020026020010181905250838181518110610f9157610f91612b9c565b6020026020010151600081518110610fab57610fab612b9c565b6020026020010151828281518110610fc557610fc5612b9c565b6020026020010151600081518110610fdf57610fdf612b9c565b602002602001018181525050838181518110610ffd57610ffd612b9c565b602002602001015160018151811061101757611017612b9c565b602002602001015182828151811061103157611031612b9c565b602002602001015160018151811061104b5761104b612b9c565b60209081029190910101528061106081612bb2565b915050610f3c565b5095945050505050565b60068054610c649061297c565b61094a338383611914565b6110a260008051602061306383398151915233610d7e565b6110be5760405162461bcd60e51b815260040161066e90612acf565b6110d9878786604051806020016040528060008152506113f2565b50505050505050565b6000828152600560205260409020600101546110fd8161165f565b61082083836116ef565b6060600780546111169061297c565b80601f01602080910402602001604051908101604052809291908181526020018280546111429061297c565b801561118f5780601f106111645761010080835404028352916020019161118f565b820191906000526020600020905b81548152906001019060200180831161117257829003601f168201915b5050505050905090565b6111a4600033610d7e565b6111ad57600080fd5b600761094a8282612c11565b6001600160a01b0385163314806111d557506111d5853361058d565b6111f15760405162461bcd60e51b815260040161066e90612b4e565b6108a485858585856119f4565b6112066118a1565b600480546001600160a01b0383166001600160a01b031990911681179091556112376003546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6112997f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610d7e565b6112de5760405162461bcd60e51b815260206004820152601660248201527531b0b63632b91034b9903737ba103090313ab93732b960511b604482015260640161066e565b610820838383611b1e565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b03198216637965db0b60e01b148061069a575061069a82611c9a565b6060600061136d83611cea565b60010190506000816001600160401b0381111561138c5761138c612375565b6040519080825280601f01601f1916602001820160405280156113b6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846113c057509392505050565b6001600160a01b0384166114185760405162461bcd60e51b815260040161066e90612cd0565b33600061142485611dc2565b9050600061143185611dc2565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290611463908490612d11565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46110d983600089898989611e0d565b81518351146114e45760405162461bcd60e51b815260040161066e90612d24565b6001600160a01b03841661150a5760405162461bcd60e51b815260040161066e90612d6c565b3360005b84518110156115f157600085828151811061152b5761152b612b9c565b60200260200101519050600085838151811061154957611549612b9c565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156115995760405162461bcd60e51b815260040161066e90612db1565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906115d6908490612d11565b92505081905550505050806115ea90612bb2565b905061150e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611641929190612dfb565b60405180910390a4611657818787878787611f68565b505050505050565b610c548133612023565b6116738282610d7e565b61094a5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556116ab3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6116f98282610d7e565b1561094a5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b03841661177c5760405162461bcd60e51b815260040161066e90612cd0565b815183511461179d5760405162461bcd60e51b815260040161066e90612d24565b3360005b8451811015611839578381815181106117bc576117bc612b9c565b60200260200101516000808784815181106117d9576117d9612b9c565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118219190612d11565b9091555081905061183181612bb2565b9150506117a1565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161188a929190612dfb565b60405180910390a46108a481600087878787611f68565b6003546001600160a01b03163314610bdb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066e565b600480546001600160a01b0319169055610c54816112e9565b816001600160a01b0316836001600160a01b0316036119875760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161066e565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611a1a5760405162461bcd60e51b815260040161066e90612d6c565b336000611a2685611dc2565b90506000611a3385611dc2565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015611a765760405162461bcd60e51b815260040161066e90612db1565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611ab3908490612d11565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611b13848a8a8a8a8a611e0d565b505050505050505050565b6001600160a01b038316611b805760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b336000611b8c84611dc2565b90506000611b9984611dc2565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015611c225760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161066e565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090526110d9565b60006001600160e01b03198216636cdb3d1360e11b1480611ccb57506001600160e01b031982166303a24d0760e21b145b8061069a57506301ffc9a760e01b6001600160e01b031983161461069a565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611d295772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611d55576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611d7357662386f26fc10000830492506010015b6305f5e1008310611d8b576305f5e100830492506008015b6127108310611d9f57612710830492506004015b60648310611db1576064830492506002015b600a831061069a5760010192915050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611dfc57611dfc612b9c565b602090810291909101015292915050565b6001600160a01b0384163b156116575760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611e519089908990889088908890600401612e29565b6020604051808303816000875af1925050508015611e8c575060408051601f3d908101601f19168201909252611e8991810190612e6e565b60015b611f3857611e98612e8b565b806308c379a003611ed15750611eac612ea7565b80611eb75750611ed3565b8060405162461bcd60e51b815260040161066e919061230d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161066e565b6001600160e01b0319811663f23a6e6160e01b146110d95760405162461bcd60e51b815260040161066e90612f30565b6001600160a01b0384163b156116575760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611fac9089908990889088908890600401612f78565b6020604051808303816000875af1925050508015611fe7575060408051601f3d908101601f19168201909252611fe491810190612e6e565b60015b611ff357611e98612e8b565b6001600160e01b0319811663bc197c8160e01b146110d95760405162461bcd60e51b815260040161066e90612f30565b61202d8282610d7e565b61094a5761203a8161207c565b61204583602061208e565b604051602001612056929190612fd6565b60408051601f198184030181529082905262461bcd60e51b825261066e9160040161230d565b606061069a6001600160a01b03831660145b6060600061209d836002612b15565b6120a8906002612d11565b6001600160401b038111156120bf576120bf612375565b6040519080825280601f01601f1916602001820160405280156120e9576020820181803683370190505b509050600360fc1b8160008151811061210457612104612b9c565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061213357612133612b9c565b60200101906001600160f81b031916908160001a9053506000612157846002612b15565b612162906001612d11565b90505b60018111156121da576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061219657612196612b9c565b1a60f81b8282815181106121ac576121ac612b9c565b60200101906001600160f81b031916908160001a90535060049490941c936121d38161304b565b9050612165565b5083156122295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161066e565b9392505050565b80356001600160a01b03811681146107cc57600080fd5b6000806040838503121561225a57600080fd5b61226383612230565b946020939093013593505050565b60006020828403121561228357600080fd5b5035919050565b6001600160e01b031981168114610c5457600080fd5b6000602082840312156122b257600080fd5b81356122298161228a565b60005b838110156122d85781810151838201526020016122c0565b50506000910152565b600081518084526122f98160208601602086016122bd565b601f01601f19169290920160200192915050565b60208152600061222960208301846122e1565b60008060006060848603121561233557600080fd5b61233e84612230565b95602085013595506040909401359392505050565b6000806040838503121561236657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156123b0576123b0612375565b6040525050565b60006001600160401b038211156123d0576123d0612375565b5060051b60200190565b600082601f8301126123eb57600080fd5b813560206123f8826123b7565b604051612405828261238b565b83815260059390931b850182019282810191508684111561242557600080fd5b8286015b848110156124405780358352918301918301612429565b509695505050505050565b60006001600160401b0382111561246457612464612375565b50601f01601f191660200190565b600061247d8361244b565b60405161248a828261238b565b80925084815285858501111561249f57600080fd5b8484602083013760006020868301015250509392505050565b600082601f8301126124c957600080fd5b61222983833560208501612472565b600080600080600060a086880312156124f057600080fd5b6124f986612230565b945061250760208701612230565b935060408601356001600160401b038082111561252357600080fd5b61252f89838a016123da565b9450606088013591508082111561254557600080fd5b61255189838a016123da565b9350608088013591508082111561256757600080fd5b50612574888289016124b8565b9150509295509295909350565b6000806040838503121561259457600080fd5b823591506125a460208401612230565b90509250929050565b600082601f8301126125be57600080fd5b813560206125cb826123b7565b6040516125d8828261238b565b83815260059390931b85018201928281019150868411156125f857600080fd5b8286015b848110156124405761260d81612230565b83529183019183016125fc565b6000806040838503121561262d57600080fd5b82356001600160401b038082111561264457600080fd5b612650868387016125ad565b9350602085013591508082111561266657600080fd5b50612673858286016123da565b9150509250929050565b600081518084526020808501945080840160005b838110156126ad57815187529582019590820190600101612691565b509495945050505050565b602081526000612229602083018461267d565b6000602082840312156126dd57600080fd5b81356001600160401b038111156126f357600080fd5b8201601f8101841361270457600080fd5b61271384823560208401612472565b949350505050565b60008060006060848603121561273057600080fd5b83356001600160401b038082111561274757600080fd5b612753878388016125ad565b9450602086013591508082111561276957600080fd5b612775878388016123da565b9350604086013591508082111561278b57600080fd5b50612798868287016123da565b9150509250925092565b6000602082840312156127b457600080fd5b61222982612230565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561281257603f1988860301845261280085835161267d565b945092850192908501906001016127e4565b5092979650505050505050565b6000806040838503121561283257600080fd5b61283b83612230565b91506020830135801515811461285057600080fd5b809150509250929050565b600080600080600080600060e0888a03121561287657600080fd5b61287f88612230565b965060208801359550604088013594506060880135935060808801356001600160f81b0319811681146128b157600080fd5b925060a0880135915060c08801356001600160401b038111156128d357600080fd5b6128df8a828b016123da565b91505092959891949750929550565b6000806040838503121561290157600080fd5b61290a83612230565b91506125a460208401612230565b600080600080600060a0868803121561293057600080fd5b61293986612230565b945061294760208701612230565b9350604086013592506060860135915060808601356001600160401b0381111561297057600080fd5b612574888289016124b8565b600181811c9082168061299057607f821691505b6020821081036129b057634e487b7160e01b600052602260045260246000fd5b50919050565b60008084546129c48161297c565b600182811680156129dc57600181146129f157612a20565b60ff1984168752821515830287019450612a20565b8860005260208060002060005b85811015612a175781548a8201529084019082016129fe565b50505082870194505b50505050643f6369643d60d81b81528351612a428160058401602088016122bd565b01600501949350505050565b600060208284031215612a6057600080fd5b81516001600160401b03811115612a7657600080fd5b8201601f81018413612a8757600080fd5b8051612a928161244b565b604051612a9f828261238b565b828152866020848601011115612ab457600080fd5b612ac58360208301602087016122bd565b9695505050505050565b60208082526016908201527531b0b63632b91034b9903737ba10309036b4b73a32b960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761069a5761069a612aff565b600082612b4957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612bc457612bc4612aff565b5060010190565b601f82111561082057600081815260208120601f850160051c81016020861015612bf25750805b601f850160051c820191505b8181101561165757828155600101612bfe565b81516001600160401b03811115612c2a57612c2a612375565b612c3e81612c38845461297c565b84612bcb565b602080601f831160018114612c735760008415612c5b5750858301515b600019600386901b1c1916600185901b178555611657565b600085815260208120601f198616915b82811015612ca257888601518255948401946001909101908401612c83565b5085821015612cc05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b8082018082111561069a5761069a612aff565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000612e0e604083018561267d565b8281036020840152612e20818561267d565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612e63908301846122e1565b979650505050505050565b600060208284031215612e8057600080fd5b81516122298161228a565b600060033d1115612ea45760046000803e5060005160e01c5b90565b600060443d1015612eb55790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612ee457505050505090565b8285019150815181811115612efc5750505050505090565b843d8701016020828501011115612f165750505050505090565b612f256020828601018761238b565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090612fa49083018661267d565b8281036060840152612fb6818661267d565b90508281036080840152612fca81856122e1565b98975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161300e8160178501602088016122bd565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161303f8160288401602088016122bd565b01602801949350505050565b60008161305a5761305a612aff565b50600019019056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a264697066735822122019c0b18ef100650b1f2738ab33f62cd14f267e607878385c7e55c12caa1433ae64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000007c0d783424fe9f7e5a6e82fb5ea5544cc99ad557000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f6e66742e7261696e692e696f2f6170692f63617264732e706870000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f697066732f516d63465378736d484b534637714c6970696f38527545394d68363162503255355664446735347a435637573567000000000000