132 txs
669 calls
constructor
constructor(address _governance, address _bold, address _bribeToken, address _board, address _gauge)
functions
_questSettings
viewfunction _questSettings() view returns (uint256 minRewardPerVote, uint256 maxRewardPerVote, uint8 voteType, uint8 closeType)
bold
viewfunction bold() view returns (address)
bribeByEpoch
viewfunction bribeByEpoch(uint256) view returns (uint256 remainingBoldAmount, uint256 remainingBribeTokenAmount, uint256 claimedVotes)
bribeToken
viewfunction bribeToken() view returns (address)
claimedBribeAtEpoch
viewfunction claimedBribeAtEpoch(address, uint256) view returns (bool)
DEFAULT_DURATION
viewfunction DEFAULT_DURATION() view returns (uint48)
getMostRecentTotalEpoch
viewfunction getMostRecentTotalEpoch() view returns (uint256)
getMostRecentUserEpoch
viewfunction getMostRecentUserEpoch(address _user) view returns (uint256)
governance
viewfunction governance() view returns (address)
lqtyAllocatedByUserAtEpoch
viewfunction lqtyAllocatedByUserAtEpoch(address _user, uint256 _epoch) view returns (uint256, uint256)
owner
viewfunction owner() view returns (address)
pendingBudget
viewfunction pendingBudget() view returns (uint256)
pendingOwner
viewfunction pendingOwner() view returns (address)
previousQuest
viewfunction previousQuest() view returns (uint256)
questBoard
viewfunction questBoard() view returns (address)
questSettings
viewfunction questSettings() view returns (tuple)
questVoterList
viewfunction questVoterList(uint256) view returns (address)
targetGauge
viewfunction targetGauge() view returns (address)
totalLQTYAllocatedByEpoch
viewfunction totalLQTYAllocatedByEpoch(uint256 _epoch) view returns (uint256, uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
claimBribes
nonpayablefunction claimBribes(tuple[] _claimData) returns (uint256 boldAmount, uint256 bribeTokenAmount)
depositBribe
nonpayablefunction depositBribe(uint256 _boldAmount, uint256 _bribeTokenAmount, uint256 _epoch)
onAfterAllocateLQTY
nonpayablefunction onAfterAllocateLQTY(uint256 _currentEpoch, address _user, tuple, tuple _allocation, tuple _initiativeState)
onClaimForInitiative
nonpayablefunction onClaimForInitiative(uint256, uint256)
onRegisterInitiative
nonpayablefunction onRegisterInitiative(uint256)
onUnregisterInitiative
nonpayablefunction onUnregisterInitiative(uint256)
process
nonpayablefunction process()
pullBudget
nonpayablefunction pullBudget()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateQuestRewardPerVote
nonpayablefunction updateQuestRewardPerVote(uint256 _minRewardPerVote, uint256 _maxRewardPerVote)
updateQuestSettings
nonpayablefunction updateQuestSettings(uint256 _minRewardPerVote, uint256 _maxRewardPerVote, uint8 _voteType, uint8 _closeType, address[] _voterList)
updateQuestTypeSettings
nonpayablefunction updateQuestTypeSettings(uint8 _voteType, uint8 _closeType, address[] _voterList)
events
ClaimBribe
event ClaimBribe(address user, uint256 epoch, uint256 boldAmount, uint256 bribeTokenAmount)
DepositBribe
event DepositBribe(address depositor, uint256 boldAmount, uint256 bribeTokenAmount, uint256 epoch)
ModifyLQTYAllocation
event ModifyLQTYAllocation(address user, uint256 epoch, uint256 lqtyAllocated, uint256 offset)
ModifyTotalLQTYAllocation
event ModifyTotalLQTYAllocation(uint256 epoch, uint256 totalLQTYAllocated, uint256 offset)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
QuestCreated
event QuestCreated(uint256 indexed questId)
SettingsRewardPerVoteUpdated
event SettingsRewardPerVoteUpdated(uint256 newMinRewardPerVote, uint256 newMaxRewardPerVote)
SettingsUpdated
event SettingsUpdated()
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CannotCreateQuest
error CannotCreateQuest()
FailedInnerCall
error FailedInnerCall()
IdIsZero
error IdIsZero()
ItemInList
error ItemInList()
ItemNotInList
error ItemNotInList()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x61012060405234801562000011575f80fd5b506040516200368f3803806200368f83398101604081905262000034916200029a565b33858585816001600160a01b0316816001600160a01b031603620000b35760405162461bcd60e51b815260206004820152602b60248201527f4272696265496e69746961746976653a2062726962652d746f6b656e2d63616e60448201526a1b9bdd0b58994b589bdb1960aa1b60648201526084015b60405180910390fd5b6001600160a01b0380841660c081905283821660e05290821661010052604080516346d62a6360e01b815290516346d62a63916004808201926020929091908290030181865afa1580156200010a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000130919062000306565b6080818152505060c0516001600160a01b031663a70b9f0c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000176573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019c919062000306565b60a0525050506001600160a01b038116620001cd57604051631e4fbdf760e01b81525f6004820152602401620000aa565b620001d8816200020f565b50600680546001600160a01b039384166001600160a01b03199182161790915560098054929093169116179055506200031e915050565b600580546001600160a01b03191690556200022a816200022d565b50565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b038116811462000295575f80fd5b919050565b5f805f805f60a08688031215620002af575f80fd5b620002ba866200027e565b9450620002ca602087016200027e565b9350620002da604087016200027e565b9250620002ea606087016200027e565b9150620002fa608087016200027e565b90509295509295909350565b5f6020828403121562000317575f80fd5b5051919050565b60805160a05160c05160e051610100516132d1620003be5f395f818161032c01528181610ad20152610e4101525f81816103ed01528181610a9001528181610dfa01528181611fe5015281816120750152818161246901526125b401525f8181610353015281816105f6015281816107ee015281816108ca01528181610f180152818161126b015261133a01525f61184e01525f61187901526132d15ff3fe608060405234801561000f575f80fd5b5060043610610201575f3560e01c806379ba509711610123578063c1932ea4116100b8578063e30c397811610088578063e89946e21161006e578063e89946e214610544578063f0f2698d1461058e578063f2fde38b14610596575f80fd5b8063e30c397814610513578063e6fc378614610531575f80fd5b8063c1932ea4146104b9578063c297fa0f146104cc578063c33fb877146104eb578063c9ea8f27146104f3575f80fd5b806392a55aef116100f357806392a55aef14610484578063955161cd1461028a578063bb2fe6461461049b578063bf5b0ad5146104a4575f80fd5b806379ba50971461040f5780637c1f36271461041757806381c4fea5146104535780638da5cb5b14610466575f80fd5b806358c93f78116101995780636012c588116101695780636012c5881461039057806363efdf4a146103a3578063715018a6146103e0578063727d0f35146103e8575f80fd5b806358c93f78146103275780635aa6e6751461034e5780635bab17b1146103755780635ed9ede214610388575f80fd5b80632695d74d116101d45780632695d74d1461028a5780632ddac0171461029d5780633c815549146102cb57806344d39c1b14610314575f80fd5b80630135d5331461020557806313122798146102425780631e18de1a146102625780631e41a0f814610277575b5f80fd5b610218610213366004612b09565b6105a9565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6006546102189073ffffffffffffffffffffffffffffffffffffffff1681565b610275610270366004612b20565b6105de565b005b610275610285366004612c86565b610686565b610275610298366004612b09565b6107d6565b600a54600b54600c546102bb92919060ff8082169161010090041684565b6040516102399493929190612d46565b6102f96102d9366004612b09565b5f6020819052908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610239565b610275610322366004612b20565b610878565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b610275610383366004612d7b565b6108c7565b610275610b00565b61027561039e366004612da4565b610b0a565b6103d06103b1366004612e15565b600160209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610239565b610275610cd8565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b610275610ce9565b61043e610425366004612b09565b5f90815260026020526040902080546001909101549091565b60408051928352602083019190915201610239565b61043e610461366004612e3d565b610d5d565b60045473ffffffffffffffffffffffffffffffffffffffff16610218565b61048d60075481565b604051908152602001610239565b61048d60085481565b6104ac610e6f565b6040516102399190612eac565b6102756104c7366004612f03565b610f00565b6104d4600281565b60405165ffffffffffff9091168152602001610239565b61027561102e565b6009546102189073ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff16610218565b61048d61053f366004612f8a565b61103e565b61043e610552366004612e15565b73ffffffffffffffffffffffffffffffffffffffff919091165f9081526003602090815260408083209383529290522080546001909101549091565b61048d61107b565b6102756105a4366004612f8a565b6110af565b600d81815481106105b8575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696265496e69746961746976653a20696e76616c69642d73656e6465720060448201526064015b60405180910390fd5b5050565b61068e61115f565b600c80548491907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156106cb576106cb612ce4565b0217905550600c80548391907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010083600281111561070e5761070e612ce4565b021790555061071e600d5f612aa2565b80515f5b818110156107a757600d83828151811061073e5761073e612fa3565b6020908102919091018101518254600180820185555f9485529290932090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921790915501610722565b506040517f7c98a0e54e3d959a008c6978e0f8492849c33c7075f4b35e00ef60c0088c3707905f90a150505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696265496e69746961746976653a20696e76616c69642d73656e646572006044820152606401610679565b50565b61088061115f565b600a829055600b81905560408051838152602081018390527f41e8d332520308cb3ae775505e40854c4d5d7ebbed7d0d337166ca60bf7e4db4910160405180910390a15050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610931573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109559190612fd0565b9050808210156109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696265496e69746961746976653a206e6f772d6f722d6675747572652d6560448201527f706f6368730000000000000000000000000000000000000000000000000000006064820152608401610679565b5f8281526020819052604081208054869290610a04908490613014565b90915550505f8281526020819052604081206001018054859290610a29908490613014565b90915550506040805133815260208101869052908101849052606081018390527f8da751404c1c12bd225230d318ca0913aab7a5f98c004ae97cf1b7072e7f119d9060800160405180910390a1610ab873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330876111b2565b610afa73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330866111b2565b50505050565b610b0861123b565b565b610b1261115f565b6040518060800160405280868152602001858152602001846002811115610b3b57610b3b612ce4565b8152602001836002811115610b5257610b52612ce4565b90528051600a9081556020820151600b556040820151600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610ba257610ba2612ce4565b021790555060608201518160020160016101000a81548160ff02191690836002811115610bd157610bd1612ce4565b0217905550610be59150600d90505f612aa2565b80515f5b81811015610c6e57600d838281518110610c0557610c05612fa3565b6020908102919091018101518254600180820185555f9485529290932090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921790915501610be9565b506040517f7c98a0e54e3d959a008c6978e0f8492849c33c7075f4b35e00ef60c0088c3707905f90a160408051878152602081018790527f41e8d332520308cb3ae775505e40854c4d5d7ebbed7d0d337166ca60bf7e4db4910160405180910390a1505050505050565b610ce061115f565b610b085f611305565b600554339073ffffffffffffffffffffffffffffffffffffffff168114610d54576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610679565b61087581611305565b5f805f5b83811015610dd9575f858583818110610d7c57610d7c612fa3565b905060600201803603810190610d929190613027565b90505f80610dad33845f015185602001518660400151611336565b9092509050610dbc8287613014565b9550610dc88186613014565b94505060019092019150610d619050565b508115610e2157610e2173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163384611a69565b8015610e6857610e6873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383611a69565b9250929050565b610e77612abd565b60408051608081018252600a80548252600b546020830152600c54919290919083019060ff166002811115610eae57610eae612ce4565b6002811115610ebf57610ebf612ce4565b81526020016002820160019054906101000a900460ff166002811115610ee757610ee7612ce4565b6002811115610ef857610ef8612ce4565b905250919050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696265496e69746961746976653a20696e76616c69642d73656e646572006044820152606401610679565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020908152604080832083805282529091206002908101549082527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077d54909161101090889085359086013582851415611aac565b61102586888635602088013586831415611b23565b50505050505050565b61103661123b565b610b08611bff565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020908152604080832083805290915281206002015481905b9392505050565b5f80805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077d5481905b92915050565b6110b761115f565b6005805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561111a60045473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b08576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610679565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610afa9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612126565b6040517fc20fb59e0000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c20fb59e906024016020604051808303815f875af11580156112c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ea9190612fd0565b90508060075f8282546112fd9190613014565b909155505050565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610875816121ba565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c59190612fd0565b8510611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696265496e69746961746976653a2063616e6e6f742d636c61696d2d666f60448201527f722d63757272656e742d65706f636800000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260016020908152604080832088845290915290205460ff16156114ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4272696265496e69746961746976653a20616c72656164792d636c61696d65646044820152606401610679565b5f858152602081815260409182902082516060810184528154808252600183015493820193909352600290910154928101929092521515806115325750602081015115155b611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4272696265496e69746961746976653a206e6f2d6272696265000000000000006044820152606401610679565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526003602052604081206115c69087612230565b90508686111580156115e7575086816060015111806115e757506060810151155b611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4272696265496e69746961746976653a20696e76616c69642d707265762d6c7160448201527f74792d616c6c6f636174696f6e2d65706f6368000000000000000000000000006064820152608401610679565b5f61167f600287612230565b90508786111580156116a0575087816060015111806116a057506060810151155b61172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4272696265496e69746961746976653a20696e76616c69642d707265762d746f60448201527f74616c2d6c7174792d616c6c6f636174696f6e2d65706f6368000000000000006064820152608401610679565b80516117ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4272696265496e69746961746976653a20746f74616c2d6c7174792d616c6c6f60448201527f636174696f6e2d7a65726f0000000000000000000000000000000000000000006064820152608401610679565b8151611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696265496e69746961746976653a206c7174792d616c6c6f636174696f6e60448201527f2d7a65726f0000000000000000000000000000000000000000000000000000006064820152608401610679565b5f6118737f00000000000000000000000000000000000000000000000000000000000000008a613081565b61189d907f0000000000000000000000000000000000000000000000000000000000000000613014565b90505f6118b2835f0151838560200151612297565b90505f6118c7855f0151848760200151612297565b90505f8660400151836118da9190613098565b90508082885f01516118ec9190613081565b6118f691906130ab565b9850808288602001516119099190613081565b61191391906130ab565b975088875f018181516119269190613098565b90525060208701805189919061193d908390613098565b905250604087018051839190611954908390613014565b91508181525050865f808e81526020019081526020015f205f820151815f015560208201518160010155604082015181600201559050506001805f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8e81526020019081526020015f205f6101000a81548160ff0219169083151502179055507f520304589c9512f04f4c28f0a5f365d2620fea83386850175628ebfe3d52b6838d8d8b8b604051611a51949392919073ffffffffffffffffffffffffffffffffffffffff94909416845260208401929092526040830152606082015260800190565b60405180910390a15050505050505094509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611aa791859182169063a9059cbb906064016111f4565b505050565b8015611ac557611ac060028585855f6122c5565b611adc565b5f8481526002602052604090208381556001018290555b60408051858152602081018590529081018390527ff3585f583ce8a74a5f014115d0a23ad6246464e971fe5701465b9976dc9c5bcd9060600160405180910390a150505050565b8015611b615773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120611b5c918690869086906122c5565b611b9a565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832087845290915290208381556001018290555b6040805173ffffffffffffffffffffffffffffffffffffffff8716815260208101869052908101849052606081018390527f3cf1dea48fd0f5e4db76fa66b9f662a7a8e3c185f34763189efc609691e327529060800160405180910390a15050505050565b60408051608081018252600a80548252600b546020830152600c545f9383019060ff166002811115611c3357611c33612ce4565b6002811115611c4457611c44612ce4565b81526020016002820160019054906101000a900460ff166002811115611c6c57611c6c612ce4565b6002811115611c7d57611c7d612ce4565b90525060085490915015611e1b576006546008546040517ff29e9aa700000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff169063f29e9aa7906024015f60405180830381865afa158015611cfb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d4091908101906130e3565b90505f8160018351611d529190613098565b81518110611d6257611d62612fa3565b602002602001015165ffffffffffff1690508060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663086146d26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e039190612fd0565b11611e0d57505050565b611e1860085461239b565b50505b6006546040517f77dd7cf70000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906377dd7cf790602401602060405180830381865afa158015611e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eab9190612fd0565b9050805f03611f455760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357ae1cec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f429190612fd0565b90505b5f611f5282612710613014565b612710600754611f629190613081565b611f6c91906130ab565b90505f612710611f7c8484613081565b611f8691906130ab565b9050611f928183613014565b60075f828254611fa29190613098565b909155505060065461200c9073ffffffffffffffffffffffffffffffffffffffff16611fce8385613014565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169190612645565b6006546009548551602087015160408089015160608a015191517f29b6a4300000000000000000000000000000000000000000000000000000000081525f9673ffffffffffffffffffffffffffffffffffffffff908116966329b6a430966120ad9692909116947f0000000000000000000000000000000000000000000000000000000000000000948a94600294928e928e92909190600d90600401613182565b6020604051808303815f875af11580156120c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ed9190612fd0565b600881905560405190915081907ff2376f43586d93a15b606c89747962a511dee47a8afacda035909ddd4460b108905f90a25050505050565b5f61214773ffffffffffffffffffffffffffffffffffffffff8416836126f2565b905080515f1415801561216b5750808060200190518101906121699190613250565b155b15611aa7576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610679565b6004805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61225760405180608001604052805f81526020015f81526020015f81526020015f81525090565b505f908152602091825260409081902081516080810183528154815260018201549381019390935260028101549183019190915260030154606082015290565b5f806122a38486613081565b90508281116122b2575f6122bc565b6122bc8382613098565b95945050505050565b6122cf85856126ff565b15612306576040517f3c57789e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580159061231c575061231a85826126ff565b155b15612353576040517fac9c4cae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f818152602095909552604080862060029081018054808952838920600390810189905591889055968852919096209586019490945592840192909255825560019190910155565b6006546040517f146bdb7d000000000000000000000000000000000000000000000000000000008152600481018390525f9173ffffffffffffffffffffffffffffffffffffffff169063146bdb7d90602401602060405180830381865afa158015612408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242c9190612fd0565b9050805f03612439575050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156124c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e79190612fd0565b6006546040517f8f4c72d80000000000000000000000000000000000000000000000000000000081526004810186905230602482015291925073ffffffffffffffffffffffffffffffffffffffff1690638f4c72d8906044015f604051808303815f87803b158015612557575f80fd5b505af1158015612569573d5f803e3d5ffd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f925083915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156125f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261d9190612fd0565b6126279190613098565b90508060075f82825461263a9190613014565b909155505050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156126b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126dc9190612fd0565b9050610afa84846126ed8585613014565b612784565b606061107483835f61285b565b5f815f03612739576040517fee7efd5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526020849052604090206002015415158061276657505f8281526020849052604090206003015415155b806110745750505f8080526020929092526040909120600301541490565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612810848261291a565b610afa5760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f604483015261285191869182169063095ea7b3906064016111f4565b610afa8482612126565b606081471015612899576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610679565b5f808573ffffffffffffffffffffffffffffffffffffffff1684866040516128c1919061326f565b5f6040518083038185875af1925050503d805f81146128fb576040519150601f19603f3d011682016040523d82523d5f602084013e612900565b606091505b50915091506129108683836129d1565b9695505050505050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1684604051612942919061326f565b5f604051808303815f865af19150503d805f811461297b576040519150601f19603f3d011682016040523d82523d5f602084013e612980565b606091505b50915091508180156129aa5750805115806129aa5750808060200190518101906129aa9190613250565b80156122bc57505050505073ffffffffffffffffffffffffffffffffffffffff163b151590565b6060826129e6576129e182612a60565b611074565b8151158015612a0a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612a59576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610679565b5080611074565b805115612a705780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080545f8255905f5260205f20908101906108759190612af1565b60405180608001604052805f81526020015f81526020015f6002811115612ae657612ae6612ce4565b81526020015f905290565b5b80821115612b05575f8155600101612af2565b5090565b5f60208284031215612b19575f80fd5b5035919050565b5f8060408385031215612b31575f80fd5b50508035926020909101359150565b60038110610875575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612bc057612bc0612b4c565b604052919050565b5f67ffffffffffffffff821115612be157612be1612b4c565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c0e575f80fd5b919050565b5f82601f830112612c22575f80fd5b81356020612c37612c3283612bc8565b612b79565b8083825260208201915060208460051b870101935086841115612c58575f80fd5b602086015b84811015612c7b57612c6e81612beb565b8352918301918301612c5d565b509695505050505050565b5f805f60608486031215612c98575f80fd5b8335612ca381612b40565b92506020840135612cb381612b40565b9150604084013567ffffffffffffffff811115612cce575f80fd5b612cda86828701612c13565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110610875577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8481526020810184905260808101612d5d84612d11565b836040830152612d6c83612d11565b82606083015295945050505050565b5f805f60608486031215612d8d575f80fd5b505081359360208301359350604090920135919050565b5f805f805f60a08688031215612db8575f80fd5b85359450602086013593506040860135612dd181612b40565b92506060860135612de181612b40565b9150608086013567ffffffffffffffff811115612dfc575f80fd5b612e0888828901612c13565b9150509295509295909350565b5f8060408385031215612e26575f80fd5b612e2f83612beb565b946020939093013593505050565b5f8060208385031215612e4e575f80fd5b823567ffffffffffffffff80821115612e65575f80fd5b818501915085601f830112612e78575f80fd5b813581811115612e86575f80fd5b866020606083028501011115612e9a575f80fd5b60209290920196919550909350505050565b815181526020808301519082015260408201516080820190612ecd81612d11565b60408301526060830151612ee081612d11565b8060608401525092915050565b5f60a08284031215612efd575f80fd5b50919050565b5f805f805f858703610200811215612f19575f80fd5b86359550612f2960208801612beb565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215612f5a575f80fd5b50604086019250612f6e8760c08801612eed565b9150612f7e876101608801612eed565b90509295509295909350565b5f60208284031215612f9a575f80fd5b61107482612beb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612fe0575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156110a9576110a9612fe7565b5f60608284031215613037575f80fd5b6040516060810181811067ffffffffffffffff8211171561305a5761305a612b4c565b80604052508235815260208301356020820152604083013560408201528091505092915050565b80820281158282048414176110a9576110a9612fe7565b818103818111156110a9576110a9612fe7565b5f826130de577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208083850312156130f4575f80fd5b825167ffffffffffffffff81111561310a575f80fd5b8301601f8101851361311a575f80fd5b8051613128612c3282612bc8565b81815260059190911b82018301908381019087831115613146575f80fd5b928401925b8284101561317757835165ffffffffffff81168114613168575f80fd5b8252928401929084019061314b565b979650505050505050565b5f610160820173ffffffffffffffffffffffffffffffffffffffff808f168452808e1660208501528c1515604085015265ffffffffffff8c1660608501528a60808501528960a08501528860c08501528760e08501526131e187612d11565b866101008501526131f186612d11565b61012084018690526101606101408501528454918290525f85815260208120926101808601915b818110156132385784548416835260019485019460209093019201613218565b50508093505050509c9b505050505050505050505050565b5f60208284031215613260575f80fd5b81518015158114611074575f80fd5b5f82515f5b8181101561328e5760208186018101518583015201613274565b505f92019182525091905056fea26469706673582212201e6eeadc28b747cb8dc5800409798a8d5bce413b21d1225e9a8b6bec2376a3c064736f6c63430008180033000000000000000000000000807def5e7d057df05c796f4bc75c3fe82bd6eee10000000000000000000000006440f144b7e50d6a8439336510312d2f54beb01d0000000000000000000000005de8ab7e27f6e7a1fff3e5b337584aa43961beef000000000000000000000000feb352930ca196a80b708cdd5dcb4eca94805dab0000000000000000000000005a099e2c2a41a5a0ad99e4971c711400eeef34db