0 txs
0 calls
constructor
constructor(address _history, uint256 _nextStreamId, address forwarder)
functions
acceptToken
viewfunction acceptToken(address) view returns (bool)
balanceOf
viewfunction balanceOf(uint256 streamId, address who) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeCharge
viewfunction feeCharge(uint256 deposit) view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
numberOfFeeWithdraws
viewfunction numberOfFeeWithdraws() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
usdcTokenAddress
viewfunction usdcTokenAddress() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withdraws
viewfunction withdraws(uint256) view returns (uint256 amount, uint256 time, address who)
addTokenForStream
nonpayablefunction addTokenForStream(address _token)
cancelStream
nonpayablefunction cancelStream(uint256 streamId) returns (bool)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
pause
nonpayablefunction pause()
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFeeForHolders
nonpayablefunction withdrawFeeForHolders(uint256 amount, address reciver) returns (bool)
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
withdrawFee
event withdrawFee(uint256 amount, address indexed reciver)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b5060405162005422380380620054228339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b0f80620009136000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806377b53ece116101045780638cd3f064116100a2578063affca93211610071578063affca9321461054a578063b160f9cc14610566578063ce1b815f14610584578063f2fde38b146105a2576101d9565b80638cd3f064146104c05780638da5cb5b146104f0578063978bbdb91461050e57806398daac831461052c576101d9565b80638456cb59116100de5780638456cb591461044e57806386d067ff14610458578063873ed48c14610474578063894e9a0d14610490576101d9565b806377b53ece146103d05780637a9b2c6c146103ee5780637c5b36481461041e576101d9565b8063486ff0cd1161017c5780635fa7b5841161014b5780635fa7b5841461035c5780636db9241b14610378578063715018a6146103a857806376cdb03b146103b2576101d9565b8063486ff0cd146102be57806355466c37146102dc578063572b6c051461030e5780635c975abb1461033e576101d9565b80631e99d569116101b85780631e99d5691461024857806328f7c3bf146102665780633656eec2146102845780633f4ba83a146102b4576101d9565b8062b98a43146101de5780630322bdef146101fc578063090d23b91461022c575b600080fd5b6101e66105be565b6040516101f39190612f86565b60405180910390f35b61021660048036038101906102119190613029565b6105e4565b6040516102239190613084565b60405180910390f35b6102466004803603810190610241919061309f565b610816565b005b610250610862565b60405161025d91906130db565b60405180910390f35b61026e610868565b60405161027b91906130db565b60405180910390f35b61029e60048036038101906102999190613029565b61086e565b6040516102ab91906130db565b60405180910390f35b6102bc610b18565b005b6102c6610bc2565b6040516102d39190613186565b60405180910390f35b6102f660048036038101906102f191906131a8565b610c50565b604051610305939291906131e4565b60405180910390f35b6103286004803603810190610323919061309f565b610c9a565b6040516103359190613084565b60405180910390f35b610346610cf3565b6040516103539190613084565b60405180910390f35b6103766004803603810190610371919061309f565b610d0a565b005b610392600480360381019061038d91906131a8565b610dc3565b60405161039f9190613084565b60405180910390f35b6103b0610f9f565b005b6103ba610fb3565b6040516103c7919061321b565b60405180910390f35b6103d8610fd9565b6040516103e5919061321b565b60405180910390f35b61040860048036038101906104039190613236565b610fff565b6040516104159190613084565b60405180910390f35b610438600480360381019061043391906131a8565b61146a565b60405161044591906130db565b60405180910390f35b61045661148e565b005b610472600480360381019061046d91906133ef565b611538565b005b61048e6004803603810190610489919061309f565b611ef5565b005b6104aa60048036038101906104a591906131a8565b611fee565b6040516104b791906134d4565b60405180910390f35b6104da60048036038101906104d5919061309f565b612054565b6040516104e79190613084565b60405180910390f35b6104f8612074565b604051610505919061321b565b60405180910390f35b61051661209e565b60405161052391906130db565b60405180910390f35b6105346120a4565b6040516105419190613510565b60405180910390f35b610564600480360381019061055f91906131a8565b6120ca565b005b61056e612123565b60405161057b91906130db565b60405180910390f35b61058c612129565b604051610599919061321b565b60405180910390f35b6105bc60048036038101906105b7919061309f565b612152565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006105ee6121d5565b6002548311156105fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361063657600080fd5b6000831161064357600080fd5b600c600081546106529061355a565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461070b91906135a2565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff168460405161073790613607565b60006040518083038185875af1925050503d8060008114610774576040519150601f19603f3d011682016040523d82523d6000602084013e610779565b606091505b50509050806107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490613668565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b805478560405161080391906130db565b60405180910390a2600191505092915050565b61081e6121d5565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb906136d4565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b815260040161093191906130db565b600060405180830381865afa15801561094e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610977919061398b565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506109dc612ea2565b60006109e788612253565b905082604001518360000151826109fe91906139d4565b610a089190613a16565b826000018181525050826020015184600001511115610a5c5782602001518460000151610a3591906135a2565b82602001818152505081602001518260000151610a5291906135a2565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610aa4578160000151955050505050610b11565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b085781600001518360200151610aef91906135a2565b8260400181815250508160400151955050505050610b11565b60009550505050505b5092915050565b610b206121d5565b610b28610cf3565b610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90613a96565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610bab6123dd565b604051610bb8919061321b565b60405180910390a1565b60048054610bcf90613ae5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfb90613ae5565b8015610c485780601f10610c1d57610100808354040283529160200191610c48565b820191906000526020600020905b815481529060010190602001808311610c2b57829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610d126121d5565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d6857600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906136d4565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610e8791906130db565b600060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ecd919061398b565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610ef26123dd565b73ffffffffffffffffffffffffffffffffffffffff161480610f4b575080610100015173ffffffffffffffffffffffffffffffffffffffff16610f336123dd565b73ffffffffffffffffffffffffffffffffffffffff16145b610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190613b88565b60405180910390fd5b610f9385612414565b60019350505050919050565b610fa76121d5565b610fb16000612852565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906136d4565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016110c391906130db565b600060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611109919061398b565b905080610100015173ffffffffffffffffffffffffffffffffffffffff1661112f6123dd565b73ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90613bf4565b60405180910390fd5b600085036111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613c60565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b815260040161122591906130db565b600060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061126b919061398b565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b81526004016112ca91906130db565b602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613c80565b905042826020015167ffffffffffffffff16111561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613cf9565b60405180910390fd5b600061136f8984610100015161086e565b9050878110156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613d8b565b60405180910390fd5b600083610100015190506113ca8a8a8386612918565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611427929190613dab565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b548361147d91906139d4565b6114879190613e03565b9050919050565b6114966121d5565b61149e610cf3565b156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613e80565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115216123dd565b60405161152e919061321b565b60405180910390a1565b611540610cf3565b15611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613e80565b60405180910390fd5b600061158f846020013561146a565b9050612710846020013510156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190613eec565b60405180910390fd5b80600254016002819055506115ed6123dd565b73ffffffffffffffffffffffffffffffffffffffff16846060016020810190611616919061309f565b73ffffffffffffffffffffffffffffffffffffffff161461166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166390613f58565b60405180910390fd5b60096000856000016020810190611683919061309f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190613fc4565b60405180910390fd5b60048460e001602081019061171f9190613ff9565b60ff1610611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990614072565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061178d919061309f565b73ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906140de565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061180d919061309f565b73ffffffffffffffffffffffffffffffffffffffff1603611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a9061414a565b60405180910390fd5b61186b6123dd565b73ffffffffffffffffffffffffffffffffffffffff16846040016020810190611894919061309f565b73ffffffffffffffffffffffffffffffffffffffff16036118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e1906141b6565b60405180910390fd5b6000846020013503611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614222565b60405180910390fd5b428460800160006003811061194957611948614242565b5b60200201602081019061195c9190614286565b67ffffffffffffffff1610156119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906142ff565b60405180910390fd5b836080016000600381106119be576119bd614242565b5b6020020160208101906119d19190614286565b67ffffffffffffffff16846080016001600381106119f2576119f1614242565b5b602002016020810190611a059190614286565b67ffffffffffffffff1611611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a469061436b565b60405180910390fd5b600084608001600260038110611a6857611a67614242565b5b602002016020810190611a7b9190614286565b67ffffffffffffffff161480611af7575083608001600060038110611aa357611aa2614242565b5b602002016020810190611ab69190614286565b67ffffffffffffffff1684608001600260038110611ad757611ad6614242565b5b602002016020810190611aea9190614286565b67ffffffffffffffff1611155b611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d906143d7565b60405180910390fd5b6000846000016020810190611b4b919061309f565b9050846000016020810190611b60919061309f565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611cd657846000016020810190611bc7919061309f565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611c4d6123dd565b308860200135600f42611c609190613a16565b896000016020810190611c739190613ff9565b8a602001358b604001356040518863ffffffff1660e01b8152600401611c9f979695949392919061441f565b600060405180830381600087803b158015611cb957600080fd5b505af1158015611ccd573d6000803e3d6000fd5b50505050611cdb565b600080fd5b611d0c333087602001358473ffffffffffffffffffffffffffffffffffffffff16612abd909392919063ffffffff16565b611d393330848473ffffffffffffffffffffffffffffffffffffffff16612abd909392919063ffffffff16565b611d41612ec3565b85608001600060038110611d5857611d57614242565b5b602002016020810190611d6b9190614286565b86608001600160038110611d8257611d81614242565b5b602002016020810190611d959190614286565b0367ffffffffffffffff16816000018181525050806000015186602001351015611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb906144da565b60405180910390fd5b60008082600001518860200135611e0b91906144fa565b03611e195760009050611e30565b81600001518760200135611e2d91906144fa565b90505b81600001518760200135611e449190613e03565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600160035401600381905550611eeb818988612b3f565b5050505050505050565b611efd6121d5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3657600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611f9357600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff6612edd565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120d26121d5565b6107d0600b541115612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211090614577565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61215a6121d5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c090614609565b60405180910390fd5b6121d281612852565b50565b6121dd6123dd565b73ffffffffffffffffffffffffffffffffffffffff166121fb612074565b73ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890614675565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff166122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b0906136d4565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161231691906130db565b600060405180830381865afa158015612333573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061235c919061398b565b9050806020015167ffffffffffffffff16421161237d5760009250506123d7565b806040015167ffffffffffffffff164210156123b557806020015167ffffffffffffffff16426123ad91906135a2565b9250506123d7565b806020015181604001516123c99190614695565b67ffffffffffffffff169250505b50919050565b600060146000369050101580156123f957506123f833610c9a565b5b1561240d57601436033560601c9050612411565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161247191906130db565b600060405180830381865afa15801561248e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124b7919061398b565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161251691906130db565b602060405180830381865afa158015612533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125579190613c80565b905042826060015167ffffffffffffffff1611156125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a19061471d565b60405180910390fd5b42826040015167ffffffffffffffff1610156125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290614789565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff1661261e6123dd565b73ffffffffffffffffffffffffffffffffffffffff1614801561264a5750600182610140015160ff1614155b801561265f5750600382610140015160ff1614155b1561266957600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff1661268d6123dd565b73ffffffffffffffffffffffffffffffffffffffff161480156126b95750600282610140015160ff1614155b80156126ce5750600382610140015160ff1614155b156126d857600080fd5b6000819050600081905060006126f2868660c0015161086e565b905060006127058787610100015161086e565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b8152600401612764929190613dab565b600060405180830381600087803b15801561277e57600080fd5b505af1158015612792573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461281157612810866101000151828573ffffffffffffffffffffffffffffffffffffffff16612bd59092919063ffffffff16565b5b60008214612849576128488660c00151838573ffffffffffffffffffffffffffffffffffffffff16612bd59092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506000600760008781526020019081526020016000206002015490508481836020015161299f9190613a16565b6129a991906135a2565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612a405760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612a82856611c37937e0800088612a5c91906135a2565b8373ffffffffffffffffffffffffffffffffffffffff16612bd59092919063ffffffff16565b612ab4306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612bd59092919063ffffffff16565b50505050505050565b612b39848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612af2939291906147a9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c54565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612b9e939291906149c4565b600060405180830381600087803b158015612bb857600080fd5b505af1158015612bcc573d6000803e3d6000fd5b50505050505050565b612c4f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612c08929190614a04565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c54565b505050565b6000612c7f828473ffffffffffffffffffffffffffffffffffffffff16612ceb90919063ffffffff16565b90506000815114158015612ca4575080806020019051810190612ca29190614a59565b155b15612ce657826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612cdd919061321b565b60405180910390fd5b505050565b6060612cf983836000612d01565b905092915050565b606081471015612d4857306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612d3f919061321b565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612d719190614ac2565b60006040518083038185875af1925050503d8060008114612dae576040519150601f19603f3d011682016040523d82523d6000602084013e612db3565b606091505b5091509150612dc3868383612dce565b925050509392505050565b606082612de357612dde82612e5d565b612e55565b60008251148015612e0b575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612e4d57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e44919061321b565b60405180910390fd5b819050612e56565b5b9392505050565b600081511115612e705780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f4c612f47612f4284612f07565b612f27565b612f07565b9050919050565b6000612f5e82612f31565b9050919050565b6000612f7082612f53565b9050919050565b612f8081612f65565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612fc881612fb5565b8114612fd357600080fd5b50565b600081359050612fe581612fbf565b92915050565b6000612ff682612f07565b9050919050565b61300681612feb565b811461301157600080fd5b50565b60008135905061302381612ffd565b92915050565b600080604083850312156130405761303f612fab565b5b600061304e85828601612fd6565b925050602061305f85828601613014565b9150509250929050565b60008115159050919050565b61307e81613069565b82525050565b60006020820190506130996000830184613075565b92915050565b6000602082840312156130b5576130b4612fab565b5b60006130c384828501613014565b91505092915050565b6130d581612fb5565b82525050565b60006020820190506130f060008301846130cc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613130578082015181840152602081019050613115565b60008484015250505050565b6000601f19601f8301169050919050565b6000613158826130f6565b6131628185613101565b9350613172818560208601613112565b61317b8161313c565b840191505092915050565b600060208201905081810360008301526131a0818461314d565b905092915050565b6000602082840312156131be576131bd612fab565b5b60006131cc84828501612fd6565b91505092915050565b6131de81612feb565b82525050565b60006060820190506131f960008301866130cc565b61320660208301856130cc565b61321360408301846131d5565b949350505050565b600060208201905061323060008301846131d5565b92915050565b6000806040838503121561324d5761324c612fab565b5b600061325b85828601612fd6565b925050602061326c85828601612fd6565b9150509250929050565b600080fd5b6000610100828403121561329257613291613276565b5b81905092915050565b6000606082840312156132b1576132b0613276565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132fc8261313c565b810181811067ffffffffffffffff8211171561331b5761331a6132c4565b5b80604052505050565b600061332e612fa1565b905061333a82826132f3565b919050565b600067ffffffffffffffff82111561335a576133596132c4565b5b6133638261313c565b9050602081019050919050565b82818337600083830152505050565b600061339261338d8461333f565b613324565b9050828152602081018484840111156133ae576133ad6132bf565b5b6133b9848285613370565b509392505050565b600082601f8301126133d6576133d56132ba565b5b81356133e684826020860161337f565b91505092915050565b6000806000610180848603121561340957613408612fab565b5b60006134178682870161327b565b9350506101006134298682870161329b565b92505061016084013567ffffffffffffffff81111561344b5761344a612fb0565b5b613457868287016133c1565b9150509250925092565b61346a81612fb5565b82525050565b61347981613069565b82525050565b6080820160008201516134956000850182613461565b5060208201516134a86020850182613461565b5060408201516134bb6040850182613461565b5060608201516134ce6060850182613470565b50505050565b60006080820190506134e9600083018461347f565b92915050565b60006134fa82612f53565b9050919050565b61350a816134ef565b82525050565b60006020820190506135256000830184613501565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061356582612fb5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135975761359661352b565b5b600182019050919050565b60006135ad82612fb5565b91506135b883612fb5565b92508282039050818111156135d0576135cf61352b565b5b92915050565b600081905092915050565b50565b60006135f16000836135d6565b91506135fc826135e1565b600082019050919050565b6000613612826135e4565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613652601483613101565b915061365d8261361c565b602082019050919050565b6000602082019050818103600083015261368181613645565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006136be601583613101565b91506136c982613688565b602082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b600080fd5b600080fd5b60008151905061370d81612fbf565b92915050565b600067ffffffffffffffff82169050919050565b61373081613713565b811461373b57600080fd5b50565b60008151905061374d81613727565b92915050565b60008151905061376281612ffd565b92915050565b600063ffffffff82169050919050565b61378181613768565b811461378c57600080fd5b50565b60008151905061379e81613778565b92915050565b600060ff82169050919050565b6137ba816137a4565b81146137c557600080fd5b50565b6000815190506137d7816137b1565b92915050565b60006137f06137eb8461333f565b613324565b90508281526020810184848401111561380c5761380b6132bf565b5b613817848285613112565b509392505050565b600082601f830112613834576138336132ba565b5b81516138448482602086016137dd565b91505092915050565b60006101808284031215613864576138636136f4565b5b61386f610180613324565b9050600061387f848285016136fe565b60008301525060206138938482850161373e565b60208301525060406138a78482850161373e565b60408301525060606138bb8482850161373e565b60608301525060806138cf8482850161373e565b60808301525060a06138e3848285016136fe565b60a08301525060c06138f784828501613753565b60c08301525060e061390b8482850161378f565b60e08301525061010061392084828501613753565b61010083015250610120613936848285016137c8565b6101208301525061014061394c848285016137c8565b6101408301525061016082015167ffffffffffffffff811115613972576139716136f9565b5b61397e8482850161381f565b6101608301525092915050565b6000602082840312156139a1576139a0612fab565b5b600082015167ffffffffffffffff8111156139bf576139be612fb0565b5b6139cb8482850161384d565b91505092915050565b60006139df82612fb5565b91506139ea83612fb5565b92508282026139f881612fb5565b91508282048414831517613a0f57613a0e61352b565b5b5092915050565b6000613a2182612fb5565b9150613a2c83612fb5565b9250828201905080821115613a4457613a4361352b565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613a80601483613101565b9150613a8b82613a4a565b602082019050919050565b60006020820190508181036000830152613aaf81613a73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613afd57607f821691505b602082108103613b1057613b0f613ab6565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b72602283613101565b9150613b7d82613b16565b604082019050919050565b60006020820190508181036000830152613ba181613b65565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613bde601b83613101565b9150613be982613ba8565b602082019050919050565b60006020820190508181036000830152613c0d81613bd1565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c4a600e83613101565b9150613c5582613c14565b602082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b600060208284031215613c9657613c95612fab565b5b6000613ca484828501613753565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613ce3601283613101565b9150613cee82613cad565b602082019050919050565b60006020820190508181036000830152613d1281613cd6565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d75602483613101565b9150613d8082613d19565b604082019050919050565b60006020820190508181036000830152613da481613d68565b9050919050565b6000604082019050613dc060008301856130cc565b613dcd60208301846130cc565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0e82612fb5565b9150613e1983612fb5565b925082613e2957613e28613dd4565b5b828204905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e6a601083613101565b9150613e7582613e34565b602082019050919050565b60006020820190508181036000830152613e9981613e5d565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613ed6600d83613101565b9150613ee182613ea0565b602082019050919050565b60006020820190508181036000830152613f0581613ec9565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613f42600c83613101565b9150613f4d82613f0c565b602082019050919050565b60006020820190508181036000830152613f7181613f35565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b6000613fae600b83613101565b9150613fb982613f78565b602082019050919050565b60006020820190508181036000830152613fdd81613fa1565b9050919050565b600081359050613ff3816137b1565b92915050565b60006020828403121561400f5761400e612fab565b5b600061401d84828501613fe4565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b600061405c600d83613101565b915061406782614026565b602082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b60006140c8601a83613101565b91506140d382614092565b602082019050919050565b600060208201905081810360008301526140f7816140bb565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000614134601d83613101565b915061413f826140fe565b602082019050919050565b6000602082019050818103600083015261416381614127565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006141a0601483613101565b91506141ab8261416a565b602082019050919050565b600060208201905081810360008301526141cf81614193565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b600061420c600f83613101565b9150614217826141d6565b602082019050919050565b6000602082019050818103600083015261423b816141ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008135905061428081613727565b92915050565b60006020828403121561429c5761429b612fab565b5b60006142aa84828501614271565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006142e9602083613101565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b6000614355601783613101565b91506143608261431f565b602082019050919050565b6000602082019050818103600083015261438481614348565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b60006143c1601183613101565b91506143cc8261438b565b602082019050919050565b600060208201905081810360008301526143f0816143b4565b9050919050565b614400816137a4565b82525050565b6000819050919050565b61441981614406565b82525050565b600060e082019050614434600083018a6131d5565b61444160208301896131d5565b61444e60408301886130cc565b61445b60608301876130cc565b61446860808301866143f7565b61447560a0830185614410565b61448260c0830184614410565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b60006144c4601f83613101565b91506144cf8261448e565b602082019050919050565b600060208201905081810360008301526144f3816144b7565b9050919050565b600061450582612fb5565b915061451083612fb5565b9250826145205761451f613dd4565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614561601183613101565b915061456c8261452b565b602082019050919050565b6000602082019050818103600083015261459081614554565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145f3602683613101565b91506145fe82614597565b604082019050919050565b60006020820190508181036000830152614622816145e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061465f602083613101565b915061466a82614629565b602082019050919050565b6000602082019050818103600083015261468e81614652565b9050919050565b60006146a082613713565b91506146ab83613713565b9250828203905067ffffffffffffffff8111156146cb576146ca61352b565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b6000614707600e83613101565b9150614712826146d1565b602082019050919050565b60006020820190508181036000830152614736816146fa565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b6000614773600f83613101565b915061477e8261473d565b602082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b60006060820190506147be60008301866131d5565b6147cb60208301856131d5565b6147d860408301846130cc565b949350505050565b60006147ef6020840184613014565b905092915050565b61480081612feb565b82525050565b60006148156020840184612fd6565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b61485181613713565b82525050565b60006148638383614848565b60208301905092915050565b600061487e6020840184614271565b905092915050565b6000602082019050919050565b61489c81614828565b6148a68184614833565b92506148b18261483e565b8060005b838110156148ea576148c7828461486f565b6148d18782614857565b96506148dc83614886565b9250506001810190506148b5565b505050505050565b60006149016020840184613fe4565b905092915050565b614912816137a4565b82525050565b610100820161492a60008301836147e0565b61493760008501826147f7565b506149456020830183614806565b6149526020850182613461565b5061496060408301836147e0565b61496d60408501826147f7565b5061497b60608301836147e0565b61498860608501826147f7565b50614996608083018361481d565b6149a36080850182614893565b506149b160e08301836148f2565b6149be60e0850182614909565b50505050565b6000610140820190506149da60008301866130cc565b6149e76020830185614918565b8181036101208301526149fa818461314d565b9050949350505050565b6000604082019050614a1960008301856131d5565b614a2660208301846130cc565b9392505050565b614a3681613069565b8114614a4157600080fd5b50565b600081519050614a5381614a2d565b92915050565b600060208284031215614a6f57614a6e612fab565b5b6000614a7d84828501614a44565b91505092915050565b600081519050919050565b6000614a9c82614a86565b614aa681856135d6565b9350614ab6818560208601613112565b80840191505092915050565b6000614ace8284614a91565b91508190509291505056fea2646970667358221220bc233f80658f1020fcff43c0d896ec1806c1bae4bf58752d9b18a7b3766164cd64736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87