UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

711 lines (710 loc) 48.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "LedgerContract", "sourceName": "contracts/LedgerContract.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "int256", "name": "amount", "type": "int256" }, { "indexed": true, "internalType": "uint256", "name": "eventId", "type": "uint256" } ], "name": "AddPoints", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "int256", "name": "amount", "type": "int256" }, { "indexed": true, "internalType": "uint256", "name": "eventId", "type": "uint256" } ], "name": "RedeemPoints", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "partnerAddress", "type": "address" } ], "name": "addAuthorizedPartner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" }, { "internalType": "uint256", "name": "eventId", "type": "uint256" } ], "internalType": "struct LedgerContract.AddPointsBatchItem[]", "name": "items", "type": "tuple[]" } ], "name": "addBatchPoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "addOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" }, { "internalType": "uint256", "name": "eventId", "type": "uint256" } ], "name": "addPoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "checkLifetimePoints", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "checkPoints", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clearOwners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "coinContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" } ], "name": "convertPointsToCoins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" } ], "name": "forfeitPoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getCoinTransferSourceAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDescription", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "getGroupManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOwners", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPartners", "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": [ { "internalType": "address", "name": "userAddr", "type": "address" } ], "name": "getUserGroup", "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": "partnerAddress", "type": "address" } ], "name": "isAuthorizedPartner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "address", "name": "partnerAddress", "type": "address" } ], "name": "isBlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "isOptOut", "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": "recipient", "type": "address" } ], "name": "isPartner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "isPartnerOrOwner", "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": "userAddress", "type": "address" } ], "name": "optOut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" }, { "internalType": "uint256", "name": "eventId", "type": "uint256" } ], "name": "redeemPoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "partnerAddress", "type": "address" } ], "name": "removeAuthorizedPartner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "removeOptOut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "retrieveLogs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "eventId", "type": "uint256" }, { "internalType": "int256", "name": "pointsAmount", "type": "int256" } ], "internalType": "struct LedgerContract.PointsLogItem[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "partnerAddress", "type": "address" }, { "internalType": "bool", "name": "isBlocked", "type": "bool" } ], "name": "setBlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "coinContractAddress", "type": "address" } ], "name": "setCoinContractAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAddr", "type": "address" } ], "name": "setCoinTransferSourceAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "address", "name": "manager", "type": "address" } ], "name": "setGroupManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_forwarder", "type": "address" } ], "name": "setTrustedForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddr", "type": "address" }, { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "setUserGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801562000010575f80fd5b50620000256200001f62000055565b6200008a565b6200002f62000055565b600580546001600160a01b0319166001600160a01b0392909216919091179055620001a1565b5f601436108015906200007257506003546001600160a01b031633145b1562000085575060131936013560601c90565b503390565b6001541580620000c05750620000c0620000a362000055565b6001600160a01b03165f9081526020819052604090205460ff1690565b6200011c5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff166200019e576001600160a01b0381165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790555b50565b611f8780620001af5f395ff3fe608060405234801561000f575f80fd5b5060043610610229575f3560e01c806386c58d3e1161012a578063ce1b815f116100b4578063e1e610e111610079578063e1e610e11461051b578063e9858e301461052e578063ea0f40fe14610559578063ee28f5011461056c578063f617d91d1461058c575f80fd5b8063ce1b815f146104a9578063d4610483146104ba578063d4f1205c146104cd578063da742228146104e0578063dc79b176146104f3575f80fd5b8063954a85b4116100fa578063954a85b414610440578063a0e67e2b14610468578063a99752c414610470578063ad102b8414610483578063c75305bc14610496575f80fd5b806386c58d3e146104125780638c0f9aac1461036e57806390c3f38f1461042557806391825dca14610438575f80fd5b806350ee7b69116101b6578063668ff4271161017b578063668ff427146103995780637065cb48146103ac578063717fbc96146103bf57806372dd52e3146103d257806373e29b0d146103fd575f80fd5b806350ee7b691461031e5780635260f5e614610331578063572b6c05146103395780635d0fd6c11461035b5780635e9b45e11461036e575f80fd5b806327a920dc116101fc57806327a920dc146102a157806329dd5120146102b45780632f54bf6e146102c757806334e0ee2e146102ea578063356baf0c1461030b575f80fd5b80630d8e6e2c1461022d57806315650cac14610271578063173825d9146102865780631a09254114610299575b5f80fd5b60408051808201909152601681527504c6564676572436f6e7472616374207620312e302e360541b60208201525b60405161026891906117e9565b60405180910390f35b61028461027f36600461184f565b61059f565b005b61028461029436600461187f565b610736565b61025b6107e9565b6102846102af36600461187f565b610879565b6102846102c236600461190d565b6108c2565b6102da6102d536600461187f565b6109c4565b6040519015158152602001610268565b6102fd6102f836600461187f565b6109e1565b604051908152602001610268565b6102846103193660046119e2565b610a26565b61028461032c366004611a17565b610a72565b610284610b72565b6102da61034736600461187f565b6003546001600160a01b0391821691161490565b6102da61036936600461187f565b610c18565b6102da61037c36600461187f565b6001600160a01b03165f908152600a602052604090205460ff1690565b6102846103a736600461184f565b610c4a565b6102846103ba36600461187f565b610e6c565b6102846103cd366004611a4c565b610f0c565b6004546103e5906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b610405610f6a565b6040516102689190611a76565b6102da610420366004611ac2565b610fc9565b610284610433366004611aea565b61100d565b6103e561104a565b6103e561044e366004611b79565b5f908152600860205260409020546001600160a01b031690565b610405611082565b61028461047e36600461187f565b6110e0565b6102846104913660046119e2565b611176565b6102846104a436600461187f565b611261565b6003546001600160a01b03166103e5565b6102846104c836600461187f565b6112bc565b6102846104db36600461187f565b611306565b6102846104ee36600461187f565b61134f565b6102fd61050136600461187f565b6001600160a01b03165f9081526007602052604090205490565b6102846105293660046119e2565b61139e565b6102da61053c36600461187f565b6001600160a01b03165f9081526006602052604090205460ff1690565b6102fd61056736600461187f565b611543565b61057f61057a36600461187f565b611588565b6040516102689190611b90565b61028461059a36600461187f565b61163d565b6105aa610369611684565b6105cf5760405162461bcd60e51b81526004016105c690611be8565b60405180910390fd5b6001600160a01b0383165f9081526006602052604090205460ff16156106075760405162461bcd60e51b81526004016105c690611c35565b5f82136106265760405162461bcd60e51b81526004016105c690611c6c565b61063283610420611684565b1561064f5760405162461bcd60e51b81526004016105c690611cae565b6001600160a01b0383165f908152600c602052604081208054849290610676908490611cf9565b90915550506001600160a01b0383165f908152600d6020526040812080548492906106a2908490611cf9565b90915550506001600160a01b0383165f818152600e60209081526040808320815160608101835242815280840187815281840189815283546001818101865594885295872092516003909602909201948555519184019190915551600290920191909155518392859290917f67839115ecfc56e55723f233dbb40ca67429025c19e220e84a0de77357dce0fc9190a4505050565b600154158061074b575061074b6102d5611684565b6107675760405162461bcd60e51b81526004016105c690611d20565b610770816109c4565b6107bc5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016105c6565b6001600160a01b0381165f908152602081905260409020805460ff191690556107e66001826116b7565b50565b6060600280546107f890611d62565b80601f016020809104026020016040519081016040528092919081815260200182805461082490611d62565b801561086f5780601f106108465761010080835404028352916020019161086f565b820191905f5260205f20905b81548152906001019060200180831161085257829003601f168201915b5050505050905090565b610884610369611684565b6108a05760405162461bcd60e51b81526004016105c690611be8565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6108cd610369611684565b6108e95760405162461bcd60e51b81526004016105c690611be8565b5f5b81518110156109c05760065f83838151811061090957610909611d9a565b602090810291909101810151516001600160a01b031682528101919091526040015f205460ff161561094d5760405162461bcd60e51b81526004016105c690611c35565b6109ae82828151811061096257610962611d9a565b60200260200101515f015183838151811061097f5761097f611d9a565b60200260200101516020015184848151811061099d5761099d611d9a565b60200260200101516040015161059f565b806109b881611dae565b9150506108eb565b5050565b6001600160a01b03165f9081526020819052604090205460ff1690565b5f6109ee82610420611684565b15610a0b5760405162461bcd60e51b81526004016105c690611cae565b506001600160a01b03165f908152600c602052604090205490565b6001541580610a3b5750610a3b6102d5611684565b610a575760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b039091165f90815260076020526040902055565b610a7b826109c4565b15610ac85760405162461bcd60e51b815260206004820152601860248201527f4f776e65722063616e206e6f7420626520626c6f636b6564000000000000000060448201526064016105c6565b816001600160a01b0316610ada611684565b6001600160a01b031603610b275760405162461bcd60e51b815260206004820152601460248201527321b0b7303a10313637b1b5903cb7bab939b2b63360611b60448201526064016105c6565b8060095f610b33611684565b6001600160a01b03908116825260208083019390935260409182015f90812096909116815294909152909220805460ff19169215159290921790915550565b6001541580610b875750610b876102d5611684565b610ba35760405162461bcd60e51b81526004016105c690611d20565b5f5b600154811015610c0a575f805f60018481548110610bc557610bc5611d9a565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610c0281611dae565b915050610ba5565b50610c1660015f6117bb565b565b5f610c22826109c4565b80610c4457506001600160a01b0382165f908152600a602052604090205460ff165b92915050565b6001600160a01b0383165f9081526006602052604090205460ff1615610c825760405162461bcd60e51b81526004016105c690611c35565b610c8a611684565b6001600160a01b0316836001600160a01b03161480610caf5750610caf610369611684565b610cfb5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e2072656465656d206f6e6c7920796f757220706f696e74730060448201526064016105c6565b610d0783610420611684565b15610d245760405162461bcd60e51b81526004016105c690611cae565b5f8213610d435760405162461bcd60e51b81526004016105c690611c6c565b6001600160a01b0383165f908152600c6020526040902054821315610d9e5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c6565b6001600160a01b0383165f908152600c602052604081208054849290610dc5908490611dc6565b90915550506001600160a01b0383165f908152600e60209081526040918290208251606081018452428152918201849052918101610e0285611dec565b90528154600181810184555f938452602080852084516003909402019283558301519082015560409182015160029091015551829184916001600160a01b038716917fee3b1ba81f87423fecc5e13b69a00e5be4d7e9970fb24498122085bbef9b973891a4505050565b6001541580610e815750610e816102d5611684565b610e9d5760405162461bcd60e51b81526004016105c690611d20565b610ea6816109c4565b6107e6576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b6001541580610f215750610f216102d5611684565b610f3d5760405162461bcd60e51b81526004016105c690611d20565b5f9182526008602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6060600b80548060200260200160405190810160405280929190818152602001828054801561086f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fa2575050505050905090565b5f610fd3826109c4565b15610fdf57505f610c44565b506001600160a01b039182165f90815260096020908152604080832093909416825291909152205460ff1690565b600154158061102257506110226102d5611684565b61103e5760405162461bcd60e51b81526004016105c690611d20565b60026109c08282611e53565b5f611056610369611684565b6110725760405162461bcd60e51b81526004016105c690611be8565b506005546001600160a01b031690565b6060600180548060200260200160405190810160405280929190818152602001828054801561086f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610fa2575050505050905090565b60015415806110f557506110f56102d5611684565b6111115760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0382165f9081526006602052604090205460ff16156111ae5760405162461bcd60e51b81526004016105c690611c35565b5f81136111cd5760405162461bcd60e51b81526004016105c690611c6c565b6111d982826001610c4a565b600480546005546040516323b872dd60e01b81526001600160a01b0391821693810193909352848116602484015260448301849052169081906323b872dd906064016020604051808303815f875af1158015611237573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125b9190611f0f565b50505050565b600154158061127657506112766102d5611684565b6112925760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b0381165f908152600a60205260409020805460ff191690556107e6600b826116b7565b6112c7610369611684565b6112e35760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b611311610369611684565b61132d5760405162461bcd60e51b81526004016105c690611be8565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600154158061136457506113646102d5611684565b6113805760405162461bcd60e51b81526004016105c690611d20565b600380546001600160a01b0319166001600160a01b03831617905550565b6113a9610369611684565b6113c55760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b0382165f9081526006602052604090205460ff16156113fd5760405162461bcd60e51b81526004016105c690611c35565b5f811361141c5760405162461bcd60e51b81526004016105c690611c6c565b6001600160a01b0382165f908152600c60205260409020548113156114775760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c6565b6001600160a01b0382165f908152600c60205260408120805483929061149e908490611dc6565b90915550506001600160a01b0382165f908152600d6020526040812080548392906114ca908490611dc6565b90915550506001600160a01b0382165f908152600e6020908152604091829020825160608101845242815260029281019290925291810161150a84611dec565b90528154600181810184555f93845260209384902083516003909302019182559282015192810192909255604001516002909101555050565b5f61155082610420611684565b1561156d5760405162461bcd60e51b81526004016105c690611cae565b506001600160a01b03165f908152600d602052604090205490565b606061159682610420611684565b156115b35760405162461bcd60e51b81526004016105c690611cae565b6001600160a01b0382165f908152600e6020908152604080832080548251818502810185019093528083529193909284015b82821015611632578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015481525050815260200190600101906115e5565b505050509050919050565b611648610369611684565b6116645760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f601436108015906116a057506003546001600160a01b031633145b156116b2575060131936013560601c90565b503390565b5f5b82548110156117b657816001600160a01b03168382815481106116de576116de611d9a565b5f918252602090912001546001600160a01b0316036117a4578254839061170790600190611f2a565b8154811061171757611717611d9a565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061174457611744611d9a565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061177f5761177f611f3d565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806117ae81611dae565b9150506116b9565b505050565b5080545f8255905f5260205f20908101906107e691905b808211156117e5575f81556001016117d2565b5090565b5f6020808352835180828501525f5b81811015611814578581018301518582016040015282016117f8565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461184a575f80fd5b919050565b5f805f60608486031215611861575f80fd5b61186a84611834565b95602085013595506040909401359392505050565b5f6020828403121561188f575f80fd5b61189882611834565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156118d6576118d661189f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119055761190561189f565b604052919050565b5f602080838503121561191e575f80fd5b823567ffffffffffffffff80821115611935575f80fd5b818501915085601f830112611948575f80fd5b81358181111561195a5761195a61189f565b611968848260051b016118dc565b81815284810192506060918202840185019188831115611986575f80fd5b938501935b828510156119d65780858a0312156119a2575f8081fd5b6119aa6118b3565b6119b386611834565b81528587013587820152604080870135908201528452938401939285019261198b565b50979650505050505050565b5f80604083850312156119f3575f80fd5b6119fc83611834565b946020939093013593505050565b80151581146107e6575f80fd5b5f8060408385031215611a28575f80fd5b611a3183611834565b91506020830135611a4181611a0a565b809150509250929050565b5f8060408385031215611a5d575f80fd5b82359150611a6d60208401611834565b90509250929050565b602080825282518282018190525f9190848201906040850190845b81811015611ab65783516001600160a01b031683529284019291840191600101611a91565b50909695505050505050565b5f8060408385031215611ad3575f80fd5b611adc83611834565b9150611a6d60208401611834565b5f6020808385031215611afb575f80fd5b823567ffffffffffffffff80821115611b12575f80fd5b818501915085601f830112611b25575f80fd5b813581811115611b3757611b3761189f565b611b49601f8201601f191685016118dc565b91508082528684828501011115611b5e575f80fd5b80848401858401375f90820190930192909252509392505050565b5f60208284031215611b89575f80fd5b5035919050565b602080825282518282018190525f919060409081850190868401855b82811015611bdb5781518051855286810151878601528501518585015260609093019290850190600101611bac565b5091979650505050505050565b6020808252602d908201527f4f6e6c79206f776e6572206f7220706172746e65722063616e2063616c6c207460408201526c3434b990333ab731ba34b7b71760991b606082015260800190565b6020808252601a908201527f546172676574206164647265737320776173206f7074206f7574000000000000604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252601e908201527f53656e646572206164647265737320626c6f636b656420627920757365720000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715611d1857611d18611ce5565b505092915050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c90821680611d7657607f821691505b602082108103611d9457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611dbf57611dbf611ce5565b5060010190565b8181035f831280158383131683831282161715611de557611de5611ce5565b5092915050565b5f600160ff1b8201611e0057611e00611ce5565b505f0390565b601f8211156117b6575f81815260208120601f850160051c81016020861015611e2c5750805b601f850160051c820191505b81811015611e4b57828155600101611e38565b505050505050565b815167ffffffffffffffff811115611e6d57611e6d61189f565b611e8181611e7b8454611d62565b84611e06565b602080601f831160018114611eb4575f8415611e9d5750858301515b5f19600386901b1c1916600185901b178555611e4b565b5f85815260208120601f198616915b82811015611ee257888601518255948401946001909101908401611ec3565b5085821015611eff57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215611f1f575f80fd5b815161189881611a0a565b81810381811115610c4457610c44611ce5565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212206a5f608e2b85acd2d292fc399499a210788b9ecdae8138ea1b7a3639cf8a416564736f6c63430008140033", "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610229575f3560e01c806386c58d3e1161012a578063ce1b815f116100b4578063e1e610e111610079578063e1e610e11461051b578063e9858e301461052e578063ea0f40fe14610559578063ee28f5011461056c578063f617d91d1461058c575f80fd5b8063ce1b815f146104a9578063d4610483146104ba578063d4f1205c146104cd578063da742228146104e0578063dc79b176146104f3575f80fd5b8063954a85b4116100fa578063954a85b414610440578063a0e67e2b14610468578063a99752c414610470578063ad102b8414610483578063c75305bc14610496575f80fd5b806386c58d3e146104125780638c0f9aac1461036e57806390c3f38f1461042557806391825dca14610438575f80fd5b806350ee7b69116101b6578063668ff4271161017b578063668ff427146103995780637065cb48146103ac578063717fbc96146103bf57806372dd52e3146103d257806373e29b0d146103fd575f80fd5b806350ee7b691461031e5780635260f5e614610331578063572b6c05146103395780635d0fd6c11461035b5780635e9b45e11461036e575f80fd5b806327a920dc116101fc57806327a920dc146102a157806329dd5120146102b45780632f54bf6e146102c757806334e0ee2e146102ea578063356baf0c1461030b575f80fd5b80630d8e6e2c1461022d57806315650cac14610271578063173825d9146102865780631a09254114610299575b5f80fd5b60408051808201909152601681527504c6564676572436f6e7472616374207620312e302e360541b60208201525b60405161026891906117e9565b60405180910390f35b61028461027f36600461184f565b61059f565b005b61028461029436600461187f565b610736565b61025b6107e9565b6102846102af36600461187f565b610879565b6102846102c236600461190d565b6108c2565b6102da6102d536600461187f565b6109c4565b6040519015158152602001610268565b6102fd6102f836600461187f565b6109e1565b604051908152602001610268565b6102846103193660046119e2565b610a26565b61028461032c366004611a17565b610a72565b610284610b72565b6102da61034736600461187f565b6003546001600160a01b0391821691161490565b6102da61036936600461187f565b610c18565b6102da61037c36600461187f565b6001600160a01b03165f908152600a602052604090205460ff1690565b6102846103a736600461184f565b610c4a565b6102846103ba36600461187f565b610e6c565b6102846103cd366004611a4c565b610f0c565b6004546103e5906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b610405610f6a565b6040516102689190611a76565b6102da610420366004611ac2565b610fc9565b610284610433366004611aea565b61100d565b6103e561104a565b6103e561044e366004611b79565b5f908152600860205260409020546001600160a01b031690565b610405611082565b61028461047e36600461187f565b6110e0565b6102846104913660046119e2565b611176565b6102846104a436600461187f565b611261565b6003546001600160a01b03166103e5565b6102846104c836600461187f565b6112bc565b6102846104db36600461187f565b611306565b6102846104ee36600461187f565b61134f565b6102fd61050136600461187f565b6001600160a01b03165f9081526007602052604090205490565b6102846105293660046119e2565b61139e565b6102da61053c36600461187f565b6001600160a01b03165f9081526006602052604090205460ff1690565b6102fd61056736600461187f565b611543565b61057f61057a36600461187f565b611588565b6040516102689190611b90565b61028461059a36600461187f565b61163d565b6105aa610369611684565b6105cf5760405162461bcd60e51b81526004016105c690611be8565b60405180910390fd5b6001600160a01b0383165f9081526006602052604090205460ff16156106075760405162461bcd60e51b81526004016105c690611c35565b5f82136106265760405162461bcd60e51b81526004016105c690611c6c565b61063283610420611684565b1561064f5760405162461bcd60e51b81526004016105c690611cae565b6001600160a01b0383165f908152600c602052604081208054849290610676908490611cf9565b90915550506001600160a01b0383165f908152600d6020526040812080548492906106a2908490611cf9565b90915550506001600160a01b0383165f818152600e60209081526040808320815160608101835242815280840187815281840189815283546001818101865594885295872092516003909602909201948555519184019190915551600290920191909155518392859290917f67839115ecfc56e55723f233dbb40ca67429025c19e220e84a0de77357dce0fc9190a4505050565b600154158061074b575061074b6102d5611684565b6107675760405162461bcd60e51b81526004016105c690611d20565b610770816109c4565b6107bc5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016105c6565b6001600160a01b0381165f908152602081905260409020805460ff191690556107e66001826116b7565b50565b6060600280546107f890611d62565b80601f016020809104026020016040519081016040528092919081815260200182805461082490611d62565b801561086f5780601f106108465761010080835404028352916020019161086f565b820191905f5260205f20905b81548152906001019060200180831161085257829003601f168201915b5050505050905090565b610884610369611684565b6108a05760405162461bcd60e51b81526004016105c690611be8565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6108cd610369611684565b6108e95760405162461bcd60e51b81526004016105c690611be8565b5f5b81518110156109c05760065f83838151811061090957610909611d9a565b602090810291909101810151516001600160a01b031682528101919091526040015f205460ff161561094d5760405162461bcd60e51b81526004016105c690611c35565b6109ae82828151811061096257610962611d9a565b60200260200101515f015183838151811061097f5761097f611d9a565b60200260200101516020015184848151811061099d5761099d611d9a565b60200260200101516040015161059f565b806109b881611dae565b9150506108eb565b5050565b6001600160a01b03165f9081526020819052604090205460ff1690565b5f6109ee82610420611684565b15610a0b5760405162461bcd60e51b81526004016105c690611cae565b506001600160a01b03165f908152600c602052604090205490565b6001541580610a3b5750610a3b6102d5611684565b610a575760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b039091165f90815260076020526040902055565b610a7b826109c4565b15610ac85760405162461bcd60e51b815260206004820152601860248201527f4f776e65722063616e206e6f7420626520626c6f636b6564000000000000000060448201526064016105c6565b816001600160a01b0316610ada611684565b6001600160a01b031603610b275760405162461bcd60e51b815260206004820152601460248201527321b0b7303a10313637b1b5903cb7bab939b2b63360611b60448201526064016105c6565b8060095f610b33611684565b6001600160a01b03908116825260208083019390935260409182015f90812096909116815294909152909220805460ff19169215159290921790915550565b6001541580610b875750610b876102d5611684565b610ba35760405162461bcd60e51b81526004016105c690611d20565b5f5b600154811015610c0a575f805f60018481548110610bc557610bc5611d9a565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610c0281611dae565b915050610ba5565b50610c1660015f6117bb565b565b5f610c22826109c4565b80610c4457506001600160a01b0382165f908152600a602052604090205460ff165b92915050565b6001600160a01b0383165f9081526006602052604090205460ff1615610c825760405162461bcd60e51b81526004016105c690611c35565b610c8a611684565b6001600160a01b0316836001600160a01b03161480610caf5750610caf610369611684565b610cfb5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e2072656465656d206f6e6c7920796f757220706f696e74730060448201526064016105c6565b610d0783610420611684565b15610d245760405162461bcd60e51b81526004016105c690611cae565b5f8213610d435760405162461bcd60e51b81526004016105c690611c6c565b6001600160a01b0383165f908152600c6020526040902054821315610d9e5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c6565b6001600160a01b0383165f908152600c602052604081208054849290610dc5908490611dc6565b90915550506001600160a01b0383165f908152600e60209081526040918290208251606081018452428152918201849052918101610e0285611dec565b90528154600181810184555f938452602080852084516003909402019283558301519082015560409182015160029091015551829184916001600160a01b038716917fee3b1ba81f87423fecc5e13b69a00e5be4d7e9970fb24498122085bbef9b973891a4505050565b6001541580610e815750610e816102d5611684565b610e9d5760405162461bcd60e51b81526004016105c690611d20565b610ea6816109c4565b6107e6576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b6001541580610f215750610f216102d5611684565b610f3d5760405162461bcd60e51b81526004016105c690611d20565b5f9182526008602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6060600b80548060200260200160405190810160405280929190818152602001828054801561086f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fa2575050505050905090565b5f610fd3826109c4565b15610fdf57505f610c44565b506001600160a01b039182165f90815260096020908152604080832093909416825291909152205460ff1690565b600154158061102257506110226102d5611684565b61103e5760405162461bcd60e51b81526004016105c690611d20565b60026109c08282611e53565b5f611056610369611684565b6110725760405162461bcd60e51b81526004016105c690611be8565b506005546001600160a01b031690565b6060600180548060200260200160405190810160405280929190818152602001828054801561086f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610fa2575050505050905090565b60015415806110f557506110f56102d5611684565b6111115760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0382165f9081526006602052604090205460ff16156111ae5760405162461bcd60e51b81526004016105c690611c35565b5f81136111cd5760405162461bcd60e51b81526004016105c690611c6c565b6111d982826001610c4a565b600480546005546040516323b872dd60e01b81526001600160a01b0391821693810193909352848116602484015260448301849052169081906323b872dd906064016020604051808303815f875af1158015611237573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125b9190611f0f565b50505050565b600154158061127657506112766102d5611684565b6112925760405162461bcd60e51b81526004016105c690611d20565b6001600160a01b0381165f908152600a60205260409020805460ff191690556107e6600b826116b7565b6112c7610369611684565b6112e35760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b611311610369611684565b61132d5760405162461bcd60e51b81526004016105c690611be8565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600154158061136457506113646102d5611684565b6113805760405162461bcd60e51b81526004016105c690611d20565b600380546001600160a01b0319166001600160a01b03831617905550565b6113a9610369611684565b6113c55760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b0382165f9081526006602052604090205460ff16156113fd5760405162461bcd60e51b81526004016105c690611c35565b5f811361141c5760405162461bcd60e51b81526004016105c690611c6c565b6001600160a01b0382165f908152600c60205260409020548113156114775760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c6565b6001600160a01b0382165f908152600c60205260408120805483929061149e908490611dc6565b90915550506001600160a01b0382165f908152600d6020526040812080548392906114ca908490611dc6565b90915550506001600160a01b0382165f908152600e6020908152604091829020825160608101845242815260029281019290925291810161150a84611dec565b90528154600181810184555f93845260209384902083516003909302019182559282015192810192909255604001516002909101555050565b5f61155082610420611684565b1561156d5760405162461bcd60e51b81526004016105c690611cae565b506001600160a01b03165f908152600d602052604090205490565b606061159682610420611684565b156115b35760405162461bcd60e51b81526004016105c690611cae565b6001600160a01b0382165f908152600e6020908152604080832080548251818502810185019093528083529193909284015b82821015611632578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015481525050815260200190600101906115e5565b505050509050919050565b611648610369611684565b6116645760405162461bcd60e51b81526004016105c690611be8565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f601436108015906116a057506003546001600160a01b031633145b156116b2575060131936013560601c90565b503390565b5f5b82548110156117b657816001600160a01b03168382815481106116de576116de611d9a565b5f918252602090912001546001600160a01b0316036117a4578254839061170790600190611f2a565b8154811061171757611717611d9a565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061174457611744611d9a565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061177f5761177f611f3d565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806117ae81611dae565b9150506116b9565b505050565b5080545f8255905f5260205f20908101906107e691905b808211156117e5575f81556001016117d2565b5090565b5f6020808352835180828501525f5b81811015611814578581018301518582016040015282016117f8565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461184a575f80fd5b919050565b5f805f60608486031215611861575f80fd5b61186a84611834565b95602085013595506040909401359392505050565b5f6020828403121561188f575f80fd5b61189882611834565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156118d6576118d661189f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119055761190561189f565b604052919050565b5f602080838503121561191e575f80fd5b823567ffffffffffffffff80821115611935575f80fd5b818501915085601f830112611948575f80fd5b81358181111561195a5761195a61189f565b611968848260051b016118dc565b81815284810192506060918202840185019188831115611986575f80fd5b938501935b828510156119d65780858a0312156119a2575f8081fd5b6119aa6118b3565b6119b386611834565b81528587013587820152604080870135908201528452938401939285019261198b565b50979650505050505050565b5f80604083850312156119f3575f80fd5b6119fc83611834565b946020939093013593505050565b80151581146107e6575f80fd5b5f8060408385031215611a28575f80fd5b611a3183611834565b91506020830135611a4181611a0a565b809150509250929050565b5f8060408385031215611a5d575f80fd5b82359150611a6d60208401611834565b90509250929050565b602080825282518282018190525f9190848201906040850190845b81811015611ab65783516001600160a01b031683529284019291840191600101611a91565b50909695505050505050565b5f8060408385031215611ad3575f80fd5b611adc83611834565b9150611a6d60208401611834565b5f6020808385031215611afb575f80fd5b823567ffffffffffffffff80821115611b12575f80fd5b818501915085601f830112611b25575f80fd5b813581811115611b3757611b3761189f565b611b49601f8201601f191685016118dc565b91508082528684828501011115611b5e575f80fd5b80848401858401375f90820190930192909252509392505050565b5f60208284031215611b89575f80fd5b5035919050565b602080825282518282018190525f919060409081850190868401855b82811015611bdb5781518051855286810151878601528501518585015260609093019290850190600101611bac565b5091979650505050505050565b6020808252602d908201527f4f6e6c79206f776e6572206f7220706172746e65722063616e2063616c6c207460408201526c3434b990333ab731ba34b7b71760991b606082015260800190565b6020808252601a908201527f546172676574206164647265737320776173206f7074206f7574000000000000604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252601e908201527f53656e646572206164647265737320626c6f636b656420627920757365720000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715611d1857611d18611ce5565b505092915050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c90821680611d7657607f821691505b602082108103611d9457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611dbf57611dbf611ce5565b5060010190565b8181035f831280158383131683831282161715611de557611de5611ce5565b5092915050565b5f600160ff1b8201611e0057611e00611ce5565b505f0390565b601f8211156117b6575f81815260208120601f850160051c81016020861015611e2c5750805b601f850160051c820191505b81811015611e4b57828155600101611e38565b505050505050565b815167ffffffffffffffff811115611e6d57611e6d61189f565b611e8181611e7b8454611d62565b84611e06565b602080601f831160018114611eb4575f8415611e9d5750858301515b5f19600386901b1c1916600185901b178555611e4b565b5f85815260208120601f198616915b82811015611ee257888601518255948401946001909101908401611ec3565b5085821015611eff57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215611f1f575f80fd5b815161189881611a0a565b81810381811115610c4457610c44611ce5565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212206a5f608e2b85acd2d292fc399499a210788b9ecdae8138ea1b7a3639cf8a416564736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }