0 txs
0 calls
constructor
constructor(address votingEscrow, uint256 startTime)
functions
getDomainSeparator
viewfunction getDomainSeparator() view returns (bytes32)
getNextNonce
viewfunction getNextNonce(address account) view returns (uint256)
getTimeCursor
viewfunction getTimeCursor() view returns (uint256)
getTokenLastBalance
viewfunction getTokenLastBalance(address token) view returns (uint256)
getTokensDistributedInWeek
viewfunction getTokensDistributedInWeek(address token, uint256 timestamp) view returns (uint256)
getTokenTimeCursor
viewfunction getTokenTimeCursor(address token) view returns (uint256)
getTotalSupplyAtTimestamp
viewfunction getTotalSupplyAtTimestamp(uint256 timestamp) view returns (uint256)
getUserBalanceAtTimestamp
viewfunction getUserBalanceAtTimestamp(address user, uint256 timestamp) view returns (uint256)
getUserTimeCursor
viewfunction getUserTimeCursor(address user) view returns (uint256)
getUserTokenTimeCursor
viewfunction getUserTokenTimeCursor(address user, address token) view returns (uint256)
getVotingEscrow
viewfunction getVotingEscrow() view returns (address)
isOnlyCallerEnabled
viewfunction isOnlyCallerEnabled(address user) view returns (bool)
checkpoint
nonpayablefunction checkpoint()
checkpointToken
nonpayablefunction checkpointToken(address token)
checkpointTokens
nonpayablefunction checkpointTokens(address[] tokens)
checkpointUser
nonpayablefunction checkpointUser(address user)
claimToken
nonpayablefunction claimToken(address user, address token) returns (uint256)
claimTokens
nonpayablefunction claimTokens(address user, address[] tokens) returns (uint256[])
depositToken
nonpayablefunction depositToken(address token, uint256 amount)
depositTokens
nonpayablefunction depositTokens(address[] tokens, uint256[] amounts)
setOnlyCallerCheck
nonpayablefunction setOnlyCallerCheck(bool enabled)
setOnlyCallerCheckWithSignature
nonpayablefunction setOnlyCallerCheckWithSignature(address user, bool enabled, bytes signature)
events
OnlyCallerOptIn
event OnlyCallerOptIn(address user, bool enabled)
TokenCheckpointed
event TokenCheckpointed(address token, uint256 amount, uint256 lastCheckpointTimestamp)
TokensClaimed
event TokensClaimed(address user, address token, uint256 amount, uint256 userTokenTimeCursor)
errors
No errors.
creation bytecode
0x6101206040523480156200001257600080fd5b5060405162003921380380620039218339818101604052810190620000389190620002d7565b6040518060400160405280600e81526020017f4665654469737472696275746f720000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250818051906020012060808181525050808051906020012060a081815250507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c08181525050505060016002819055508173ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200013c816200029060201b60201c565b9050600062000151426200029060201b60201c565b90508082101562000199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019090620003ff565b60405180910390fd5b80821415620002775760008373ffffffffffffffffffffffffffffffffffffffff1663bd85b039836040518263ffffffff1660e01b8152600401620001df919062000443565b60206040518083038186803b158015620001f857600080fd5b505afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000233919062000318565b1162000276576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026d9062000421565b60405180910390fd5b5b81610100818152505081600381905550505050620004f7565b600062093a80808381620002a057fe5b04029050919050565b600081519050620002ba81620004c3565b92915050565b600081519050620002d181620004dd565b92915050565b60008060408385031215620002eb57600080fd5b6000620002fb85828601620002a9565b92505060206200030e85828601620002c0565b9150509250929050565b6000602082840312156200032b57600080fd5b60006200033b84828501620002c0565b91505092915050565b60006200035360208362000460565b91507f43616e6e6f74207374617274206265666f72652063757272656e74207765656b6000830152602082019050919050565b60006200039560288362000460565b91507f5a65726f20746f74616c20737570706c7920726573756c747320696e206c6f7360008301527f7420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b620003f981620004b9565b82525050565b600060208201905081810360008301526200041a8162000344565b9050919050565b600060208201905081810360008301526200043c8162000386565b9050919050565b60006020820190506200045a6000830184620003ee565b92915050565b600082825260208201905092915050565b60006200047e8262000499565b9050919050565b6000620004928262000471565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620004ce8162000485565b8114620004da57600080fd5b50565b620004e881620004b9565b8114620004f457600080fd5b50565b60805160a05160c05160e05160601c610100516133ba6200056760003980610cce5280610e2a5280610e8f52806112205250806104835280610b9c5280610d745280610f6052806118d752806119705280611f71525080611e52525080611e94525080611e7352506133ba6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806390193b7c116100b8578063ca31879d1161007c578063ca31879d14610399578063d3dc4ca1146103c9578063de681faf146103f9578063e811f44b14610429578063ed24911d14610445578063fcaa54ee1461046357610142565b806390193b7c146102e3578063905d10ac14610313578063a1648aa51461032f578063acbc14281461035f578063c2c4c5c11461038f57610142565b80634f3c50901161010a5780634f3c5090146101e95780637b8d6221146102195780638050a7ee1461023557806382aa5ad414610265578063876e69a11461028357806388720467146102b357610142565b806308b0308a1461014757806314866e08146101655780632308805b14610181578063338b5dea146101b15780633902b9bc146101cd575b600080fd5b61014f61047f565b60405161015c9190613060565b60405180910390f35b61017f600480360381019061017a91906127c3565b6104a7565b005b61019b60048036038101906101969190612a58565b6104c3565b6040516101a891906130bb565b60405180910390f35b6101cb60048036038101906101c69190612a81565b61053d565b005b6101e760048036038101906101e29190612a58565b610594565b005b61020360048036038101906101fe9190612ae6565b6105b2565b60405161021091906130bb565b60405180910390f35b610233600480360381019061022e9190612968565b6105cf565b005b61024f600480360381019061024a91906128ab565b6106ca565b60405161025c91906130bb565b60405180910390f35b61026d6106de565b60405161027a91906130bb565b60405180910390f35b61029d600480360381019061029891906127c3565b6106e8565b6040516102aa91906130bb565b60405180910390f35b6102cd60048036038101906102c891906127ec565b610752565b6040516102da9190612ec4565b60405180910390f35b6102fd60048036038101906102f891906127c3565b610863565b60405161030a91906130bb565b60405180910390f35b61032d60048036038101906103289190612923565b6108ab565b005b610349600480360381019061034491906127c3565b61090a565b6040516103569190612ee6565b60405180910390f35b61037960048036038101906103749190612a58565b610960565b60405161038691906130bb565b60405180910390f35b6103976109ca565b005b6103b360048036038101906103ae91906128ab565b6109e4565b6040516103c091906130bb565b60405180910390f35b6103e360048036038101906103de9190612a81565b610a35565b6040516103f091906130bb565b60405180910390f35b610413600480360381019061040e91906128e7565b610a90565b60405161042091906130bb565b60405180910390f35b610443600480360381019061043e91906129dd565b610aeb565b005b61044d610af8565b60405161045a9190612f01565b60405180910390f35b61047d60048036038101906104789190612844565b610b07565b005b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6104af610b7e565b6104b881610b98565b6104c061116a565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b610545610b7e565b610550826000611174565b61057d3330838573ffffffffffffffffffffffffffffffffffffffff16611616909392919063ffffffff16565b610588826001611174565b61059061116a565b5050565b61059c610b7e565b6105a7816001611174565b6105af61116a565b50565b600060046000838152602001908152602001600020549050919050565b6105d7610b7e565b6105e7848490508383905061169f565b600084849050905060005b818110156106ba5761062586868381811061060957fe5b905060200201602081019061061e9190612a58565b6000611174565b610684333086868581811061063657fe5b9050602002013589898681811061064957fe5b905060200201602081019061065e9190612a58565b73ffffffffffffffffffffffffffffffffffffffff16611616909392919063ffffffff16565b6106af86868381811061069357fe5b90506020020160208101906106a89190612a58565b6001611174565b8060010190506105f2565b50506106c461116a565b50505050565b60006106d683836116b0565b905092915050565b6000600354905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b606061075c610b7e565b8361076681611818565b61076e6118a8565b61077785610b98565b600084849050905060608167ffffffffffffffff8111801561079857600080fd5b506040519080825280602002602001820160405280156107c75781602001602082028036833780820191505090505b50905060005b8281101561084d576108008787838181106107e457fe5b90506020020160208101906107f99190612a58565b6000611174565b61082a8888888481811061081057fe5b90506020020160208101906108259190612a58565b611a4e565b82828151811061083657fe5b6020026020010181815250508060010190506107cd565b5080935050505061085c61116a565b9392505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108b3610b7e565b600082829050905060005b818110156108fc576108f18484838181106108d557fe5b90506020020160208101906108ea9190612a58565b6001611174565b8060010190506108be565b505061090661116a565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6109d2610b7e565b6109da6118a8565b6109e261116a565b565b60006109ee610b7e565b826109f881611818565b610a006118a8565b610a0984610b98565b610a14836000611174565b6000610a208585611a4e565b90508092505050610a2f61116a565b92915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610af53382611dba565b50565b6000610b02611e4e565b905090565b60007fbd291ffccec065968fe20c5f8debdad73ab50837733f357eeae8814178015a908484610b3587610863565b604051602001610b489493929190612f1c565b604051602081830303815290604052805190602001209050610b6e8482846101f8611eeb565b610b788484611dba565b50505050565b610b8f600280541415610190611f1e565b60028081905550565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663010ae757836040518263ffffffff1660e01b8152600401610bf39190612ddb565b60206040518083038186803b158015610c0b57600080fd5b505afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c439190612b0f565b90506000811415610c545750611167565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050600080821415610cfc57610cf5857f0000000000000000000000000000000000000000000000000000000000000000600087611f31565b9050610d5c565b428210610d0c5750505050611167565b8260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060148185031115610d5b57610d5885838387611f31565b90505b5b6000811415610d6a57600190505b610d72612591565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166328d09d4787846040518363ffffffff1660e01b8152600401610dcd929190612e9b565b60806040518083038186803b158015610de557600080fd5b505afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d9190612abd565b90506000831415610eee577f00000000000000000000000000000000000000000000000000000000000000004211610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e819061309b565b60405180910390fd5b610ec07f0000000000000000000000000000000000000000000000000000000000000000610ebb8360400151612051565b61206b565b9250828460000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610ef6612591565b60005b60328110156110ec5782604001518510158015610f165750868411155b156110115760018401935082915086841115610f5e5760405180608001604052806000600f0b81526020016000600f0b8152602001600081526020016000815250925061100c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166328d09d4789866040518363ffffffff1660e01b8152600401610fb9929190612e9b565b60806040518083038186803b158015610fd157600080fd5b505afa158015610fe5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110099190612abd565b92505b6110e1565b42851061101d576110ec565b6000826040015186039050600081846020015102600f0b8460000151600f0b13611048576000611059565b81846020015102846000015103600f0b5b905060008114801561106a57508886115b156110815761107842612051565b965050506110ec565b80600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000208190555062093a808701965050505b806001019050610ef9565b506001830367ffffffffffffffff168560000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550838560000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050505050505b50565b6001600281905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050600080821415611285574291506111f44261207e565b8360000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f00000000000000000000000000000000000000000000000000000000000000004211611280576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112779061309b565b60405180910390fd5b6112d8565b8142039050836112d757600061129a8361207e565b6112a34261207e565b149050600062015180426112b642612051565b031090508180156112c5575080155b156112d4575050505050611612565b50505b5b428360000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161133e9190612ddb565b60206040518083038186803b15801561135657600080fd5b505afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612b0f565b905060006113d78560000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168361209690919063ffffffff16565b905060008114156113ec575050505050611612565b6fffffffffffffffffffffffffffffffff8016821115611441576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114389061307b565b60405180910390fd5b818560000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060006114878561207e565b9050600080600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b60148110156115cd5762093a808401925082421015611555576000871480156114f857508742145b15611522578482600086815260200190815260200160002060008282540192505081905550611550565b8688420386028161152f57fe5b04826000868152602001908152602001600020600082825401925050819055505b6115cd565b60008714801561156457508783145b1561158e5784826000868152602001908152602001600020600082825401925050819055506115bc565b8688840386028161159b57fe5b04826000868152602001908152602001600020600082825401925050819055505b8297508293508060010190506114d0565b507f9b7f1a85a4c9b4e59e1b6527d9969c50cdfb3a1a467d0c4a51fb0ed8bf07f1308a858960405161160193929190613029565b60405180910390a150505050505050505b5050565b611699846323b872dd60e01b85858560405160240161163793929190612df6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120ac565b50505050565b6116ac8183146067611f1e565b5050565b600080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156117445780915050611812565b61180e600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661206b565b9150505b92915050565b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118a5576118a48173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610191611f1e565b5b50565b6000600354905060006118ba4261207e565b9050808211806118c957504281145b156118d5575050611a4c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b5050505060005b6014811015611a41578183111561196e57611a41565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bd85b039846040518263ffffffff1660e01b81526004016119c791906130bb565b60206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a179190612b0f565b600460008581526020019081526020016000208190555062093a8083019250806001019050611958565b508160038190555050505b565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000611a9e85856116b0565b90506000611b49611b19611b14600354600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16612160565b612051565b611b448560000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661207e565b612160565b90506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b6014811015611c4857848610611bee57611c48565b600460008781526020019081526020016000205483600088815260200190815260200160002054856000898152602001908152602001600020540281611c3057fe5b048201915062093a8086019550806001019050611bd9565b5084600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000811115611dab57808660000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16038660000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550611d6d89828a73ffffffffffffffffffffffffffffffffffffffff166121739092919063ffffffff16565b7fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de689898388604051611da29493929190612e56565b60405180910390a15b80965050505050505092915050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fac9874a7a931a3f5c9f202c6d9cf40de5d21506993c9f9c38ca8265add89584c8282604051611e42929190612e2d565b60405180910390a15050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611ebb6121f9565b30604051602001611ed0959493929190612f61565b60405160208183030381529060405280519060200120905090565b611f188484847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85612201565b50505050565b81611f2d57611f2c81612286565b5b5050565b600080839050600083905060005b608081101561204357818310611f5457612043565b60006002808486010181611f6457fe5b049050611f6f612591565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166328d09d478b846040518363ffffffff1660e01b8152600401611fca929190612e9b565b60806040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612abd565b90508881604001511161202f57819450612036565b6001820393505b5050806001019050611f3f565b508192505050949350505050565b6000612064600162093a8084010361207e565b9050919050565b6000818310828403028303905092915050565b600062093a8080838161208d57fe5b04029050919050565b60006120a483836001612299565b905092915050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516120d59190612d8d565b6000604051808303816000865af19150503d8060008114612112576040519150601f19603f3d011682016040523d82523d6000602084013e612117565b606091505b5091509150600082141561212f573d6000803e3d6000fd5b61215a6000825114806121525750818060200190518101906121519190612a06565b5b6101a2611f1e565b50505050565b6000818311828403028303905092915050565b6121f48363a9059cbb60e01b8484604051602401612192929190612e9b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120ac565b505050565b600046905090565b600061220c856122ba565b905061222261221c8783876122f3565b83611f1e565b612231428410156101b8611f1e565b60016000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505050505050565b612296816242414c60e81b612407565b50565b60006122a88484111583611f1e565b60008385039050809150509392505050565b60006122c4611e4e565b826040516020016122d6929190612da4565b604051602081830303815290604052805190602001209050919050565b60006123148473ffffffffffffffffffffffffffffffffffffffff16612487565b156123f257631626ba7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff16631626ba7e85856040518363ffffffff1660e01b815260040161237b929190612fb4565b60206040518083038186803b15801561239357600080fd5b505afa1580156123a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cb9190612a2f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050612400565b6123fd84848461249a565b90505b9392505050565b60008160e81c62ffffff1690506030600a840601600a840493506030600a850601600a850494506030600a8606018360081b60230160181b8160101b8360081b850101810160c81b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260076024528060445260646000fd5b600080823b905060008111915050919050565b60006124ac60418351146101b9611f1e565b60008060006020850151925060408501519150606085015160001a90506000600187838686604051600081526020016040526040516124ee9493929190612fe4565b6020604051602081039080840390855afa158015612510573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561258457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b9450505050509392505050565b60405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525090565b6000813590506125ce816132fa565b92915050565b60008083601f8401126125e657600080fd5b8235905067ffffffffffffffff8111156125ff57600080fd5b60208301915083602082028301111561261757600080fd5b9250929050565b60008083601f84011261263057600080fd5b8235905067ffffffffffffffff81111561264957600080fd5b60208301915083602082028301111561266157600080fd5b9250929050565b60008135905061267781613311565b92915050565b60008151905061268c81613311565b92915050565b6000815190506126a181613328565b92915050565b600082601f8301126126b857600080fd5b81356126cb6126c682613103565b6130d6565b915080825260208301602083018583830111156126e757600080fd5b6126f283828461329d565b50505092915050565b60008135905061270a8161333f565b92915050565b60008151905061271f81613356565b92915050565b60006080828403121561273757600080fd5b61274160806130d6565b9050600061275184828501612710565b600083015250602061276584828501612710565b6020830152506040612779848285016127ae565b604083015250606061278d848285016127ae565b60608301525092915050565b6000813590506127a88161336d565b92915050565b6000815190506127bd8161336d565b92915050565b6000602082840312156127d557600080fd5b60006127e3848285016125bf565b91505092915050565b60008060006040848603121561280157600080fd5b600061280f868287016125bf565b935050602084013567ffffffffffffffff81111561282c57600080fd5b612838868287016125d4565b92509250509250925092565b60008060006060848603121561285957600080fd5b6000612867868287016125bf565b935050602061287886828701612668565b925050604084013567ffffffffffffffff81111561289557600080fd5b6128a1868287016126a7565b9150509250925092565b600080604083850312156128be57600080fd5b60006128cc858286016125bf565b92505060206128dd858286016126fb565b9150509250929050565b600080604083850312156128fa57600080fd5b6000612908858286016125bf565b925050602061291985828601612799565b9150509250929050565b6000806020838503121561293657600080fd5b600083013567ffffffffffffffff81111561295057600080fd5b61295c858286016125d4565b92509250509250929050565b6000806000806040858703121561297e57600080fd5b600085013567ffffffffffffffff81111561299857600080fd5b6129a4878288016125d4565b9450945050602085013567ffffffffffffffff8111156129c357600080fd5b6129cf8782880161261e565b925092505092959194509250565b6000602082840312156129ef57600080fd5b60006129fd84828501612668565b91505092915050565b600060208284031215612a1857600080fd5b6000612a268482850161267d565b91505092915050565b600060208284031215612a4157600080fd5b6000612a4f84828501612692565b91505092915050565b600060208284031215612a6a57600080fd5b6000612a78848285016126fb565b91505092915050565b60008060408385031215612a9457600080fd5b6000612aa2858286016126fb565b9250506020612ab385828601612799565b9150509250929050565b600060808284031215612acf57600080fd5b6000612add84828501612725565b91505092915050565b600060208284031215612af857600080fd5b6000612b0684828501612799565b91505092915050565b600060208284031215612b2157600080fd5b6000612b2f848285016127ae565b91505092915050565b6000612b448383612d60565b60208301905092915050565b612b59816131ab565b82525050565b6000612b6a8261313f565b612b748185613162565b9350612b7f8361312f565b8060005b83811015612bb0578151612b978882612b38565b9750612ba283613155565b925050600181019050612b83565b5085935050505092915050565b612bc6816131bd565b82525050565b612bd5816131c9565b82525050565b612bec612be7826131c9565b6132df565b82525050565b6000612bfd8261314a565b612c078185613173565b9350612c178185602086016132ac565b612c20816132e9565b840191505092915050565b6000612c368261314a565b612c408185613184565b9350612c508185602086016132ac565b80840191505092915050565b612c6581613255565b82525050565b612c7481613279565b82525050565b6000612c876002836131a0565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000612cc7601e8361318f565b91507f4d6178696d756d20746f6b656e2062616c616e636520657863656564656400006000830152602082019050919050565b6000612d0760248361318f565b91507f46656520646973747269627574696f6e20686173206e6f74207374617274656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b612d698161323e565b82525050565b612d788161323e565b82525050565b612d8781613248565b82525050565b6000612d998284612c2b565b915081905092915050565b6000612daf82612c7a565b9150612dbb8285612bdb565b602082019150612dcb8284612bdb565b6020820191508190509392505050565b6000602082019050612df06000830184612b50565b92915050565b6000606082019050612e0b6000830186612b50565b612e186020830185612b50565b612e256040830184612d6f565b949350505050565b6000604082019050612e426000830185612b50565b612e4f6020830184612bbd565b9392505050565b6000608082019050612e6b6000830187612b50565b612e786020830186612c5c565b612e856040830185612d6f565b612e926060830184612d6f565b95945050505050565b6000604082019050612eb06000830185612b50565b612ebd6020830184612d6f565b9392505050565b60006020820190508181036000830152612ede8184612b5f565b905092915050565b6000602082019050612efb6000830184612bbd565b92915050565b6000602082019050612f166000830184612bcc565b92915050565b6000608082019050612f316000830187612bcc565b612f3e6020830186612b50565b612f4b6040830185612bbd565b612f586060830184612d6f565b95945050505050565b600060a082019050612f766000830188612bcc565b612f836020830187612bcc565b612f906040830186612bcc565b612f9d6060830185612d6f565b612faa6080830184612b50565b9695505050505050565b6000604082019050612fc96000830185612bcc565b8181036020830152612fdb8184612bf2565b90509392505050565b6000608082019050612ff96000830187612bcc565b6130066020830186612d7e565b6130136040830185612bcc565b6130206060830184612bcc565b95945050505050565b600060608201905061303e6000830186612c5c565b61304b6020830185612d6f565b6130586040830184612d6f565b949350505050565b60006020820190506130756000830184612c6b565b92915050565b6000602082019050818103600083015261309481612cba565b9050919050565b600060208201905081810360008301526130b481612cfa565b9050919050565b60006020820190506130d06000830184612d6f565b92915050565b6000604051905081810181811067ffffffffffffffff821117156130f957600080fd5b8060405250919050565b600067ffffffffffffffff82111561311a57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006131b68261321e565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061320a826131ab565b9050919050565b600081600f0b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061326082613267565b9050919050565b60006132728261321e565b9050919050565b60006132848261328b565b9050919050565b60006132968261321e565b9050919050565b82818337600083830152505050565b60005b838110156132ca5780820151818401526020810190506132af565b838111156132d9576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613303816131ab565b811461330e57600080fd5b50565b61331a816131bd565b811461332557600080fd5b50565b613331816131d3565b811461333c57600080fd5b50565b613348816131ff565b811461335357600080fd5b50565b61335f81613211565b811461336a57600080fd5b50565b6133768161323e565b811461338157600080fd5b5056fea26469706673582212207dc442d81b51b10a24f0f2ebfbd741e479e334a3f5ccf62f0f556cf953b473ae64736f6c63430007010033000000000000000000000000286f0b0765176c5e31d6ec0c2a18627614b5f0b1000000000000000000000000000000000000000000000000000000006478d8dd