UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

883 lines 68.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "CombinedContract", "sourceName": "contracts/CombinedContract.sol", "abi": [ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "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": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "activateSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" }, { "internalType": "address", "name": "_tokenContractAddress", "type": "address" } ], "name": "activateSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "customerAddress", "type": "address" } ], "name": "addAuthorizedReseller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "addOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "adminTransfer", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "tokenOwner", "type": "address" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "buyToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "upsellID", "type": "uint256" } ], "name": "checkUpsell", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clearOwners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deActivateSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "upsellID", "type": "uint256" } ], "name": "forfeitUpsell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "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": [], "name": "getTrustedForwarder", "outputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "customerAddress", "type": "address" } ], "name": "isAuthorizedReseller", "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": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "ownerRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "upsellID", "type": "uint256" } ], "name": "purchaseUpsell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "readOwnerRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "readRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "customerAddress", "type": "address" } ], "name": "removeAuthorizedReseller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newCreator", "type": "address" } ], "name": "setCreator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "setCurrencyToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_ownerPct", "type": "uint256" }, { "internalType": "uint256", "name": "_sellerPct", "type": "uint256" }, { "internalType": "uint256", "name": "_creatorPct", "type": "uint256" } ], "name": "setRoyaltySplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_forwarder", "type": "address" } ], "name": "setTrustedForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "HTMLstring", "type": "string" } ], "name": "writeOwnerRenderData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "HTMLstring", "type": "string" } ], "name": "writeRenderData", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60806040526011805460ff60a01b1916905560646012555f60138190556014553480156200002b575f80fd5b50604051620032e3380380620032e38339810160408190526200004e91620002ec565b818181815f6200005f8382620003de565b5060016200006e8282620003de565b5050506200008b62000085620000cf60201b60201c565b620000df565b506200009c905062000085620000cf565b620000a6620000cf565b600f80546001600160a01b0319166001600160a01b039290921691909117905550620004a69050565b5f620000da620001f9565b905090565b600854158062000115575062000115620000f8620000cf565b6001600160a01b03165f9081526007602052604090205460ff1690565b620001715760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526007602052604090205460ff16620001f6576001600160a01b0381165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b50565b5f60143610801590620002165750600a546001600160a01b031633145b1562000229575060131936013560601c90565b503390565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000252575f80fd5b81516001600160401b03808211156200026f576200026f6200022e565b604051601f8301601f19908116603f011681019082821181831017156200029a576200029a6200022e565b81604052838152602092508683858801011115620002b6575f80fd5b5f91505b83821015620002d95785820183015181830184015290820190620002ba565b5f93810190920192909252949350505050565b5f8060408385031215620002fe575f80fd5b82516001600160401b038082111562000315575f80fd5b620003238683870162000242565b9350602085015191508082111562000339575f80fd5b50620003488582860162000242565b9150509250929050565b600181811c908216806200036757607f821691505b6020821081036200038657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003d9575f81815260208120601f850160051c81016020861015620003b45750805b601f850160051c820191505b81811015620003d557828155600101620003c0565b5050505b505050565b81516001600160401b03811115620003fa57620003fa6200022e565b62000412816200040b845462000352565b846200038c565b602080601f83116001811462000448575f8415620004305750858301515b5f19600386901b1c1916600185901b178555620003d5565b5f85815260208120601f198616915b82811015620004785788860151825594840194600190910190840162000457565b50858210156200049657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b612e2f80620004b45f395ff3fe608060405260043610610275575f3560e01c80637065cb481161014a578063b7ceb5f8116100be578063d0def52111610078578063d0def52114610791578063d2d73963146107b0578063da742228146107e9578063e985e9c514610808578063f17e48ec1461084f578063f905434f1461086e575f80fd5b8063b7ceb5f8146106fb578063b88d4fde1461070f578063bb4a6a5d1461072e578063c1d5725f14610742578063c87b56dd14610755578063ce1b815f14610774575f80fd5b806395d89b411161010f57806395d89b41146106325780639eda8aae14610646578063a0e67e2b1461067d578063a22cb4651461069e578063a311e6b4146106bd578063abb9b577146106dc575f80fd5b80637065cb48146105895780637075c269146105a857806370a08231146105c75780637ab12bb6146105f457806390c3f38f14610613575f80fd5b806323b872dd116101ec57806342842e0e116101a657806342842e0e146104cb57806342966c68146104ea5780635260f5e614610509578063572b6c051461051d5780636352211e1461054b5780636df04a331461056a575f80fd5b806323b872dd1461040457806324c85a09146104235780632f54bf6e14610437578063331e29f41461046e5780633c695e391461048d5780633f516018146104ac575f80fd5b8063095ea7b31161023d578063095ea7b31461032d57806309f5b2261461034e5780630d8e6e2c1461036d578063173825d9146103b25780631a092541146103d15780631df5c02c146103e5575f80fd5b806301ffc9a714610279578063055789b7146102ad57806305cb3d7e146102ce57806306fdde03146102e2578063081812fc146102f6575b5f80fd5b348015610284575f80fd5b50610298610293366004612627565b61088d565b60405190151581526020015b60405180910390f35b3480156102b8575f80fd5b506102c16108b7565b6040516102a4919061268f565b3480156102d9575f80fd5b506102c1610943565b3480156102ed575f80fd5b506102c16109f2565b348015610301575f80fd5b506103156103103660046126a1565b610a00565b6040516001600160a01b0390911681526020016102a4565b348015610338575f80fd5b5061034c6103473660046126cc565b610a25565b005b348015610359575f80fd5b5061034c6103683660046126f6565b610b50565b348015610378575f80fd5b5060408051808201909152601881527f436f6d62696e6564436f6e7472616374207620302e302e32000000000000000060208201526102c1565b3480156103bd575f80fd5b5061034c6103cc3660046126f6565b610ba3565b3480156103dc575f80fd5b506102c1610c68565b3480156103f0575f80fd5b5061034c6103ff3660046126f6565b610c77565b34801561040f575f80fd5b5061034c61041e366004612711565b610cc8565b34801561042e575f80fd5b506102c1610d00565b348015610442575f80fd5b506102986104513660046126f6565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610479575f80fd5b5061034c6104883660046127f4565b610d0f565b348015610498575f80fd5b5061034c6104a73660046126f6565b610d50565b3480156104b7575f80fd5b5061034c6104c63660046126f6565b610da4565b3480156104d6575f80fd5b5061034c6104e5366004612711565b610df7565b3480156104f5575f80fd5b5061034c6105043660046126a1565b610e11565b348015610514575f80fd5b5061034c610e4b565b348015610528575f80fd5b506102986105373660046126f6565b600a546001600160a01b0391821691161490565b348015610556575f80fd5b506103156105653660046126a1565b610ef2565b348015610575575f80fd5b5061034c610584366004612826565b610f51565b348015610594575f80fd5b5061034c6105a33660046126f6565b610fa7565b3480156105b3575f80fd5b5061034c6105c23660046127f4565b61105c565b3480156105d2575f80fd5b506105e66105e13660046126f6565b611099565b6040519081526020016102a4565b3480156105ff575f80fd5b5061034c61060e3660046126a1565b61111d565b34801561061e575f80fd5b5061034c61062d3660046127f4565b611178565b34801561063d575f80fd5b506102c16111b5565b348015610651575f80fd5b506102986106603660046126f6565b6001600160a01b03165f908152600e602052604090205460ff1690565b348015610688575f80fd5b506106916111c4565b6040516102a49190612846565b3480156106a9575f80fd5b5061034c6106b836600461289f565b611223565b3480156106c8575f80fd5b5061034c6106d73660046128d6565b611235565b3480156106e7575f80fd5b5061034c6106f63660046128f9565b6112a2565b348015610706575f80fd5b5061034c6112e1565b34801561071a575f80fd5b5061034c610729366004612922565b611321565b348015610739575f80fd5b506102c1611360565b61034c610750366004612711565b61136d565b348015610760575f80fd5b506102c161076f3660046126a1565b611812565b34801561077f575f80fd5b50600a546001600160a01b0316610315565b34801561079c575f80fd5b506105e66107ab36600461299d565b61191c565b3480156107bb575f80fd5b506102986107ca366004612826565b5f91825260166020908152604080842092845291905290205460ff1690565b3480156107f4575f80fd5b5061034c6108033660046126f6565b611984565b348015610813575f80fd5b506102986108223660046129ea565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561085a575f80fd5b5061034c6108693660046126cc565b6119d3565b348015610879575f80fd5b5061034c610888366004612826565b611a26565b5f6001600160e01b03198216632483248360e11b14806108b157506108b182611a79565b92915050565b600d80546108c490612a16565b80601f01602080910402602001604051908101604052809291908181526020018280546108f090612a16565b801561093b5780601f106109125761010080835404028352916020019161093b565b820191905f5260205f20905b81548152906001019060200180831161091e57829003601f168201915b505050505081565b60605f6109516105e1611ac8565b11156109e557600d805461096490612a16565b80601f016020809104026020016040519081016040528092919081815260200182805461099090612a16565b80156109db5780601f106109b2576101008083540402835291602001916109db565b820191905f5260205f20905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b600c805461096490612a16565b60605f805461096490612a16565b5f610a0a82611ad6565b505f908152600460205260409020546001600160a01b031690565b5f610a2f82610ef2565b9050806001600160a01b0316836001600160a01b031603610aa15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610ab3611ac8565b6001600160a01b03161480610acf5750610acf81610822611ac8565b610b415760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a98565b610b4b8383611b34565b505050565b6008541580610b655750610b65610451611ac8565b610b815760405162461bcd60e51b8152600401610a9890612a4e565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6008541580610bb85750610bb8610451611ac8565b610bd45760405162461bcd60e51b8152600401610a9890612a4e565b6001600160a01b0381165f9081526007602052604090205460ff16610c3b5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610a98565b6001600160a01b0381165f908152600760205260409020805460ff19169055610c65600882611ba1565b50565b60606009805461096490612a16565b6008541580610c8c5750610c8c610451611ac8565b610ca85760405162461bcd60e51b8152600401610a9890612a4e565b6001600160a01b03165f908152600e60205260409020805460ff19169055565b610cd9610cd3611ac8565b82611ca0565b610cf55760405162461bcd60e51b8152600401610a9890612a90565b610b4b838383611d1c565b6060600d805461096490612a16565b6008541580610d245750610d24610451611ac8565b610d405760405162461bcd60e51b8152600401610a9890612a4e565b600d610d4c8282612b2a565b5050565b6008541580610d655750610d65610451611ac8565b610d815760405162461bcd60e51b8152600401610a9890612a4e565b6001600160a01b03165f908152600e60205260409020805460ff19166001179055565b6008541580610db95750610db9610451611ac8565b610dd55760405162461bcd60e51b8152600401610a9890612a4e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610b4b83838360405180602001604052805f815250611321565b6008541580610e265750610e26610451611ac8565b610e425760405162461bcd60e51b8152600401610a9890612a4e565b610c6581611e7e565b6008541580610e605750610e60610451611ac8565b610e7c5760405162461bcd60e51b8152600401610a9890612a4e565b5f5b600854811015610ee4575f60075f60088481548110610e9f57610e9f612be6565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610edc81612c0e565b915050610e7e565b50610ef060085f6125ac565b565b5f818152600260205260408120546001600160a01b0316806108b15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a98565b6008541580610f665750610f66610451611ac8565b610f825760405162461bcd60e51b8152600401610a9890612a4e565b5f9182526016602090815260408084209284529190529020805460ff19166001179055565b6008541580610fbc5750610fbc610451611ac8565b610fd85760405162461bcd60e51b8152600401610a9890612a4e565b6001600160a01b0381165f9081526007602052604090205460ff16610c65576001600160a01b03165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b60085415806110715750611071610451611ac8565b61108d5760405162461bcd60e51b8152600401610a9890612a4e565b600c610d4c8282612b2a565b5f6001600160a01b0382166111025760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a98565b506001600160a01b03165f9081526003602052604090205490565b60085415806111325750611132610451611ac8565b61114e5760405162461bcd60e51b8152600401610a9890612a4e565b601555601080546001600160a01b031916301790556011805460ff60a01b1916600160a01b179055565b600854158061118d575061118d610451611ac8565b6111a95760405162461bcd60e51b8152600401610a9890612a4e565b6009610d4c8282612b2a565b60606001805461096490612a16565b606060088054806020026020016040519081016040528092919081815260200182805480156109db57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111fc575050505050905090565b610d4c61122e611ac8565b8383611ebc565b600854158061124a575061124a610451611ac8565b6112665760405162461bcd60e51b8152600401610a9890612a4e565b601591909155601080546001600160a01b039092166001600160a01b03199092169190911790556011805460ff60a01b1916600160a01b179055565b60085415806112b757506112b7610451611ac8565b6112d35760405162461bcd60e51b8152600401610a9890612a4e565b601292909255601355601455565b60085415806112f657506112f6610451611ac8565b6113125760405162461bcd60e51b8152600401610a9890612a4e565b6011805460ff60a01b19169055565b61133261132c611ac8565b83611ca0565b61134e5760405162461bcd60e51b8152600401610a9890612a90565b61135a84848484611f89565b50505050565b600c80546108c490612a16565b601154600160a01b900460ff166113b95760405162461bcd60e51b815260206004820152601060248201526f53414c455f49535f494e41435449564560801b6044820152606401610a98565b6011545f9081906001600160a01b031661141b576015543410156114145760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610a98565b5034611430565b50506011546015546001600160a01b03909116905b6010546040516331a9108f60e11b8152600481018590526001600160a01b03918216918716908290636352211e90602401602060405180830381865afa15801561147c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a09190612c26565b6001600160a01b0316146114e55760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610a98565b5f6064601354846114f69190612c41565b6115009190612c58565b90505f6064601454856115139190612c41565b61151d9190612c58565b90505f8161152b8487612c77565b6115359190612c77565b905080156115ff576011546001600160a01b0316611586576040516001600160a01b038a169082156108fc029083905f818181858888f19350505050158015611580573d5f803e3d5ffd5b506115ff565b856001600160a01b03166323b872dd61159d611ac8565b8b846040518463ffffffff1660e01b81526004016115bd93929190612c8a565b6020604051808303815f875af11580156115d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fd9190612cae565b505b82156116c7576011546001600160a01b031661164e576040516001600160a01b0389169084156108fc029085905f818181858888f19350505050158015611648573d5f803e3d5ffd5b506116c7565b856001600160a01b03166323b872dd611665611ac8565b8a866040518463ffffffff1660e01b815260040161168593929190612c8a565b6020604051808303815f875af11580156116a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c59190612cae565b505b81156117a3576011546001600160a01b031661171a57600f546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015611714573d5f803e3d5ffd5b506117a3565b856001600160a01b03166323b872dd611731611ac8565b600f546040516001600160e01b031960e085901b16815261176192916001600160a01b0316908790600401612c8a565b6020604051808303815f875af115801561177d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a19190612cae565b505b836001600160a01b03166323b872dd8a6117bb611ac8565b8a6040518463ffffffff1660e01b81526004016117da93929190612c8a565b5f604051808303815f87803b1580156117f1575f80fd5b505af1158015611803573d5f803e3d5ffd5b50505050505050505050505050565b606061181d82611ad6565b5f828152600660205260408120805461183590612a16565b80601f016020809104026020016040519081016040528092919081815260200182805461186190612a16565b80156118ac5780601f10611883576101008083540402835291602001916118ac565b820191905f5260205f20905b81548152906001019060200180831161188f57829003601f168201915b505050505090505f6118c860408051602081019091525f815290565b905080515f036118d9575092915050565b81511561190b5780826040516020016118f3929190612cc9565b60405160208183030381529060405292505050919050565b61191484611fbc565b949350505050565b6008545f9015806119335750611933610451611ac8565b61194f5760405162461bcd60e51b8152600401610a9890612a4e565b61195d600b80546001019055565b5f611967600b5490565b9050611973848261202b565b61197d81846121b3565b9392505050565b60085415806119995750611999610451611ac8565b6119b55760405162461bcd60e51b8152600401610a9890612a4e565b600a80546001600160a01b0319166001600160a01b03831617905550565b60085415806119e857506119e8610451611ac8565b611a045760405162461bcd60e51b8152600401610a9890612a4e565b610d4c611a1082610ef2565b838360405180602001604052805f815250611f89565b6008541580611a3b5750611a3b610451611ac8565b611a575760405162461bcd60e51b8152600401610a9890612a4e565b5f9182526016602090815260408084209284529190529020805460ff19169055565b5f6001600160e01b031982166380ac58cd60e01b1480611aa957506001600160e01b03198216635b5e139f60e01b145b806108b157506301ffc9a760e01b6001600160e01b03198316146108b1565b5f611ad161227c565b905090565b5f818152600260205260409020546001600160a01b0316610c655760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a98565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b6882610ef2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5b8254811015610b4b57816001600160a01b0316838281548110611bc857611bc8612be6565b5f918252602090912001546001600160a01b031603611c8e5782548390611bf190600190612c77565b81548110611c0157611c01612be6565b905f5260205f20015f9054906101000a90046001600160a01b0316838281548110611c2e57611c2e612be6565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480611c6957611c69612cf7565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b80611c9881612c0e565b915050611ba3565b5f80611cab83610ef2565b9050806001600160a01b0316846001600160a01b03161480611cf157506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b806119145750836001600160a01b0316611d0a84610a00565b6001600160a01b031614949350505050565b826001600160a01b0316611d2f82610ef2565b6001600160a01b031614611d555760405162461bcd60e51b8152600401610a9890612d0b565b6001600160a01b038216611db75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a98565b826001600160a01b0316611dca82610ef2565b6001600160a01b031614611df05760405162461bcd60e51b8152600401610a9890612d0b565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611e87816122af565b5f8181526006602052604090208054611e9f90612a16565b159050610c65575f818152600660205260408120610c65916125c7565b816001600160a01b0316836001600160a01b031603611f1d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a98565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611f94848484611d1c565b611fa084848484612341565b61135a5760405162461bcd60e51b8152600401610a9890612d50565b6060611fc782611ad6565b5f611fdc60408051602081019091525f815290565b90505f815111611ffa5760405180602001604052805f81525061197d565b8061200484612445565b604051602001612015929190612cc9565b6040516020818303038152906040529392505050565b6001600160a01b0382166120815760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a98565b5f818152600260205260409020546001600160a01b0316156120e55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a98565b5f818152600260205260409020546001600160a01b0316156121495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a98565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f828152600260205260409020546001600160a01b031661222d5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a98565b5f8281526006602052604090206122448282612b2a565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f601436108015906122985750600a546001600160a01b031633145b156122aa575060131936013560601c90565b503390565b5f6122b982610ef2565b90506122c482610ef2565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f6001600160a01b0384163b1561243a57836001600160a01b031663150b7a02612369611ac8565b8786866040518563ffffffff1660e01b815260040161238b9493929190612da2565b6020604051808303815f875af19250505080156123c5575060408051601f3d908101601f191682019092526123c291810190612dde565b60015b612420573d8080156123f2576040519150601f19603f3d011682016040523d82523d5f602084013e6123f7565b606091505b5080515f036124185760405162461bcd60e51b8152600401610a9890612d50565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611914565b506001949350505050565b60605f612451836124d5565b60010190505f8167ffffffffffffffff8111156124705761247061274f565b6040519080825280601f01601f19166020018201604052801561249a576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846124a457509392505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106125135772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061253f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061255d57662386f26fc10000830492506010015b6305f5e1008310612575576305f5e100830492506008015b612710831061258957612710830492506004015b6064831061259b576064830492506002015b600a83106108b15760010192915050565b5080545f8255905f5260205f2090810190610c6591906125fa565b5080546125d390612a16565b5f825580601f106125e2575050565b601f0160209004905f5260205f2090810190610c6591905b5b8082111561260e575f81556001016125fb565b5090565b6001600160e01b031981168114610c65575f80fd5b5f60208284031215612637575f80fd5b813561197d81612612565b5f5b8381101561265c578181015183820152602001612644565b50505f910152565b5f815180845261267b816020860160208601612642565b601f01601f19169290920160200192915050565b602081525f61197d6020830184612664565b5f602082840312156126b1575f80fd5b5035919050565b6001600160a01b0381168114610c65575f80fd5b5f80604083850312156126dd575f80fd5b82356126e8816126b8565b946020939093013593505050565b5f60208284031215612706575f80fd5b813561197d816126b8565b5f805f60608486031215612723575f80fd5b833561272e816126b8565b9250602084013561273e816126b8565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff8084111561277d5761277d61274f565b604051601f8501601f19908116603f011681019082821181831017156127a5576127a561274f565b816040528093508581528686860111156127bd575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f8301126127e5575f80fd5b61197d83833560208501612763565b5f60208284031215612804575f80fd5b813567ffffffffffffffff81111561281a575f80fd5b611914848285016127d6565b5f8060408385031215612837575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b818110156128865783516001600160a01b031683529284019291840191600101612861565b50909695505050505050565b8015158114610c65575f80fd5b5f80604083850312156128b0575f80fd5b82356128bb816126b8565b915060208301356128cb81612892565b809150509250929050565b5f80604083850312156128e7575f80fd5b8235915060208301356128cb816126b8565b5f805f6060848603121561290b575f80fd5b505081359360208301359350604090920135919050565b5f805f8060808587031215612935575f80fd5b8435612940816126b8565b93506020850135612950816126b8565b925060408501359150606085013567ffffffffffffffff811115612972575f80fd5b8501601f81018713612982575f80fd5b61299187823560208401612763565b91505092959194509250565b5f80604083850312156129ae575f80fd5b82356129b9816126b8565b9150602083013567ffffffffffffffff8111156129d4575f80fd5b6129e0858286016127d6565b9150509250929050565b5f80604083850312156129fb575f80fd5b8235612a06816126b8565b915060208301356128cb816126b8565b600181811c90821680612a2a57607f821691505b602082108103612a4857634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b601f821115610b4b575f81815260208120601f850160051c81016020861015612b035750805b601f850160051c820191505b81811015612b2257828155600101612b0f565b505050505050565b815167ffffffffffffffff811115612b4457612b4461274f565b612b5881612b528454612a16565b84612add565b602080601f831160018114612b8b575f8415612b745750858301515b5f19600386901b1c1916600185901b178555612b22565b5f85815260208120601f198616915b82811015612bb957888601518255948401946001909101908401612b9a565b5085821015612bd657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201612c1f57612c1f612bfa565b5060010190565b5f60208284031215612c36575f80fd5b815161197d816126b8565b80820281158282048414176108b1576108b1612bfa565b5f82612c7257634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108b1576108b1612bfa565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215612cbe575f80fd5b815161197d81612892565b5f8351612cda818460208801612642565b835190830190612cee818360208801612642565b01949350505050565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612dd490830184612664565b9695505050505050565b5f60208284031215612dee575f80fd5b815161197d8161261256fea264697066735822122062ab915dec216464439bfdfd37a3c7860cc7898a7a4a2c7ed2d79e82bcf620ab64736f6c63430008140033", "deployedBytecode": "0x608060405260043610610275575f3560e01c80637065cb481161014a578063b7ceb5f8116100be578063d0def52111610078578063d0def52114610791578063d2d73963146107b0578063da742228146107e9578063e985e9c514610808578063f17e48ec1461084f578063f905434f1461086e575f80fd5b8063b7ceb5f8146106fb578063b88d4fde1461070f578063bb4a6a5d1461072e578063c1d5725f14610742578063c87b56dd14610755578063ce1b815f14610774575f80fd5b806395d89b411161010f57806395d89b41146106325780639eda8aae14610646578063a0e67e2b1461067d578063a22cb4651461069e578063a311e6b4146106bd578063abb9b577146106dc575f80fd5b80637065cb48146105895780637075c269146105a857806370a08231146105c75780637ab12bb6146105f457806390c3f38f14610613575f80fd5b806323b872dd116101ec57806342842e0e116101a657806342842e0e146104cb57806342966c68146104ea5780635260f5e614610509578063572b6c051461051d5780636352211e1461054b5780636df04a331461056a575f80fd5b806323b872dd1461040457806324c85a09146104235780632f54bf6e14610437578063331e29f41461046e5780633c695e391461048d5780633f516018146104ac575f80fd5b8063095ea7b31161023d578063095ea7b31461032d57806309f5b2261461034e5780630d8e6e2c1461036d578063173825d9146103b25780631a092541146103d15780631df5c02c146103e5575f80fd5b806301ffc9a714610279578063055789b7146102ad57806305cb3d7e146102ce57806306fdde03146102e2578063081812fc146102f6575b5f80fd5b348015610284575f80fd5b50610298610293366004612627565b61088d565b60405190151581526020015b60405180910390f35b3480156102b8575f80fd5b506102c16108b7565b6040516102a4919061268f565b3480156102d9575f80fd5b506102c1610943565b3480156102ed575f80fd5b506102c16109f2565b348015610301575f80fd5b506103156103103660046126a1565b610a00565b6040516001600160a01b0390911681526020016102a4565b348015610338575f80fd5b5061034c6103473660046126cc565b610a25565b005b348015610359575f80fd5b5061034c6103683660046126f6565b610b50565b348015610378575f80fd5b5060408051808201909152601881527f436f6d62696e6564436f6e7472616374207620302e302e32000000000000000060208201526102c1565b3480156103bd575f80fd5b5061034c6103cc3660046126f6565b610ba3565b3480156103dc575f80fd5b506102c1610c68565b3480156103f0575f80fd5b5061034c6103ff3660046126f6565b610c77565b34801561040f575f80fd5b5061034c61041e366004612711565b610cc8565b34801561042e575f80fd5b506102c1610d00565b348015610442575f80fd5b506102986104513660046126f6565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610479575f80fd5b5061034c6104883660046127f4565b610d0f565b348015610498575f80fd5b5061034c6104a73660046126f6565b610d50565b3480156104b7575f80fd5b5061034c6104c63660046126f6565b610da4565b3480156104d6575f80fd5b5061034c6104e5366004612711565b610df7565b3480156104f5575f80fd5b5061034c6105043660046126a1565b610e11565b348015610514575f80fd5b5061034c610e4b565b348015610528575f80fd5b506102986105373660046126f6565b600a546001600160a01b0391821691161490565b348015610556575f80fd5b506103156105653660046126a1565b610ef2565b348015610575575f80fd5b5061034c610584366004612826565b610f51565b348015610594575f80fd5b5061034c6105a33660046126f6565b610fa7565b3480156105b3575f80fd5b5061034c6105c23660046127f4565b61105c565b3480156105d2575f80fd5b506105e66105e13660046126f6565b611099565b6040519081526020016102a4565b3480156105ff575f80fd5b5061034c61060e3660046126a1565b61111d565b34801561061e575f80fd5b5061034c61062d3660046127f4565b611178565b34801561063d575f80fd5b506102c16111b5565b348015610651575f80fd5b506102986106603660046126f6565b6001600160a01b03165f908152600e602052604090205460ff1690565b348015610688575f80fd5b506106916111c4565b6040516102a49190612846565b3480156106a9575f80fd5b5061034c6106b836600461289f565b611223565b3480156106c8575f80fd5b5061034c6106d73660046128d6565b611235565b3480156106e7575f80fd5b5061034c6106f63660046128f9565b6112a2565b348015610706575f80fd5b5061034c6112e1565b34801561071a575f80fd5b5061034c610729366004612922565b611321565b348015610739575f80fd5b506102c1611360565b61034c610750366004612711565b61136d565b348015610760575f80fd5b506102c161076f3660046126a1565b611812565b34801561077f575f80fd5b50600a546001600160a01b0316610315565b34801561079c575f80fd5b506105e66107ab36600461299d565b61191c565b3480156107bb575f80fd5b506102986107ca366004612826565b5f91825260166020908152604080842092845291905290205460ff1690565b3480156107f4575f80fd5b5061034c6108033660046126f6565b611984565b348015610813575f80fd5b506102986108223660046129ea565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561085a575f80fd5b5061034c6108693660046126cc565b6119d3565b348015610879575f80fd5b5061034c610888366004612826565b611a26565b5f6001600160e01b03198216632483248360e11b14806108b157506108b182611a79565b92915050565b600d80546108c490612a16565b80601f01602080910402602001604051908101604052809291908181526020018280546108f090612a16565b801561093b5780601f106109125761010080835404028352916020019161093b565b820191905f5260205f20905b81548152906001019060200180831161091e57829003601f168201915b505050505081565b60605f6109516105e1611ac8565b11156109e557600d805461096490612a16565b80601f016020809104026020016040519081016040528092919081815260200182805461099090612a16565b80156109db5780601f106109b2576101008083540402835291602001916109db565b820191905f5260205f20905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b600c805461096490612a16565b60605f805461096490612a16565b5f610a0a82611ad6565b505f908152600460205260409020546001600160a01b031690565b5f610a2f82610ef2565b9050806001600160a01b0316836001600160a01b031603610aa15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610ab3611ac8565b6001600160a01b03161480610acf5750610acf81610822611ac8565b610b415760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c