UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

793 lines 60.9 kB
{ "_format": "hh-sol-artifact-1", "contractName": "GamecockClubMembershipContract", "sourceName": "contracts/GamecockClubMembershipContract.sol", "abi": [ { "inputs": [], "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": "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": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "addAvailableCurrencyTokenContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "addOwner", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "buyWithEther", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "currencyTokenContract", "type": "address" } ], "name": "buyWithToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "buyWithToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearOwners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAvailableCurrencyTokenContractsList", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBeneficiaryAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultCurrencyTokenContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDescription", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOwners", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceEther", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceFiat", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVersion", "outputs": [ { "internalType": "string", "name": "version", "type": "string" } ], "stateMutability": "pure", "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": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "isAvailableCurrencyTokenContract", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "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" } ], "name": "ownerTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "removeAvailableCurrencyTokenContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "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": "address payable", "name": "addr", "type": "address" } ], "name": "setBeneficiaryAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenContract", "type": "address" } ], "name": "setDefaultCurrencyTokenContractAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceEther", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceFiat", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801562000010575f80fd5b5060408051602081019091525f81526200002a816200003c565b5062000036336200004e565b620002b8565b60026200004a8282620001f0565b5050565b60045415806200006c5750335f9081526003602052604090205460ff165b620000c85760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526003602052604090205460ff166200014d576001600160a01b0381165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790555b50565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200017957607f821691505b6020821081036200019857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001eb575f81815260208120601f850160051c81016020861015620001c65750805b601f850160051c820191505b81811015620001e757828155600101620001d2565b5050505b505050565b81516001600160401b038111156200020c576200020c62000150565b62000224816200021d845462000164565b846200019e565b602080601f8311600181146200025a575f8415620002425750858301515b5f19600386901b1c1916600185901b178555620001e7565b5f85815260208120601f198616915b828110156200028a5788860151825594840194600190910190840162000269565b5085821015620002a857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6129ad80620002c65f395ff3fe608060405260043610610206575f3560e01c8063724e5c1711610113578063b33a599f1161009d578063d36223f11161006d578063d36223f114610614578063e1461f1214610633578063e985e9c51461065e578063ec6be06e146106a5578063f242432a146106c4575f80fd5b8063b33a599f14610582578063b68de974146105a1578063d114c9dc146105d8578063d1eff895146105f7575f80fd5b806388d0f86a116100e357806388d0f86a146104e657806390c3f38f14610505578063a0e67e2b14610524578063a22cb46514610538578063adfadad314610557575f80fd5b8063724e5c1714610474578063782f08ae146104935780638003e27f146104b257806380dc439e146104d3575f80fd5b80631abe7cb3116101945780633de4fdc8116101645780633de4fdc8146103d75780634e1273f4146103f65780635260f5e614610422578063578680be146104365780637065cb4814610455575f80fd5b80631abe7cb31461035b5780632eb2c2d61461037a5780632f54bf6e146103995780633a932dba146103b8575f80fd5b8063156e29f6116101da578063156e29f6146102ab57806316bef596146102cc578063173825d9146102fd578063177ed0f31461031c5780631a09254114610347575f80fd5b8062fdd58e1461020a57806301ffc9a71461023c5780630d8e6e2c1461026b5780630e89341c1461028c575b5f80fd5b348015610215575f80fd5b50610229610224366004611dca565b6106e3565b6040519081526020015b60405180910390f35b348015610247575f80fd5b5061025b610256366004611e09565b61077a565b6040519015158152602001610233565b348015610276575f80fd5b5061027f6107c9565b6040516102339190611e6e565b348015610297575f80fd5b5061027f6102a6366004611e80565b6107e9565b3480156102b6575f80fd5b506102ca6102c5366004611e97565b610888565b005b3480156102d7575f80fd5b506009546001600160a01b03165b6040516001600160a01b039091168152602001610233565b348015610308575f80fd5b506102ca610317366004611ec9565b6108e3565b348015610327575f80fd5b50610229610336366004611e80565b5f9081526008602052604090205490565b348015610352575f80fd5b5061027f610994565b348015610366575f80fd5b506102ca610375366004611ee4565b610a24565b348015610385575f80fd5b506102ca610394366004612046565b610a64565b3480156103a4575f80fd5b5061025b6103b3366004611ec9565b610ab0565b3480156103c3575f80fd5b506102ca6103d2366004611ec9565b610acd565b3480156103e2575f80fd5b506102ca6103f1366004611ec9565b610b1c565b348015610401575f80fd5b506104156104103660046120ed565b610bb0565b60405161023391906121ed565b34801561042d575f80fd5b506102ca610cd8565b348015610441575f80fd5b506102ca610450366004611ee4565b610d7d565b348015610460575f80fd5b506102ca61046f366004611ec9565b610dbd565b34801561047f575f80fd5b506102ca61048e3660046121ff565b610e5e565b34801561049e575f80fd5b506102ca6104ad366004612246565b610e9b565b3480156104bd575f80fd5b506104c6610ee1565b6040516102339190612280565b6102ca6104e13660046122cc565b610f40565b3480156104f1575f80fd5b506102ca610500366004611ee4565b610fd1565b348015610510575f80fd5b506102ca61051f366004612302565b611011565b34801561052f575f80fd5b506104c6611050565b348015610543575f80fd5b506102ca610552366004612349565b6110ae565b348015610562575f80fd5b50610229610571366004611e80565b5f9081526007602052604090205490565b34801561058d575f80fd5b506102ca61059c366004611ec9565b6110b9565b3480156105ac575f80fd5b5061025b6105bb366004611ec9565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105e3575f80fd5b506102ca6105f2366004612380565b611179565b348015610602575f80fd5b50600c546001600160a01b03166102e5565b34801561061f575f80fd5b506102ca61062e3660046122cc565b6111d6565b34801561063e575f80fd5b5061022961064d366004611e80565b5f9081526006602052604090205490565b348015610669575f80fd5b5061025b6106783660046123c3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b3480156106b0575f80fd5b506102ca6106bf366004611ec9565b611231565b3480156106cf575f80fd5b506102ca6106de3660046123ef565b611282565b5f6001600160a01b0383166107525760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b14806107aa57506001600160e01b031982166303a24d0760e21b145b8061077457506301ffc9a760e01b6001600160e01b0319831614610774565b606060405180606001604052806026815260200161295260269139905090565b5f818152600d6020526040902080546060919061080590612453565b80601f016020809104026020016040519081016040528092919081815260200182805461083190612453565b801561087c5780601f106108535761010080835404028352916020019161087c565b820191905f5260205f20905b81548152906001019060200180831161085f57829003601f168201915b50505050509050919050565b600454158061089b575061089b33610ab0565b6108b75760405162461bcd60e51b81526004016107499061248b565b6108de8383836040518060400160405280600381526020016203078360ec1b8152506112c7565b505050565b60045415806108f657506108f633610ab0565b6109125760405162461bcd60e51b81526004016107499061248b565b61091b81610ab0565b6109675760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610749565b6001600160a01b0381165f908152600360205260409020805460ff191690556109916004826113d6565b50565b6060600580546109a390612453565b80601f01602080910402602001604051908101604052809291908181526020018280546109cf90612453565b8015610a1a5780601f106109f157610100808354040283529160200191610a1a565b820191905f5260205f20905b8154815290600101906020018083116109fd57829003601f168201915b5050505050905090565b6004541580610a375750610a3733610ab0565b610a535760405162461bcd60e51b81526004016107499061248b565b5f9182526006602052604090912055565b6001600160a01b038516331480610a805750610a808533610678565b610a9c5760405162461bcd60e51b8152600401610749906124cd565b610aa985858585856114d5565b5050505050565b6001600160a01b03165f9081526003602052604090205460ff1690565b6004541580610ae05750610ae033610ab0565b610afc5760405162461bcd60e51b81526004016107499061248b565b600980546001600160a01b0319166001600160a01b038316179055610991815b6004541580610b2f5750610b2f33610ab0565b610b4b5760405162461bcd60e51b81526004016107499061248b565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60608151835114610c155760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610749565b5f835167ffffffffffffffff811115610c3057610c30611f04565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b5090505f5b8451811015610cd057610ca3858281518110610c7c57610c7c61251b565b6020026020010151858381518110610c9657610c9661251b565b60200260200101516106e3565b828281518110610cb557610cb561251b565b6020908102919091010152610cc981612543565b9050610c5e565b509392505050565b6004541580610ceb5750610ceb33610ab0565b610d075760405162461bcd60e51b81526004016107499061248b565b5f5b600454811015610d6f575f60035f60048481548110610d2a57610d2a61251b565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610d6781612543565b915050610d09565b50610d7b60045f611d88565b565b6004541580610d905750610d9033610ab0565b610dac5760405162461bcd60e51b81526004016107499061248b565b5f9182526008602052604090912055565b6004541580610dd05750610dd033610ab0565b610dec5760405162461bcd60e51b81526004016107499061248b565b610df581610ab0565b610991576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610749565b6004541580610eae5750610eae33610ab0565b610eca5760405162461bcd60e51b81526004016107499061248b565b5f828152600d602052604090206108de82826125a0565b6060600b805480602002602001604051908101604052809291908181526020018280548015610a1a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f19575050505050905090565b600c548290610f58906001600160a01b0316856106e3565b1015610f915760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610749565b610f9b83836116ad565b600c5460408051808201909152600381526203078360ec1b60208201526108de916001600160a01b031690839086908690611796565b6004541580610fe45750610fe433610ab0565b6110005760405162461bcd60e51b81526004016107499061248b565b5f9182526007602052604090912055565b6004541580611024575061102433610ab0565b6110405760405162461bcd60e51b81526004016107499061248b565b600561104c82826125a0565b5050565b60606004805480602002602001604051908101604052809291908181526020018280548015610a1a57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610f19575050505050905090565b61104c3383836118bc565b60045415806110cc57506110cc33610ab0565b6110e85760405162461bcd60e51b81526004016107499061248b565b6001600160a01b0381165f908152600a602052604090205460ff1661114f5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610749565b6001600160a01b0381165f908152600a60205260409020805460ff19169055610991600b826113d6565b600454158061118c575061118c33610ab0565b6111a85760405162461bcd60e51b81526004016107499061248b565b6111d0848484846040518060400160405280600381526020016203078360ec1b815250611796565b50505050565b600c5482906111ee906001600160a01b0316856106e3565b10156112275760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610749565b610f9b838361199b565b6004541580611244575061124433610ab0565b6112605760405162461bcd60e51b81526004016107499061248b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03851633148061129e575061129e8533610678565b6112ba5760405162461bcd60e51b8152600401610749906124cd565b610aa98585858585611796565b6001600160a01b0384166113275760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610749565b335f611332856119b4565b90505f61133e856119b4565b90505f868152602081815260408083206001600160a01b038b1684529091528120805487929061136f90849061265c565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113cd835f898989896119fd565b50505050505050565b5f5b82548110156108de57816001600160a01b03168382815481106113fd576113fd61251b565b5f918252602090912001546001600160a01b0316036114c357825483906114269060019061266f565b815481106114365761143661251b565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106114635761146361251b565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061149e5761149e612682565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806114cd81612543565b9150506113d8565b81518351146115375760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610749565b6001600160a01b03841661155d5760405162461bcd60e51b815260040161074990612696565b335f5b845181101561163f575f85828151811061157c5761157c61251b565b602002602001015190505f8583815181106115995761159961251b565b6020908102919091018101515f84815280835260408082206001600160a01b038e1683529093529190912054909150818110156115e85760405162461bcd60e51b8152600401610749906126db565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061162490849061265c565b925050819055505050508061163890612543565b9050611560565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161168f929190612725565b60405180910390a46116a5818787878787611b57565b505050505050565b5f82815260076020526040812054116116d85760405162461bcd60e51b815260040161074990612752565b600c546001600160a01b03166117005760405162461bcd60e51b815260040161074990612752565b5f82815260076020526040812054611719908390612779565b9050803410156117605760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610749565b600c546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156111d0573d5f803e3d5ffd5b6001600160a01b0384166117bc5760405162461bcd60e51b815260040161074990612696565b335f6117c7856119b4565b90505f6117d3856119b4565b90505f868152602081815260408083206001600160a01b038c168452909152902054858110156118155760405162461bcd60e51b8152600401610749906126db565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061185190849061265c565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118b1848a8a8a8a8a6119fd565b505050505050505050565b816001600160a01b0316836001600160a01b03160361192f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610749565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60095461104c90839083906001600160a01b0316611c11565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106119ec576119ec61251b565b602090810291909101015292915050565b6001600160a01b0384163b156116a55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a419089908990889088908890600401612790565b6020604051808303815f875af1925050508015611a7b575060408051601f3d908101601f19168201909252611a78918101906127d4565b60015b611b2757611a876127ef565b806308c379a003611ac05750611a9b612808565b80611aa65750611ac2565b8060405162461bcd60e51b81526004016107499190611e6e565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610749565b6001600160e01b0319811663f23a6e6160e01b146113cd5760405162461bcd60e51b815260040161074990612891565b6001600160a01b0384163b156116a55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611b9b90899089908890889088906004016128d9565b6020604051808303815f875af1925050508015611bd5575060408051601f3d908101601f19168201909252611bd2918101906127d4565b60015b611be157611a876127ef565b6001600160e01b0319811663bc197c8160e01b146113cd5760405162461bcd60e51b815260040161074990612891565b6001600160a01b0381165f908152600a602052604090205460ff16611c785760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f52544544006044820152606401610749565b5f8381526008602052604081205411611ca35760405162461bcd60e51b815260040161074990612752565b600c546001600160a01b0316611ccb5760405162461bcd60e51b815260040161074990612752565b6001600160a01b038116611cf15760405162461bcd60e51b815260040161074990612752565b5f83815260086020526040812054611d099084612779565b600c546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018390529192508391908216906323b872dd906064016020604051808303815f875af1158015611d64573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a59190612936565b5080545f8255905f5260205f209081019061099191905b80821115611db2575f8155600101611d9f565b5090565b6001600160a01b0381168114610991575f80fd5b5f8060408385031215611ddb575f80fd5b8235611de681611db6565b946020939093013593505050565b6001600160e01b031981168114610991575f80fd5b5f60208284031215611e19575f80fd5b8135611e2481611df4565b9392505050565b5f81518084525f5b81811015611e4f57602081850181015186830182015201611e33565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f611e246020830184611e2b565b5f60208284031215611e90575f80fd5b5035919050565b5f805f60608486031215611ea9575f80fd5b8335611eb481611db6565b95602085013595506040909401359392505050565b5f60208284031215611ed9575f80fd5b8135611e2481611db6565b5f8060408385031215611ef5575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715611f3e57611f3e611f04565b6040525050565b5f67ffffffffffffffff821115611f5e57611f5e611f04565b5060051b60200190565b5f82601f830112611f77575f80fd5b81356020611f8482611f45565b604051611f918282611f18565b83815260059390931b8501820192828101915086841115611fb0575f80fd5b8286015b84811015611fcb5780358352918301918301611fb4565b509695505050505050565b5f82601f830112611fe5575f80fd5b813567ffffffffffffffff811115611fff57611fff611f04565b604051612016601f8301601f191660200182611f18565b81815284602083860101111561202a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a0868803121561205a575f80fd5b853561206581611db6565b9450602086013561207581611db6565b9350604086013567ffffffffffffffff80821115612091575f80fd5b61209d89838a01611f68565b945060608801359150808211156120b2575f80fd5b6120be89838a01611f68565b935060808801359150808211156120d3575f80fd5b506120e088828901611fd6565b9150509295509295909350565b5f80604083850312156120fe575f80fd5b823567ffffffffffffffff80821115612115575f80fd5b818501915085601f830112612128575f80fd5b8135602061213582611f45565b6040516121428282611f18565b83815260059390931b8501820192828101915089841115612161575f80fd5b948201945b8386101561218857853561217981611db6565b82529482019490820190612166565b9650508601359250508082111561219d575f80fd5b506121aa85828601611f68565b9150509250929050565b5f8151808452602080850194508084015f5b838110156121e2578151875295820195908201906001016121c6565b509495945050505050565b602081525f611e2460208301846121b4565b5f805f8060808587031215612212575f80fd5b8435935060208501359250604085013561222b81611db6565b9150606085013561223b81611db6565b939692955090935050565b5f8060408385031215612257575f80fd5b82359150602083013567ffffffffffffffff811115612274575f80fd5b6121aa85828601611fd6565b602080825282518282018190525f9190848201906040850190845b818110156122c05783516001600160a01b03168352928401929184019160010161229b565b50909695505050505050565b5f805f606084860312156122de575f80fd5b833592506020840135915060408401356122f781611db6565b809150509250925092565b5f60208284031215612312575f80fd5b813567ffffffffffffffff811115612328575f80fd5b61233484828501611fd6565b949350505050565b8015158114610991575f80fd5b5f806040838503121561235a575f80fd5b823561236581611db6565b915060208301356123758161233c565b809150509250929050565b5f805f8060808587031215612393575f80fd5b843561239e81611db6565b935060208501356123ae81611db6565b93969395505050506040820135916060013590565b5f80604083850312156123d4575f80fd5b82356123df81611db6565b9150602083013561237581611db6565b5f805f805f60a08688031215612403575f80fd5b853561240e81611db6565b9450602086013561241e81611db6565b93506040860135925060608601359150608086013567ffffffffffffffff811115612447575f80fd5b6120e088828901611fd6565b600181811c9082168061246757607f821691505b60208210810361248557634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016125545761255461252f565b5060010190565b601f8211156108de575f81815260208120601f850160051c810160208610156125815750805b601f850160051c820191505b818110156116a55782815560010161258d565b815167ffffffffffffffff8111156125ba576125ba611f04565b6125ce816125c88454612453565b8461255b565b602080601f831160018114612601575f84156125ea5750858301515b5f19600386901b1c1916600185901b1785556116a5565b5f85815260208120601f198616915b8281101561262f57888601518255948401946001909101908401612610565b508582101561264c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156107745761077461252f565b818103818111156107745761077461252f565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081525f61273760408301856121b4565b828103602084015261274981856121b4565b95945050505050565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b80820281158282048414176107745761077461252f565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906127c990830184611e2b565b979650505050505050565b5f602082840312156127e4575f80fd5b8151611e2481611df4565b5f60033d11156128055760045f803e505f5160e01c5b90565b5f60443d10156128155790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561284557505050505090565b828501915081518181111561285d5750505050505090565b843d87010160208285010111156128775750505050505090565b61288660208286010187611f18565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f90612904908301866121b4565b828103606084015261291681866121b4565b9050828103608084015261292a8185611e2b565b98975050505050505050565b5f60208284031215612946575f80fd5b8151611e248161233c56fe47616d65636f636b436c75624d656d62657273686970436f6e7472616374207620302e302e31a26469706673582212209c2662931f6e473a40572314a3e3de724865b3597a666386b7843bd404cea8b564736f6c63430008140033", "deployedBytecode": "0x608060405260043610610206575f3560e01c8063724e5c1711610113578063b33a599f1161009d578063d36223f11161006d578063d36223f114610614578063e1461f1214610633578063e985e9c51461065e578063ec6be06e146106a5578063f242432a146106c4575f80fd5b8063b33a599f14610582578063b68de974146105a1578063d114c9dc146105d8578063d1eff895146105f7575f80fd5b806388d0f86a116100e357806388d0f86a146104e657806390c3f38f14610505578063a0e67e2b14610524578063a22cb46514610538578063adfadad314610557575f80fd5b8063724e5c1714610474578063782f08ae146104935780638003e27f146104b257806380dc439e146104d3575f80fd5b80631abe7cb3116101945780633de4fdc8116101645780633de4fdc8146103d75780634e1273f4146103f65780635260f5e614610422578063578680be146104365780637065cb4814610455575f80fd5b80631abe7cb31461035b5780632eb2c2d61461037a5780632f54bf6e146103995780633a932dba146103b8575f80fd5b8063156e29f6116101da578063156e29f6146102ab57806316bef596146102cc578063173825d9146102fd578063177ed0f31461031c5780631a09254114610347575f80fd5b8062fdd58e1461020a57806301ffc9a71461023c5780630d8e6e2c1461026b5780630e89341c1461028c575b5f80fd5b348015610215575f80fd5b50610229610224366004611dca565b6106e3565b6040519081526020015b60405180910390f35b348015610247575f80fd5b5061025b610256366004611e09565b61077a565b6040519015158152602001610233565b348015610276575f80fd5b5061027f6107c9565b6040516102339190611e6e565b348015610297575f80fd5b5061027f6102a6366004611e80565b6107e9565b3480156102b6575f80fd5b506102ca6102c5366004611e97565b610888565b005b3480156102d7575f80fd5b506009546001600160a01b03165b6040516001600160a01b039091168152602001610233565b348015610308575f80fd5b506102ca610317366004611ec9565b6108e3565b348015610327575f80fd5b50610229610336366004611e80565b5f9081526008602052604090205490565b348015610352575f80fd5b5061027f610994565b348015610366575f80fd5b506102ca610375366004611ee4565b610a24565b348015610385575f80fd5b506102ca610394366004612046565b610a64565b3480156103a4575f80fd5b5061025b6103b3366004611ec9565b610ab0565b3480156103c3575f80fd5b506102ca6103d2366004611ec9565b610acd565b3480156103e2575f80fd5b506102ca6103f1366004611ec9565b610b1c565b348015610401575f80fd5b506104156104103660046120ed565b610bb0565b60405161023391906121ed565b34801561042d575f80fd5b506102ca610cd8565b348015610441575f80fd5b506102ca610450366004611ee4565b610d7d565b348015610460575f80fd5b506102ca61046f366004611ec9565b610dbd565b34801561047f575f80fd5b506102ca61048e3660046121ff565b610e5e565b34801561049e575f80fd5b506102ca6104ad366004612246565b610e9b565b3480156104bd575f80fd5b506104c6610ee1565b6040516102339190612280565b6102ca6104e13660046122cc565b610f40565b3480156104f1575f80fd5b506102ca610500366004611ee4565b610fd1565b348015610510575f80fd5b506102ca61051f366004612302565b611011565b34801561052f575f80fd5b506104c6611050565b348015610543575f80fd5b506102ca610552366004612349565b6110ae565b348015610562575f80fd5b50610229610571366004611e80565b5f9081526007602052604090205490565b34801561058d575f80fd5b506102ca61059c366004611ec9565b6110b9565b3480156105ac575f80fd5b5061025b6105bb366004611ec9565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105e3575f80fd5b506102ca6105f2366004612380565b611179565b348015610602575f80fd5b50600c546001600160a01b03166102e5565b34801561061f575f80fd5b506102ca61062e3660046122cc565b6111d6565b34801561063e575f80fd5b5061022961064d366004611e80565b5f9081526006602052604090205490565b348015610669575f80fd5b5061025b6106783660046123c3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b3480156106b0575f80fd5b506102ca6106bf366004611ec9565b611231565b3480156106cf575f80fd5b506102ca6106de3660046123ef565b611282565b5f6001600160a01b0383166107525760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b14806107aa57506001600160e01b031982166303a24d0760e21b145b8061077457506301ffc9a760e01b6001600160e01b0319831614610774565b606060405180606001604052806026815260200161295260269139905090565b5f818152600d6020526040902080546060919061080590612453565b80601f016020809104026020016040519081016040528092919081815260200182805461083190612453565b801561087c5780601f106108535761010080835404028352916020019161087c565b820191905f5260205f20905b81548152906001019060200180831161085f57829003601f168201915b50505050509050919050565b600454158061089b575061089b33610ab0565b6108b75760405162461bcd60e51b81526004016107499061248b565b6108de8383836040518060400160405280600381526020016203078360ec1b8152506112c7565b505050565b60045415806108f657506108f633610ab0565b6109125760405162461bcd60e51b81526004016107499061248b565b61091b81610ab0565b6109675760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610749565b6001600160a01b0381165f908152600360205260409020805460ff191690556109916004826113d6565b50565b6060600580546109a390612453565b80601f01602080910402602001604051908101604052809291908181526020018280546109cf90612453565b8015610a1a5780601f106109f157610100808354040283529160200191610a1a565b820191905f5260205f20905b8154815290600101906020018083116109fd57829003601f168201915b5050505050905090565b6004541580610a375750610a3733610ab0565b610a535760405162461bcd60e51b81526004016107499061248b565b5f9182526006602052604090912055565b6001600160a01b038516331480610a805750610a808533610678565b610a9c5760405162461bcd60e51b8152600401610749906124cd565b610aa985858585856114d5565b5050505050565b6001600160a01b03165f9081526003602052604090205460ff1690565b6004541580610ae05750610ae033610ab0565b610afc5760405162461bcd60e51b81526004016107499061248b565b600980546001600160a01b0319166001600160a01b038316179055610991815b6004541580610b2f5750610b2f33610ab0565b610b4b5760405162461bcd60e51b81526004016107499061248b565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60608151835114610c155760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610749565b5f835167ffffffffffffffff811115610c3057610c30611f04565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b5090505f5b8451811015610cd057610ca3858281518110610c7c57610c7c61251b565b6020026020010151858381518110610c9657610c9661251b565b60200260200101516106e3565b828281518110610cb557610cb561251b565b6020908102919091010152610cc981612543565b9050610c5e565b509392505050565b6004541580610ceb5750610ceb33610ab0565b610d075760405162461bcd60e51b81526004016107499061248b565b5f5b600454811015610d6f575f60035f60048481548110610d2a57610d2a61251b565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610d6781612543565b915050610d09565b50610d7b60045f611d88565b565b6004541580610d905750610d9033610ab0565b610dac5760405162461bcd60e51b81526004016107499061248b565b5f9182526008602052604090912055565b6004541580610dd05750610dd033610ab0565b610dec5760405162461bcd60e51b81526004016107499061248b565b610df581610ab0565b610991576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610749565b6004541580610eae5750610eae33610ab0565b610eca5760405162461bcd60e51b81526004016107499061248b565b5f828152600d602052604090206108de82826125a0565b6060600b805480602002602001604051908101604052809291908181526020018280548015610a1a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f19575050505050905090565b600c548290610f58906001600160a01b0316856106e3565b1015610f915760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610749565b610f9b83836116ad565b600c5460408051808201909152600381526203078360ec1b60208201526108de916001600160a01b031690839086908690611796565b6004541580610fe45750610fe433610ab0565b6110005760405162461bcd60e51b81526004016107499061248b565b5f9182526007602052604090912055565b6004541580611024575061102433610ab0565b6110405760405162461bcd60e51b81526004016107499061248b565b600561104c82826125a0565b5050565b60606004805480602002602001604051908101604052809291908181526020018280548015610a1a57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610f19575050505050905090565b61104c3383836118bc565b60045415806110cc57506110cc33610ab0565b6110e85760405162461bcd60e51b81526004016107499061248b565b6001600160a01b0381165f908152600a602052604090205460ff1661114f5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610749565b6001600160a01b0381165f908152600a60205260409020805460ff19169055610991600b826113d6565b600454158061118c575061118c33610ab0565b6111a85760405162461bcd60e51b81526004016107499061248b565b6111d0848484846040518060400160405280600381526020016203078360ec1b815250611796565b50505050565b600c5482906111ee906001600160a01b0316856106e3565b10156112275760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610749565b610f9b838361199b565b6004541580611244575061124433610ab0565b6112605760405162461bcd60e51b81526004016107499061248b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03851633148061129e575061129e8533610678565b6112ba5760405162461bcd60e51b8152600401610749906124cd565b610aa98585858585611796565b6001600160a01b0384166113275760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610749565b335f611332856119b4565b90505f61133e856119b4565b90505f868152602081815260408083206001600160a01b038b1684529091528120805487929061136f90849061265c565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113cd835f898989896119fd565b50505050505050565b5f5b82548110156108de57816001600160a01b03168382815481106113fd576113fd61251b565b5f918252602090912001546001600160a01b0316036114c357825483906114269060019061266f565b815481106114365761143661251b565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106114635761146361251b565b905f5260205f20015f6101000a8154816