0 txs
0 calls
constructor
constructor(address _history)
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)
forwarder
viewfunction forwarder() view returns (address)
getMSg
viewfunction getMSg() view returns (address)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
getValue
purefunction getValue(uint256 _value) pure returns (uint256)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
minDeposit
viewfunction minDeposit() view returns (uint256)
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)
withDrawFee
viewfunction withDrawFee() view returns (uint256)
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, string title)
pause
nonpayablefunction pause()
permitUSDC
nonpayablefunction permitUSDC(tuple sig)
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
setMinDeposit
nonpayablefunction setMinDeposit(uint256 _min)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _withDrawFee)
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
0x608060405260016003556040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004f9190620006aa565b5073b2b5841dbef766d4b521221732f9b618fcf34a87600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733c499c542cef5e3811e1192ce70d8cc03d5c3359600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710600c556064600d556103e8600e553480156200015957600080fd5b50604051620053913803806200539183398181016040528101906200017f9190620007fb565b6200019f620001936200028c60201b60201c565b620002ce60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000208906200088e565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000285600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200039460201b60201c565b50620008b0565b60006014600036905010158015620002b15750620002b033620003d760201b60201c565b5b15620002c757601436033560601c9050620002cb565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004b257607f821691505b602082108103620004c857620004c76200046a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004f3565b6200053e8683620004f3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200058b620005856200057f8462000556565b62000560565b62000556565b9050919050565b6000819050919050565b620005a7836200056a565b620005bf620005b68262000592565b84845462000500565b825550505050565b600090565b620005d6620005c7565b620005e38184846200059c565b505050565b5b818110156200060b57620005ff600082620005cc565b600181019050620005e9565b5050565b601f8211156200065a576200062481620004ce565b6200062f84620004e3565b810160208510156200063f578190505b620006576200064e85620004e3565b830182620005e8565b50505b505050565b600082821c905092915050565b60006200067f600019846008026200065f565b1980831691505092915050565b60006200069a83836200066c565b9150826002028217905092915050565b620006b58262000430565b67ffffffffffffffff811115620006d157620006d06200043b565b5b620006dd825462000499565b620006ea8282856200060f565b600060209050601f8311600181146200072257600084156200070d578287015190505b6200071985826200068c565b86555062000789565b601f1984166200073286620004ce565b60005b828110156200075c5784890151825560018201915060208501945060208101905062000735565b868310156200077c578489015162000778601f8916826200066c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007c38262000796565b9050919050565b620007d581620007b6565b8114620007e157600080fd5b50565b600081519050620007f581620007ca565b92915050565b60006020828403121562000814576200081362000791565b5b60006200082484828501620007e4565b91505092915050565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000876600c836200082d565b915062000883826200083e565b602082019050919050565b60006020820190508181036000830152620008a98162000867565b9050919050565b614ad180620008c06000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80637c5b364811610130578063978bbdb9116100b8578063ce1b815f1161007c578063ce1b815f1461067e578063eea5bf4b1461069c578063f2fde38b146106ba578063f645d4f9146106d6578063f95654a7146106f457610231565b8063978bbdb9146105ec57806398daac831461060a578063affca93214610628578063b160f9cc14610644578063b6ac642a1461066257610231565b806388936029116100ff5780638893602914610536578063894e9a0d146105525780638cd3f064146105825780638da5cb5b146105b25780638fcc9cfb146105d057610231565b80637c5b3648146104c457806380b14829146104f45780638456cb5914610510578063873ed48c1461051a57610231565b8063486ff0cd116101be5780636db9241b116101825780636db9241b1461041e578063715018a61461044e57806376cdb03b1461045857806377b53ece146104765780637a9b2c6c1461049457610231565b8063486ff0cd1461036457806355466c3714610382578063572b6c05146103b45780635c975abb146103e45780635fa7b5841461040257610231565b80631e99d569116102055780631e99d569146102d057806328f7c3bf146102ee5780633656eec21461030c5780633f4ba83a1461033c57806341b3d1851461034657610231565b8062b98a43146102365780630322bdef14610254578063090d23b9146102845780630ff4c916146102a0575b600080fd5b61023e610712565b60405161024b9190613042565b60405180910390f35b61026e600480360381019061026991906130e5565b610738565b60405161027b9190613140565b60405180910390f35b61029e6004803603810190610299919061315b565b610910565b005b6102ba60048036038101906102b59190613188565b61095c565b6040516102c791906131c4565b60405180910390f35b6102d8610966565b6040516102e591906131c4565b60405180910390f35b6102f661096c565b60405161030391906131c4565b60405180910390f35b610326600480360381019061032191906130e5565b610972565b60405161033391906131c4565b60405180910390f35b610344610c1c565b005b61034e610cc6565b60405161035b91906131c4565b60405180910390f35b61036c610ccc565b604051610379919061326f565b60405180910390f35b61039c60048036038101906103979190613188565b610d5a565b6040516103ab939291906132a0565b60405180910390f35b6103ce60048036038101906103c9919061315b565b610da4565b6040516103db9190613140565b60405180910390f35b6103ec610dfd565b6040516103f99190613140565b60405180910390f35b61041c6004803603810190610417919061315b565b610e14565b005b61043860048036038101906104339190613188565b610ecd565b6040516104459190613140565b60405180910390f35b6104566110a9565b005b6104606110bd565b60405161046d91906132d7565b60405180910390f35b61047e6110e3565b60405161048b91906132d7565b60405180910390f35b6104ae60048036038101906104a991906132f2565b611109565b6040516104bb9190613140565b60405180910390f35b6104de60048036038101906104d99190613188565b611574565b6040516104eb91906131c4565b60405180910390f35b61050e60048036038101906105099190613356565b611598565b005b6105186116c0565b005b610534600480360381019061052f919061315b565b61176a565b005b610550600480360381019061054b91906134d8565b611863565b005b61056c60048036038101906105679190613188565b612033565b60405161057991906135a9565b60405180910390f35b61059c6004803603810190610597919061315b565b612099565b6040516105a99190613140565b60405180910390f35b6105ba6120b9565b6040516105c791906132d7565b60405180910390f35b6105ea60048036038101906105e59190613188565b6120e3565b005b6105f46120f5565b60405161060191906131c4565b60405180910390f35b6106126120fb565b60405161061f91906135e5565b60405180910390f35b610642600480360381019061063d9190613188565b612121565b005b61064c61217a565b60405161065991906131c4565b60405180910390f35b61067c60048036038101906106779190613188565b612180565b005b610686612192565b60405161069391906132d7565b60405180910390f35b6106a46121bb565b6040516106b191906131c4565b60405180910390f35b6106d460048036038101906106cf919061315b565b6121c1565b005b6106de612244565b6040516106eb91906132d7565b60405180910390f35b6106fc61226a565b60405161070991906132d7565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610742612279565b60025483111561075157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361078a57600080fd5b6000831161079757600080fd5b600f600081546107a69061362f565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff1681525060106000600f548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461085f9190613677565b6002819055506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108b783858373ffffffffffffffffffffffffffffffffffffffff166122f79092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b80547856040516108fd91906131c4565b60405180910390a2600191505092915050565b610918612279565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b600f5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf906136f7565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b8152600401610a3591906131c4565b600060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a7b91906139ae565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050610ae0612f5e565b6000610aeb88612376565b90508260400151836000015182610b0291906139f7565b610b0c9190613a39565b826000018181525050826020015184600001511115610b605782602001518460000151610b399190613677565b82602001818152505081602001518260000151610b569190613677565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610ba8578160000151955050505050610c15565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610c0c5781600001518360200151610bf39190613677565b8260400181815250508160400151955050505050610c15565b60009550505050505b5092915050565b610c24612279565b610c2c610dfd565b610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290613ab9565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610caf612500565b604051610cbc91906132d7565b60405180910390a1565b600c5481565b60048054610cd990613b08565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0590613b08565b8015610d525780601f10610d2757610100808354040283529160200191610d52565b820191906000526020600020905b815481529060010190602001808311610d3557829003601f168201915b505050505081565b60106020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610e1c612279565b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e7257600080fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906136f7565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610f9191906131c4565b600060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fd791906139ae565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610ffc612500565b73ffffffffffffffffffffffffffffffffffffffff161480611055575080610100015173ffffffffffffffffffffffffffffffffffffffff1661103d612500565b73ffffffffffffffffffffffffffffffffffffffff16145b611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613bab565b60405180910390fd5b61109d85612537565b60019350505050919050565b6110b1612279565b6110bb6000612975565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff1661116f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611166906136f7565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016111cd91906131c4565b600060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061121391906139ae565b905080610100015173ffffffffffffffffffffffffffffffffffffffff16611239612500565b73ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690613c17565b60405180910390fd5b600085036112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990613c83565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b815260040161132f91906131c4565b600060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061137591906139ae565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b81526004016113d491906131c4565b602060405180830381865afa1580156113f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114159190613ca3565b905042826020015167ffffffffffffffff161115611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90613d1c565b60405180910390fd5b600061147989846101000151610972565b9050878110156114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590613dae565b60405180910390fd5b600083610100015190506114d48a8a8386612a3b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611531929190613dce565b600060405180830381600087803b15801561154b57600080fd5b505af115801561155f573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600d548361158791906139f7565b6115919190613e26565b9050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611641612500565b308460800135856060013586600001602081019061165f9190613e6c565b876020013588604001356040518863ffffffff1660e01b815260040161168b9796959493929190613ec1565b600060405180830381600087803b1580156116a557600080fd5b505af11580156116b9573d6000803e3d6000fd5b5050505050565b6116c8612279565b6116d0610dfd565b15611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170790613f7c565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611753612500565b60405161176091906132d7565b60405180910390a1565b611772612279565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ab57600080fd5b60001515600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461180857600080fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61186b610dfd565b156118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a290613f7c565b60405180910390fd5b60006118ba8360200135611574565b9050600c5483602001351015611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90613fe8565b60405180910390fd5b8060025401600281905550611918612500565b73ffffffffffffffffffffffffffffffffffffffff16836060016020810190611941919061315b565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90614054565b60405180910390fd5b60048360e00160208101906119ac9190613e6c565b60ff16106119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e6906140c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040016020810190611a1a919061315b565b73ffffffffffffffffffffffffffffffffffffffff1603611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a679061412c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16836040016020810190611a9a919061315b565b73ffffffffffffffffffffffffffffffffffffffff1603611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae790614198565b60405180910390fd5b611af8612500565b73ffffffffffffffffffffffffffffffffffffffff16836040016020810190611b21919061315b565b73ffffffffffffffffffffffffffffffffffffffff1603611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90614204565b60405180910390fd5b6000836020013503611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590614270565b60405180910390fd5b4283608001600060038110611bd657611bd5614290565b5b602002016020810190611be991906142d4565b67ffffffffffffffff161015611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b9061434d565b60405180910390fd5b82608001600060038110611c4b57611c4a614290565b5b602002016020810190611c5e91906142d4565b67ffffffffffffffff1683608001600160038110611c7f57611c7e614290565b5b602002016020810190611c9291906142d4565b67ffffffffffffffff1611611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906143b9565b60405180910390fd5b600083608001600260038110611cf557611cf4614290565b5b602002016020810190611d0891906142d4565b67ffffffffffffffff161480611d84575082608001600060038110611d3057611d2f614290565b5b602002016020810190611d4391906142d4565b67ffffffffffffffff1683608001600260038110611d6457611d63614290565b5b602002016020810190611d7791906142d4565b67ffffffffffffffff1611155b611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba90614425565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611e22611df5612500565b3086602001358473ffffffffffffffffffffffffffffffffffffffff16612bf8909392919063ffffffff16565b611e78611e2d612500565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff16612bf8909392919063ffffffff16565b611e80612f7f565b84608001600060038110611e9757611e96614290565b5b602002016020810190611eaa91906142d4565b85608001600160038110611ec157611ec0614290565b5b602002016020810190611ed491906142d4565b0367ffffffffffffffff16816000018181525050806000015185602001351015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614491565b60405180910390fd5b60008082600001518760200135611f4a91906144b1565b03611f585760009050611f6f565b81600001518660200135611f6c91906144b1565b90505b81600001518660200135611f839190613e26565b8260200181815250506000600354905060405180608001604052808460200151815260200188602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505060016003540160038190555061202a818888612c7a565b50505050505050565b61203b612f99565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120eb612279565b80600c8190555050565b600d5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612129612279565b6107d0600d541115612170576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121679061452e565b60405180910390fd5b80600d8190555050565b60025481565b612188612279565b80600e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b6121c9612279565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222f906145c0565b60405180910390fd5b61224181612975565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612274612500565b905090565b612281612500565b73ffffffffffffffffffffffffffffffffffffffff1661229f6120b9565b73ffffffffffffffffffffffffffffffffffffffff16146122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec9061462c565b60405180910390fd5b565b612371838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161232a92919061464c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d10565b505050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff166123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d3906136f7565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161243991906131c4565b600060405180830381865afa158015612456573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061247f91906139ae565b9050806020015167ffffffffffffffff1642116124a05760009250506124fa565b806040015167ffffffffffffffff164210156124d857806020015167ffffffffffffffff16426124d09190613677565b9250506124fa565b806020015181604001516124ec9190614675565b67ffffffffffffffff169250505b50919050565b6000601460003690501015801561251c575061251b33610da4565b5b1561253057601436033560601c9050612534565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161259491906131c4565b600060405180830381865afa1580156125b1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125da91906139ae565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161263991906131c4565b602060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a9190613ca3565b905042826060015167ffffffffffffffff1611156126cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c4906146fd565b60405180910390fd5b42826040015167ffffffffffffffff16101561271e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271590614769565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff16612741612500565b73ffffffffffffffffffffffffffffffffffffffff1614801561276d5750600182610140015160ff1614155b80156127825750600382610140015160ff1614155b1561278c57600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff166127b0612500565b73ffffffffffffffffffffffffffffffffffffffff161480156127dc5750600282610140015160ff1614155b80156127f15750600382610140015160ff1614155b156127fb57600080fd5b600081905060008190506000612815868660c00151610972565b9050600061282887876101000151610972565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b8152600401612887929190613dce565b600060405180830381600087803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461293457612933866101000151828573ffffffffffffffffffffffffffffffffffffffff166122f79092919063ffffffff16565b5b6000821461296c5761296b8660c00151838573ffffffffffffffffffffffffffffffffffffffff166122f79092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060006007600087815260200190815260200160002060020154905084818360200151612ac29190613a39565b612acc9190613677565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612b635760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612ba085600e5488612b7a9190613677565b8373ffffffffffffffffffffffffffffffffffffffff166122f79092919063ffffffff16565b612bef600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e548373ffffffffffffffffffffffffffffffffffffffff166122f79092919063ffffffff16565b50505050505050565b612c74848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612c2d93929190614789565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d10565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612cd9939291906149a4565b600060405180830381600087803b158015612cf357600080fd5b505af1158015612d07573d6000803e3d6000fd5b50505050505050565b6000612d3b828473ffffffffffffffffffffffffffffffffffffffff16612da790919063ffffffff16565b90506000815114158015612d60575080806020019051810190612d5e9190614a10565b155b15612da257826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612d9991906132d7565b60405180910390fd5b505050565b6060612db583836000612dbd565b905092915050565b606081471015612e0457306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612dfb91906132d7565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612e2d9190614a84565b60006040518083038185875af1925050503d8060008114612e6a576040519150601f19603f3d011682016040523d82523d6000602084013e612e6f565b606091505b5091509150612e7f868383612e8a565b925050509392505050565b606082612e9f57612e9a82612f19565b612f11565b60008251148015612ec7575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612f0957836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612f0091906132d7565b60405180910390fd5b819050612f12565b5b9392505050565b600081511115612f2c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613008613003612ffe84612fc3565b612fe3565b612fc3565b9050919050565b600061301a82612fed565b9050919050565b600061302c8261300f565b9050919050565b61303c81613021565b82525050565b60006020820190506130576000830184613033565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61308481613071565b811461308f57600080fd5b50565b6000813590506130a18161307b565b92915050565b60006130b282612fc3565b9050919050565b6130c2816130a7565b81146130cd57600080fd5b50565b6000813590506130df816130b9565b92915050565b600080604083850312156130fc576130fb613067565b5b600061310a85828601613092565b925050602061311b858286016130d0565b9150509250929050565b60008115159050919050565b61313a81613125565b82525050565b60006020820190506131556000830184613131565b92915050565b60006020828403121561317157613170613067565b5b600061317f848285016130d0565b91505092915050565b60006020828403121561319e5761319d613067565b5b60006131ac84828501613092565b91505092915050565b6131be81613071565b82525050565b60006020820190506131d960008301846131b5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132195780820151818401526020810190506131fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000613241826131df565b61324b81856131ea565b935061325b8185602086016131fb565b61326481613225565b840191505092915050565b600060208201905081810360008301526132898184613236565b905092915050565b61329a816130a7565b82525050565b60006060820190506132b560008301866131b5565b6132c260208301856131b5565b6132cf6040830184613291565b949350505050565b60006020820190506132ec6000830184613291565b92915050565b6000806040838503121561330957613308613067565b5b600061331785828601613092565b925050602061332885828601613092565b9150509250929050565b600080fd5b600060a0828403121561334d5761334c613332565b5b81905092915050565b600060a0828403121561336c5761336b613067565b5b600061337a84828501613337565b91505092915050565b6000610100828403121561339a57613399613332565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133e582613225565b810181811067ffffffffffffffff82111715613404576134036133ad565b5b80604052505050565b600061341761305d565b905061342382826133dc565b919050565b600067ffffffffffffffff821115613443576134426133ad565b5b61344c82613225565b9050602081019050919050565b82818337600083830152505050565b600061347b61347684613428565b61340d565b905082815260208101848484011115613497576134966133a8565b5b6134a2848285613459565b509392505050565b600082601f8301126134bf576134be6133a3565b5b81356134cf848260208601613468565b91505092915050565b60008061012083850312156134f0576134ef613067565b5b60006134fe85828601613383565b92505061010083013567ffffffffffffffff8111156135205761351f61306c565b5b61352c858286016134aa565b9150509250929050565b61353f81613071565b82525050565b61354e81613125565b82525050565b60808201600082015161356a6000850182613536565b50602082015161357d6020850182613536565b5060408201516135906040850182613536565b5060608201516135a36060850182613545565b50505050565b60006080820190506135be6000830184613554565b92915050565b60006135cf8261300f565b9050919050565b6135df816135c4565b82525050565b60006020820190506135fa60008301846135d6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061363a82613071565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366c5761366b613600565b5b600182019050919050565b600061368282613071565b915061368d83613071565b92508282039050818111156136a5576136a4613600565b5b92915050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006136e16015836131ea565b91506136ec826136ab565b602082019050919050565b60006020820190508181036000830152613710816136d4565b9050919050565b600080fd5b600080fd5b6000815190506137308161307b565b92915050565b600067ffffffffffffffff82169050919050565b61375381613736565b811461375e57600080fd5b50565b6000815190506137708161374a565b92915050565b600081519050613785816130b9565b92915050565b600063ffffffff82169050919050565b6137a48161378b565b81146137af57600080fd5b50565b6000815190506137c18161379b565b92915050565b600060ff82169050919050565b6137dd816137c7565b81146137e857600080fd5b50565b6000815190506137fa816137d4565b92915050565b600061381361380e84613428565b61340d565b90508281526020810184848401111561382f5761382e6133a8565b5b61383a8482856131fb565b509392505050565b600082601f830112613857576138566133a3565b5b8151613867848260208601613800565b91505092915050565b6000610180828403121561388757613886613717565b5b61389261018061340d565b905060006138a284828501613721565b60008301525060206138b684828501613761565b60208301525060406138ca84828501613761565b60408301525060606138de84828501613761565b60608301525060806138f284828501613761565b60808301525060a061390684828501613721565b60a08301525060c061391a84828501613776565b60c08301525060e061392e848285016137b2565b60e08301525061010061394384828501613776565b61010083015250610120613959848285016137eb565b6101208301525061014061396f848285016137eb565b6101408301525061016082015167ffffffffffffffff8111156139955761399461371c565b5b6139a184828501613842565b6101608301525092915050565b6000602082840312156139c4576139c3613067565b5b600082015167ffffffffffffffff8111156139e2576139e161306c565b5b6139ee84828501613870565b91505092915050565b6000613a0282613071565b9150613a0d83613071565b9250828202613a1b81613071565b91508282048414831517613a3257613a31613600565b5b5092915050565b6000613a4482613071565b9150613a4f83613071565b9250828201905080821115613a6757613a66613600565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613aa36014836131ea565b9150613aae82613a6d565b602082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b2057607f821691505b602082108103613b3357613b32613ad9565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b956022836131ea565b9150613ba082613b39565b604082019050919050565b60006020820190508181036000830152613bc481613b88565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613c01601b836131ea565b9150613c0c82613bcb565b602082019050919050565b60006020820190508181036000830152613c3081613bf4565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c6d600e836131ea565b9150613c7882613c37565b602082019050919050565b60006020820190508181036000830152613c9c81613c60565b9050919050565b600060208284031215613cb957613cb8613067565b5b6000613cc784828501613776565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613d066012836131ea565b9150613d1182613cd0565b602082019050919050565b60006020820190508181036000830152613d3581613cf9565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d986024836131ea565b9150613da382613d3c565b604082019050919050565b60006020820190508181036000830152613dc781613d8b565b9050919050565b6000604082019050613de360008301856131b5565b613df060208301846131b5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e3182613071565b9150613e3c83613071565b925082613e4c57613e4b613df7565b5b828204905092915050565b600081359050613e66816137d4565b92915050565b600060208284031215613e8257613e81613067565b5b6000613e9084828501613e57565b91505092915050565b613ea2816137c7565b82525050565b6000819050919050565b613ebb81613ea8565b82525050565b600060e082019050613ed6600083018a613291565b613ee36020830189613291565b613ef060408301886131b5565b613efd60608301876131b5565b613f0a6080830186613e99565b613f1760a0830185613eb2565b613f2460c0830184613eb2565b98975050505050505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613f666010836131ea565b9150613f7182613f30565b602082019050919050565b60006020820190508181036000830152613f9581613f59565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613fd2600d836131ea565b9150613fdd82613f9c565b602082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b600061403e600c836131ea565b915061404982614008565b602082019050919050565b6000602082019050818103600083015261406d81614031565b9050919050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b60006140aa600d836131ea565b91506140b582614074565b602082019050919050565b600060208201905081810360008301526140d98161409d565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b6000614116601a836131ea565b9150614121826140e0565b602082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000614182601d836131ea565b915061418d8261414c565b602082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006141ee6014836131ea565b91506141f9826141b8565b602082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b600061425a600f836131ea565b915061426582614224565b602082019050919050565b600060208201905081810360008301526142898161424d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000813590506142ce8161374a565b92915050565b6000602082840312156142ea576142e9613067565b5b60006142f8848285016142bf565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006143376020836131ea565b915061434282614301565b602082019050919050565b600060208201905081810360008301526143668161432a565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b60006143a36017836131ea565b91506143ae8261436d565b602082019050919050565b600060208201905081810360008301526143d281614396565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b600061440f6011836131ea565b915061441a826143d9565b602082019050919050565b6000602082019050818103600083015261443e81614402565b9050919050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b600061447b601f836131ea565b915061448682614445565b602082019050919050565b600060208201905081810360008301526144aa8161446e565b9050919050565b60006144bc82613071565b91506144c783613071565b9250826144d7576144d6613df7565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b60006145186011836131ea565b9150614523826144e2565b602082019050919050565b600060208201905081810360008301526145478161450b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145aa6026836131ea565b91506145b58261454e565b604082019050919050565b600060208201905081810360008301526145d98161459d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146166020836131ea565b9150614621826145e0565b602082019050919050565b6000602082019050818103600083015261464581614609565b9050919050565b60006040820190506146616000830185613291565b61466e60208301846131b5565b9392505050565b600061468082613736565b915061468b83613736565b9250828203905067ffffffffffffffff8111156146ab576146aa613600565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b60006146e7600e836131ea565b91506146f2826146b1565b602082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b6000614753600f836131ea565b915061475e8261471d565b602082019050919050565b6000602082019050818103600083015261478281614746565b9050919050565b600060608201905061479e6000830186613291565b6147ab6020830185613291565b6147b860408301846131b5565b949350505050565b60006147cf60208401846130d0565b905092915050565b6147e0816130a7565b82525050565b60006147f56020840184613092565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b61483181613736565b82525050565b60006148438383614828565b60208301905092915050565b600061485e60208401846142bf565b905092915050565b6000602082019050919050565b61487c81614808565b6148868184614813565b92506148918261481e565b8060005b838110156148ca576148a7828461484f565b6148b18782614837565b96506148bc83614866565b925050600181019050614895565b505050505050565b60006148e16020840184613e57565b905092915050565b6148f2816137c7565b82525050565b610100820161490a60008301836147c0565b61491760008501826147d7565b5061492560208301836147e6565b6149326020850182613536565b5061494060408301836147c0565b61494d60408501826147d7565b5061495b60608301836147c0565b61496860608501826147d7565b5061497660808301836147fd565b6149836080850182614873565b5061499160e08301836148d2565b61499e60e08501826148e9565b50505050565b6000610140820190506149ba60008301866131b5565b6149c760208301856148f8565b8181036101208301526149da8184613236565b9050949350505050565b6149ed81613125565b81146149f857600080fd5b50565b600081519050614a0a816149e4565b92915050565b600060208284031215614a2657614a25613067565b5b6000614a34848285016149fb565b91505092915050565b600081519050919050565b600081905092915050565b6000614a5e82614a3d565b614a688185614a48565b9350614a788185602086016131fb565b80840191505092915050565b6000614a908284614a53565b91508190509291505056fea2646970667358221220d6dcb8ef88d3ed3044f8640e1caa5bf9753108066415337d608bf55e8acdea8c64736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c1