@gooddollar/goodprotocol
Version:
GoodDollar Protocol
650 lines • 57.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "InvitesV2",
"sourceName": "contracts/invite/InvitesV2.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
}
],
"name": "InviteeJoined",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bountyPaid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "inviterLevel",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "earnedLevel",
"type": "bool"
}
],
"name": "InviterBounty",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "active",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "bountyFor",
"outputs": [
{
"internalType": "uint256",
"name": "bounty",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "canCollectBountyFor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "codeToUser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectBounties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "dao",
"outputs": [
{
"internalType": "contract Controller",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "end",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getIdentity",
"outputs": [
{
"internalType": "contract IIdentityV2",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingBounties",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "goodDollar",
"outputs": [
{
"internalType": "contract cERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract INameService",
"name": "_ns",
"type": "address"
},
{
"internalType": "uint256",
"name": "_level0Bounty",
"type": "uint256"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_myCode",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_inviterCode",
"type": "bytes32"
}
],
"name": "join",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "levelExpirationEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "levels",
"outputs": [
{
"internalType": "uint256",
"name": "toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "daysToComplete",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nameService",
"outputs": [
{
"internalType": "contract INameService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nativeToken",
"outputs": [
{
"internalType": "contract IGoodDollar",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_active",
"type": "bool"
}
],
"name": "setActive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_code",
"type": "bytes32"
}
],
"name": "setCampaignCode",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_lvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_daysToComplete",
"type": "uint256"
}
],
"name": "setLevel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isEnabled",
"type": "bool"
}
],
"name": "setLevelExpirationEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stats",
"outputs": [
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalBountiesPaid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalInvited",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "updateAvatar",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "users",
"outputs": [
{
"internalType": "address",
"name": "invitedBy",
"type": "address"
},
{
"internalType": "bytes32",
"name": "inviteCode",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "bountyPaid",
"type": "bool"
},
{
"internalType": "uint256",
"name": "level",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "levelStarted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalEarned",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "joinedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bountyAtJoin",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612ab061004c600039600081816107ca0152818161080a015281816109eb01528181610a2b0152610aa70152612ab06000f3fe6080604052600436106101685760003560e01c806302fb0c5e1461016d578063119e5bf3146101a35780631b3c90a8146101d057806321132aad146101e75780633659cfe61461020757806336afc6fa146102275780633e6326fc1461023c57806341155d5e1461025c5780634162169f1461028a5780634f1ef286146102aa57806352d1902d146102bd57806354fd4d50146102d25780635aef7de6146103045780635b419a65146103245780636d619ef8146103445780638da5cb5b14610364578063a1df6fd314610384578063a87430ba1461039e578063acec338a14610466578063af6346b014610486578063b2596a671461049b578063b6567cd5146104f2578063b9fb2d1814610512578063ba6f568014610532578063c350a1b514610568578063d80528ae14610588578063e1758bd8146105a7578063e951a3aa146105bc578063e9881a5e146105e9578063efbe1c1c14610609578063f14b86491461061e575b600080fd5b34801561017957600080fd5b50609e5461018e90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101af57600080fd5b50609e546101c3906001600160a01b031681565b60405161019a91906123ba565b3480156101dc57600080fd5b506101e561063e565b005b3480156101f357600080fd5b506101e56102023660046123dc565b610765565b34801561021357600080fd5b506101e561022236600461240e565b6107c0565b34801561023357600080fd5b506101c3610888565b34801561024857600080fd5b506067546101c3906001600160a01b031681565b34801561026857600080fd5b5061027c61027736600461240e565b610914565b60405190815260200161019a565b34801561029657600080fd5b506065546101c3906001600160a01b031681565b6101e56102b8366004612441565b6109e1565b3480156102c957600080fd5b5061027c610a9a565b3480156102de57600080fd5b506040805180820182526003815262322e3360e81b6020820152905161019a9190612528565b34801561031057600080fd5b506066546101c3906001600160a01b031681565b34801561033057600080fd5b506101e561033f36600461255b565b610b48565b34801561035057600080fd5b5061018e61035f36600461240e565b610e79565b34801561037057600080fd5b50609d546101c3906001600160a01b031681565b34801561039057600080fd5b5060a75461018e9060ff1681565b3480156103aa57600080fd5b506104126103b936600461240e565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161019a565b34801561047257600080fd5b506101e56104813660046123dc565b610ffc565b34801561049257600080fd5b506101e5611059565b3480156104a757600080fd5b506104d76104b636600461257d565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161019a565b3480156104fe57600080fd5b5061027c61050d36600461240e565b61125c565b34801561051e57600080fd5b506101e561052d366004612596565b6112ee565b34801561053e57600080fd5b506101c361054d36600461257d565b609a602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101e56105833660046125c8565b61134d565b34801561059457600080fd5b50609f5460a05460a1546104d792919083565b3480156105b357600080fd5b506101c361146b565b3480156105c857600080fd5b506105dc6105d736600461240e565b61149a565b60405161019a919061260a565b3480156105f557600080fd5b506105dc61060436600461240e565b611685565b34801561061557600080fd5b506101e56116fe565b34801561062a57600080fd5b506101e561063936600461257d565b61188c565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190612657565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190612657565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061078857506066546001600160a01b031633145b6107ad5760405162461bcd60e51b81526004016107a490612674565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108085760405162461bcd60e51b81526004016107a4906126c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083a6118f0565b6001600160a01b0316146108605760405162461bcd60e51b81526004016107a4906126fa565b6108698161190c565b604080516000808252602082019092526108859183919061194b565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190612657565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561097e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610960575b505050505090506000805b82518110156109d9576109b48382815181106109a7576109a7612734565b6020026020010151610e79565b156109c757816109c381612760565b9250505b806109d181612760565b915050610989565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a295760405162461bcd60e51b81526004016107a4906126c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5b6118f0565b6001600160a01b031614610a815760405162461bcd60e51b81526004016107a4906126fa565b610a8a8261190c565b610a968282600161194b565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107a4565b50600080516020612a3483398151915290565b609e54600160a01b900460ff16610b715760405162461bcd60e51b81526004016107a490612779565b6000828152609a60205260409020546001600160a01b03161580610bab57506000828152609a60205260409020546001600160a01b031633145b80610bbe57506001600160a01b03821633145b610c075760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b60448201526064016107a4565b808203610c265760405162461bcd60e51b81526004016107a49061279d565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610c8c575060018201541580610c8c575081546001600160a01b0316158015610c8c57506001600160a01b03811615155b610cce5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b60448201526064016107a4565b6001820154600003610d0d5760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610e2257336001600160a01b03821603610d445760405162461bcd60e51b81526004016107a49061279d565b81546001600160a01b0319166001600160a01b03821617825560a1805460019190600090610d739084906127c2565b9091555050306001600160a01b03821603610dab5760008052609c6020526000805160206129f483398151915254600a830155610e22565b6001600160a01b0381166000908152609b6020908152604080832060038101805460018082018355918652848620018054336001600160a01b03199182168117909255600484018054808501825590885286882001805490911690911790556005909101548452609c9092529091200154600a8301555b610e2b33610e79565b15610e3d57610e3b336001611ab6565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b602052604081208054600a909101549192169015801590610ec857506001600160a01b0383166000908152609b602052604090206002015460ff16155b8015610f435750610ed7610888565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610f0291906123ba565b602060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4391906127d5565b8015610fe257506001600160a01b0381161580610f6857506001600160a01b03811630145b80610fe25750610f76610888565b6001600160a01b0316633af32abf826040518263ffffffff1660e01b8152600401610fa191906123ba565b602060405180830381865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe291906127d5565b8015610ff5575046610ff384611f7c565b145b9392505050565b609d546001600160a01b031633148061101f57506066546001600160a01b031633145b61103b5760405162461bcd60e51b81526004016107a490612674565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff166110825760405162461bcd60e51b81526004016107a490612779565b336000908152609b6020526040812060040180549091905b80156111db576202d2a85a106111db576000836110b86001846127f2565b815481106110c8576110c8612734565b6000918252602090912001546001600160a01b031690506110e881610e79565b156111c857620493e05a10156110fe57506111db565b611109816000611ab6565b61111390846127c2565b84549093508490611126906001906127f2565b8154811061113657611136612734565b6000918252602090912001546001600160a01b0316846111576001856127f2565b8154811061116757611167612734565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838054806111a5576111a5612805565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806111d38161281b565b91505061109a565b508015610a9657609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112149033908590600401612832565b6020604051808303816000875af1158015611233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125791906127d5565b505050565b609e54600090600160a01b900460ff166112885760405162461bcd60e51b81526004016107a490612779565b61129182610e79565b6112dd5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e74792079657460448201526064016107a4565b6112e8826001611ab6565b92915050565b609d546001600160a01b031633148061131157506066546001600160a01b031633145b61132d5760405162461bcd60e51b81526004016107a490612674565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff161580801561136d5750600054600160ff909116105b8061138e575061137c30612046565b15801561138e575060005460ff166001145b6113f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a4565b6000805460ff191660011790558015611414576000805461ff0019166101001790555b61141f848484612055565b8015611465576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108ce9060040161284b565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083526060949383018282801561150657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114e8575b5050505050905060008060005b835181101561158057609b600085838151811061153257611532612734565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661156e578161156a81612760565b9250505b8061157881612760565b915050611513565b506000816001600160401b0381111561159b5761159b61242b565b6040519080825280602002602001820160405280156115c4578160200160208202803683370190505b50905060005b845181101561167b57609b60008683815181106115e9576115e9612734565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166116695784818151811061162957611629612734565b602002602001015182858151811061164357611643612734565b6001600160a01b03909216602092830291909101909101528361166581612760565b9450505b8061167381612760565b9150506115ca565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156116f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116d4575b50505050509050919050565b609d546001600160a01b031633148061172157506066546001600160a01b031633145b61173d5760405162461bcd60e51b81526004016107a490612674565b609e54600160a01b900460ff166117665760405162461bcd60e51b81526004016107a490612779565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a08231906117979030906004016123ba565b602060405180830381865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d8919061286f565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061180b9033908590600401612832565b6020604051808303816000875af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e91906127d5565b5060405133904780156108fc02916000818181858888f1935050505015801561187b573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b03163314806118af57506066546001600160a01b031633145b6118cb5760405162461bcd60e51b81526004016107a490612674565b60a88190556000908152609a6020526040902080546001600160a01b03191630179055565b600080516020612a34833981519152546001600160a01b031690565b609d546001600160a01b031633148061192f57506066546001600160a01b031633145b6108855760405162461bcd60e51b81526004016107a490612674565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561197e5761125783612168565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119d8575060408051601f3d908101601f191682019092526119d59181019061286f565b60015b611a3b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107a4565b600080516020612a348339815191528114611aaa5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107a4565b50611257838383612202565b6001600160a01b038083166000908152609b602052604081208054600a909101549192169082308314801590611af457506001600160a01b03831615155b15611e39576001600160a01b038681166000908152609b602090815260408083206009015493871683528083206005908101548452609c8352818420825160808101845281548152600182015494810194909452600281015484840152825160a081019384905290926060850192600385019182845b815481526020019060010190808311611b6a57505050505081525050905083600003611c3757609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190612888565b611c0990600a61298f565b905063649afa808311611c2757611c22816101f461299e565b611c33565b611c33816103e861299e565b9450505b83816020015111611c485783611c4e565b80602001515b93506000808260400151118015611c7f57506001600160a01b0386166000908152609b602052604090206006015483115b8015611cc257506001600160a01b0386166000908152609b60205260409020600601546201518090611cb190856127f2565b611cbb91906129b5565b8260400151105b6001600160a01b0387166000908152609b602052604081206007018054929350600192909190611cf39084906127c2565b90915550506001600160a01b0386166000908152609b602052604081206008018054879290611d239084906127c2565b9091555050815115801590611d54575081516001600160a01b0387166000908152609b602052604090206007015410155b8015611d5e575080155b15611db8576001600160a01b0386166000908152609b60205260408120600501805460019290611d8f9084906127c2565b90915550506001600160a01b0386166000908152609b6020526040902042600690910155600193505b8715611e3557609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611df09089908990600401612832565b6020604051808303816000875af1158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906127d5565b505b5050505b6001600160a01b0386166000908152609b60205260408120600201805460ff19166001908117909155609f805491929091611e759084906127c2565b909155505060a08054839190600090611e8f9084906127c2565b9091555050609e546001600160a01b031663a9059cbb87611eb16002866129b5565b6040518363ffffffff1660e01b8152600401611ece929190612832565b6020604051808303816000875af1158015611eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1191906127d5565b506001600160a01b038381166000818152609b602090815260409182902060050154825187815291820152841515818301529051928916927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b9181900360600190a350949350505050565b6000806000611f89610888565b6001600160a01b031684604051602401611fa391906123ba565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b17905251611fd891906129d7565b600060405180830381855afa9150503d8060008114612013576040519150601f19603f3d011682016040523d82523d6000602084013e612018565b606091505b50909250905081151560000361203257465b949350505050565b8080602001905181019061202a919061286f565b6001600160a01b03163b151590565b61205e83612227565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c6020526000805160206129f483398151915283905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac1906120f79060040161284b565b602060405180830381865afa158015612114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121389190612657565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b61217181612046565b6121d35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107a4565b600080516020612a3483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61220b8361224a565b6000825111806122185750805b1561125757611465838361228a565b606780546001600160a01b0319166001600160a01b03831617905561088561063e565b61225381612168565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061229583612046565b6122f05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a4565b600080846001600160a01b03168460405161230b91906129d7565b600060405180830381855af49150503d8060008114612346576040519150601f19603f3d011682016040523d82523d6000602084013e61234b565b606091505b50915091506123738282604051806060016040528060278152602001612a546027913961237c565b95945050505050565b6060831561238b575081610ff5565b610ff583838151156123a05781518083602001fd5b8060405162461bcd60e51b81526004016107a49190612528565b6001600160a01b0391909116815260200190565b801515811461088557600080fd5b6000602082840312156123ee57600080fd5b8135610ff5816123ce565b6001600160a01b038116811461088557600080fd5b60006020828403121561242057600080fd5b8135610ff5816123f9565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561245457600080fd5b823561245f816123f9565b915060208301356001600160401b038082111561247b57600080fd5b818501915085601f83011261248f57600080fd5b8135818111156124a1576124a161242b565b604051601f8201601f19908116603f011681019083821181831017156124c9576124c961242b565b816040528281528860208487010111156124e257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561251f578181015183820152602001612507565b50506000910152565b6020815260008251806020840152612547816040850160208701612504565b601f01601f19169190910160400192915050565b6000806040838503121561256e57600080fd5b50508035926020909101359150565b60006020828403121561258f57600080fd5b5035919050565b600080600080608085870312156125ac57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156125dd57600080fd5b83356125e8816123f9565b92506020840135915060408401356125ff816123f9565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561264b5783516001600160a01b031683529284019291840191600101612626565b50909695505050505050565b60006020828403121561266957600080fd5b8151610ff5816123f9565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252602c90820152600080516020612a1483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a1483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016127725761277261274a565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156112e8576112e861274a565b6000602082840312156127e757600080fd5b8151610ff5816123ce565b818103818111156112e8576112e861274a565b634e487b7160e01b600052603160045260246000fd5b60008161282a5761282a61274a565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b60006020828403121561288157600080fd5b5051919050565b60006020828403121561289a57600080fd5b815160ff81168114610ff557600080fd5b600181815b808511156128e65781600019048211156128cc576128cc61274a565b808516156128d957918102915b93841c93908002906128b0565b509250929050565b6000826128fd575060016112e8565b8161290a575060006112e8565b8160018114612920576002811461292a57612946565b60019150506112e8565b60ff84111561293b5761293b61274a565b50506001821b6112e8565b5060208310610133831016604e8410600b8410161715612969575081810a6112e8565b61297383836128ab565b80600019048211156129875761298761274a565b029392505050565b6000610ff560ff8416836128ee565b80820281158282048414176112e8576112e861274a565b6000826129d257634e487b7160e01b600052601260045260246000fd5b500490565b600082516129e9818460208701612504565b919091019291505056fe21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205f751b3540f901bd437d51cf297f3bfc75a895d176fceeaed41d4460ce872b8164736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106101685760003560e01c806302fb0c5e1461016d578063119e5bf3146101a35780631b3c90a8146101d057806321132aad146101e75780633659cfe61461020757806336afc6fa146102275780633e6326fc1461023c57806341155d5e1461025c5780634162169f1461028a5780634f1ef286146102aa57806352d1902d146102bd57806354fd4d50146102d25780635aef7de6146103045780635b419a65146103245780636d619ef8146103445780638da5cb5b14610364578063a1df6fd314610384578063a87430ba1461039e578063acec338a14610466578063af6346b014610486578063b2596a671461049b578063b6567cd5146104f2578063b9fb2d1814610512578063ba6f568014610532578063c350a1b514610568578063d80528ae14610588578063e1758bd8146105a7578063e951a3aa146105bc578063e9881a5e146105e9578063efbe1c1c14610609578063f14b86491461061e575b600080fd5b34801561017957600080fd5b50609e5461018e90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101af57600080fd5b50609e546101c3906001600160a01b031681565b60405161019a91906123ba565b3480156101dc57600080fd5b506101e561063e565b005b3480156101f357600080fd5b506101e56102023660046123dc565b610765565b34801561021357600080fd5b506101e561022236600461240e565b6107c0565b34801561023357600080fd5b506101c3610888565b34801561024857600080fd5b506067546101c3906001600160a01b031681565b34801561026857600080fd5b5061027c61027736600461240e565b610914565b60405190815260200161019a565b34801561029657600080fd5b506065546101c3906001600160a01b031681565b6101e56102b8366004612441565b6109e1565b3480156102c957600080fd5b5061027c610a9a565b3480156102de57600080fd5b506040805180820182526003815262322e3360e81b6020820152905161019a9190612528565b34801561031057600080fd5b506066546101c3906001600160a01b031681565b34801561033057600080fd5b506101e561033f36600461255b565b610b48565b34801561035057600080fd5b5061018e61035f36600461240e565b610e79565b34801561037057600080fd5b50609d546101c3906001600160a01b031681565b34801561039057600080fd5b5060a75461018e9060ff1681565b3480156103aa57600080fd5b506104126103b936600461240e565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161019a565b34801561047257600080fd5b506101e56104813660046123dc565b610ffc565b34801561049257600080fd5b506101e5611059565b3480156104a757600080fd5b506104d76104b636600461257d565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161019a565b3480156104fe57600080fd5b5061027c61050d36600461240e565b61125c565b34801561051e57600080fd5b506101e561052d366004612596565b6112ee565b34801561053e57600080fd5b506101c361054d36600461257d565b609a602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101e56105833660046125c8565b61134d565b34801561059457600080fd5b50609f5460a05460a1546104d792919083565b3480156105b357600080fd5b506101c361146b565b3480156105c857600080fd5b506105dc6105d736600461240e565b61149a565b60405161019a919061260a565b3480156105f557600080fd5b506105dc61060436600461240e565b611685565b34801561061557600080fd5b506101e56116fe565b34801561062a57600080fd5b506101e561063936600461257d565b61188c565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190612657565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190612657565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061078857506066546001600160a01b031633145b6107ad5760405162461bcd60e51b81526004016107a490612674565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108085760405162461bcd60e51b81526004016107a4906126c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083a6118f0565b6001600160a01b0316146108605760405162461bcd60e51b81526004016107a4906126fa565b6108698161190c565b604080516000808252602082019092526108859183919061194b565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190612657565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561097e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610960575b505050505090506000805b82518110156109d9576109b48382815181106109a7576109a7612734565b6020026020010151610e79565b156109c757816109c381612760565b9250505b806109d181612760565b915050610989565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a295760405162461bcd60e51b81526004016107a4906126c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5b6118f0565b6001600160a01b031614610a815760405162461bcd60e51b81526004016107a4906126fa565b610a8a8261190c565b610a968282600161194b565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107a4565b50600080516020612a3483398151915290565b609e54600160a01b900460ff16610b715760405162461bcd60e51b81526004016107a490612779565b6000828152609a60205260409020546001600160a01b03161580610bab57506000828152609a60205260409020546001600160a01b031633145b80610bbe57506001600160a01b03821633145b610c075760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b60448201526064016107a4565b808203610c265760405162461bcd60e51b81526004016107a49061279d565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610c8c575060018201541580610c8c575081546001600160a01b0316158015610c8c57506001600160a01b03811615155b610cce5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b60448201526064016107a4565b6001820154600003610d0d5760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610e2257336001600160a01b03821603610d445760405162461bcd60e51b81526004016107a49061279d565b81546001600160a01b0319166001600160a01b03821617825560a1805460019190600090610d739084906127c2565b9091555050306001600160a01b03821603610dab5760008052609c6020526000805160206129f483398151915254600a830155610e22565b6001600160a01b0381166000908152609b6020908152604080832060038101805460018082018355918652848620018054336001600160a01b03199182168117909255600484018054808501825590885286882001805490911690911790556005909101548452609c9092529091200154600a8301555b610e2b33610e79565b15610e3d57610e3b336001611ab6565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b602052604081208054600a909101549192169015801590610ec857506001600160a01b0383166000908152609b602052604090206002015460ff16155b8015610f435750610ed7610888565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610f0291906123ba565b602060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4391906127d5565b8015610fe257506001600160a01b0381161580610f6857506001600160a01b03811630145b80610fe25750610f76610888565b6001600160a01b0316633af32abf826040518263ffffffff1660e01b8152600401610fa191906123ba565b602060405180830381865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe291906127d5565b8015610ff5575046610ff384611f7c565b145b9392505050565b609d546001600160a01b031633148061101f57506066546001600160a01b031633145b61103b5760405162461bcd60e51b81526004016107a490612674565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff166110825760405162461bcd60e51b81526004016107a490612779565b336000908152609b6020526040812060040180549091905b80156111db576202d2a85a106111db576000836110b86001846127f2565b815481106110c8576110c8612734565b6000918252602090912001546001600160a01b031690506110e881610e79565b156111c857620493e05a10156110fe57506111db565b611109816000611ab6565b61111390846127c2565b84549093508490611126906001906127f2565b8154811061113657611136612734565b6000918252602090912001546001600160a01b0316846111576001856127f2565b8154811061116757611167612734565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838054806111a5576111a5612805565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806111d38161281b565b91505061109a565b508015610a9657609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112149033908590600401612832565b6020604051808303816000875af1158015611233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125791906127d5565b505050565b609e54600090600160a01b900460ff166112885760405162461bcd60e51b81526004016107a490612779565b61129182610e79565b6112dd5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e74792079657460448201526064016107a4565b6112e8826001611ab6565b92915050565b609d546001600160a01b031633148061131157506066546001600160a01b031633145b61132d5760405162461bcd60e51b81526004016107a490612674565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff161580801561136d5750600054600160ff909116105b8061138e575061137c30612046565b15801561138e575060005460ff166001145b6113f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a4565b6000805460ff191660011790558015611414576000805461ff0019166101001790555b61141f848484612055565b8015611465576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108ce9060040161284b565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083526060949383018282801561150657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114e8575b5050505050905060008060005b835181101561158057609b600085838151811061153257611532612734565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661156e578161156a81612760565b9250505b8061157881612760565b915050611513565b506000816001600160401b0381111561159b5761159b61242b565b6040519080825280602002602001820160405280156115c4578160200160208202803683370190505b50905060005b845181101561167b57609b60008683815181106115e9576115e9612734565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166116695784818151811061162957611629612734565b602002602001015182858151811061164357611643612734565b6001600160a01b03909216602092830291909101909101528361166581612760565b9450505b8061167381612760565b9150506115ca565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156116f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116d4575b50505050509050919050565b609d546001600160a01b031633148061172157506066546001600160a01b031633145b61173d5760405162461bcd60e51b81526004016107a490612674565b609e54600160a01b900460ff166117665760405162461bcd60e51b81526004016107a490612779565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a08231906117979030906004016123ba565b602060405180830381865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d8919061286f565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061180b9033908590600401612832565b6020604051808303816000875af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e91906127d5565b5060405133904780156108fc02916000818181858888f1935050505015801561187b573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b03163314806118af57506066546001600160a01b031633145b6118cb5760405162461bcd60e51b81526004016107a490612674565b60a88190556000908152609a6020526040902080546001600160a01b03191630179055565b600080516020612a34833981519152546001600160a01b031690565b609d546001600160a01b031633148061192f57506066546001600160a01b031633145b6108855760405162461bcd60e51b81526004016107a490612674565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561197e5761125783612168565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119d8575060408051601f3d908101601f191682019092526119d59181019061286f565b60015b611a3b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107a4565b600080516020612a348339815191528114611aaa5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107a4565b50611257838383612202565b6001600160a01b038083166000908152609b602052604081208054600a909101549192169082308314801590611af457506001600160a01b03831615155b15611e39576001600160a01b038681166000908152609b602090815260408083206009015493871683528083206005908101548452609c8352818420825160808101845281548152600182015494810194909452600281015484840152825160a081019384905290926060850192600385019182845b815481526020019060010190808311611b6a57505050505081525050905083600003611c3757609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190612888565b611c0990600a61298f565b905063649afa808311611c2757611c22816101f461299e565b611c