0 txs
0 calls
constructor
constructor(address _gaugeController, address _feeCollector, address _owner)
functions
activePeriod
viewfunction activePeriod(uint256) view returns (uint8 id, uint256 timestamp, uint256 rewardPerPeriod)
amountClaimed
viewfunction amountClaimed(uint256) view returns (uint256)
bounties
viewfunction bounties(uint256) view returns (address gauge, address manager, address rewardToken, uint8 numberOfPeriods, uint256 endTimestamp, uint256 maxRewardPerVote, uint256 totalRewardAmount)
claimable
viewfunction claimable(uint256 bountyId, tuple proofData) view returns (uint256 amount)
fee
viewfunction fee() view returns (uint256)
feeAccrued
viewfunction feeAccrued(address) view returns (uint256)
feeCollector
viewfunction feeCollector() view returns (address)
gaugeAdjustedBias
viewfunction gaugeAdjustedBias(address, uint256) view returns (uint256)
gaugeController
viewfunction gaugeController() view returns (address)
getActivePeriod
viewfunction getActivePeriod(uint256 bountyId) view returns (tuple)
getActivePeriodPerBounty
viewfunction getActivePeriodPerBounty(uint256 bountyId) view returns (uint8)
getBlacklistedAddressesPerBounty
viewfunction getBlacklistedAddressesPerBounty(uint256 bountyId) view returns (address[])
getBounty
viewfunction getBounty(uint256 bountyId) view returns (tuple)
getCurrentPeriod
viewfunction getCurrentPeriod() view returns (uint256)
getPeriodsLeft
viewfunction getPeriodsLeft(uint256 bountyId) view returns (uint256 periodsLeft)
getUpgradedBountyQueued
viewfunction getUpgradedBountyQueued(uint256 bountyId) view returns (tuple)
getVersion
purefunction getVersion() pure returns (string)
isBlacklisted
viewfunction isBlacklisted(uint256, address) view returns (bool)
isKilled
viewfunction isKilled() view returns (bool)
isUpgradeable
viewfunction isUpgradeable(uint256) view returns (bool)
lastUserClaim
viewfunction lastUserClaim(address, uint256) view returns (uint256)
MINIMUM_PERIOD
viewfunction MINIMUM_PERIOD() view returns (uint8)
nextID
viewfunction nextID() view returns (uint256)
owner
viewfunction owner() view returns (address)
recipient
viewfunction recipient(address) view returns (address)
rewardPerVote
viewfunction rewardPerVote(uint256) view returns (uint256)
upgradeBountyQueue
viewfunction upgradeBountyQueue(uint256) view returns (uint8 numberOfPeriods, uint256 totalRewardAmount, uint256 maxRewardPerVote, uint256 endTimestamp)
whitelisted
viewfunction whitelisted(address) view returns (bool)
claim
nonpayablefunction claim(uint256 bountyId, tuple proofData) returns (uint256)
claimAll
nonpayablefunction claimAll(uint256[] ids, tuple[] proofs)
claimFees
nonpayablefunction claimFees(address[] rewardTokens)
closeBounty
nonpayablefunction closeBounty(uint256 bountyId)
createBounty
nonpayablefunction createBounty(address gauge, address manager, address rewardToken, uint8 numberOfPeriods, uint256 maxRewardPerVote, uint256 totalRewardAmount, address[] blacklist, bool upgradeable) returns (uint256 newBountyId)
increaseBountyDuration
nonpayablefunction increaseBountyDuration(uint256 _bountyId, uint8 _additionnalPeriods, uint256 _increasedAmount, uint256 _newMaxPricePerVote)
kill
nonpayablefunction kill()
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setGaugeController
nonpayablefunction setGaugeController(address _gaugeController)
setPlatformFee
nonpayablefunction setPlatformFee(uint256 _platformFee)
setRecipientFor
nonpayablefunction setRecipientFor(address _for, address _recipient)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateManager
nonpayablefunction updateManager(uint256 bountyId, address newManager)
whitelistAddress
nonpayablefunction whitelistAddress(address _address, bool _isWhitelist)
events
BountyClosed
event BountyClosed(uint256 id, uint256 remainingReward)
BountyCreated
event BountyCreated(uint256 indexed id, address indexed gauge, address manager, address rewardToken, uint8 numberOfPeriods, uint256 maxRewardPerVote, uint256 rewardPerPeriod, uint256 totalRewardAmount, bool isUpgradeable)
BountyDurationIncrease
event BountyDurationIncrease(uint256 id, uint8 numberOfPeriods, uint256 totalRewardAmount, uint256 maxRewardPerVote)
BountyDurationIncreaseQueued
event BountyDurationIncreaseQueued(uint256 id, uint8 numberOfPeriods, uint256 totalRewardAmount, uint256 maxRewardPerVote)
Claimed
event Claimed(address indexed user, address rewardToken, uint256 indexed bountyId, uint256 amount, uint256 protocolFees, uint256 period)
FeeCollectorUpdated
event FeeCollectorUpdated(address feeCollector)
FeesCollected
event FeesCollected(address indexed rewardToken, uint256 amount)
FeeUpdated
event FeeUpdated(uint256 fee)
GaugeControllerUpdated
event GaugeControllerUpdated(address gaugeController)
ManagerUpdated
event ManagerUpdated(uint256 id, address indexed manager)
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
PeriodRolledOver
event PeriodRolledOver(uint256 id, uint256 periodId, uint256 timestamp, uint256 rewardPerPeriod)
RecipientSet
event RecipientSet(address indexed sender, address indexed recipient)
errors
ALREADY_CLOSED
error ALREADY_CLOSED()
AUTH_MANAGER_ONLY
error AUTH_MANAGER_ONLY()
INVALID_NUMBER_OF_PERIODS
error INVALID_NUMBER_OF_PERIODS()
INVALID_TOKEN
error INVALID_TOKEN()
KILLED
error KILLED()
NO_PERIODS_LEFT
error NO_PERIODS_LEFT()
NO_RECEIVER_SET_FOR_WHITELISTED
error NO_RECEIVER_SET_FOR_WHITELISTED()
NOT_UPGRADEABLE
error NOT_UPGRADEABLE()
USER_NOT_UPDATED
error USER_NOT_UPDATED()
WRONG_INPUT
error WRONG_INPUT()
ZERO_ADDRESS
error ZERO_ADDRESS()
creation bytecode
0x60806040526001805534801562000014575f80fd5b5060405162003c2a38038062003c2a8339810160408190526200003791620000e6565b5f80546001600160a01b0319166001600160a01b03831690811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505066470de4df820000600355600580546001600160a01b0319166001600160a01b0392831617905560028054610100600160a81b03191661010093909216929092021790556200012d565b80516001600160a01b0381168114620000e1575f80fd5b919050565b5f805f60608486031215620000f9575f80fd5b6200010484620000ca565b92506200011460208501620000ca565b91506200012460408501620000ca565b90509250925092565b613aef806200013b5f395ff3fe608060405234801561000f575f80fd5b5060043610610254575f3560e01c80638c8f623b11610140578063b9a45aac116100bf578063d936547e11610084578063d936547e146106b9578063dc2f8744146106db578063ddca3f431461077e578063ee8c4bbf14610787578063ef2c4082146107a7578063f2fde38b146107ba575f80fd5b8063b9a45aac1461060c578063c415b95c1461061f578063c7da332814610632578063d1d1bb4f14610651578063d3c16e3014610670575f80fd5b8063a42dce8011610105578063a42dce8014610589578063aca47b7d1461059c578063b3651eea146105be578063b6b6e3c8146105e6578063b988997f146105f9575f80fd5b80638c8f623b146105145780638da5cb5b146105275780638fac3937146105515780638fe8a1011461056457806399eecb3b14610571575f80fd5b806341c0e1b5116101d757806351cd41e81161019c57806351cd41e8146104775780635d34625d146104915780636b5646aa146104b1578063725acc6b146104c45780637f78dfff146104d7578063866e00a9146104ea575f80fd5b806341c0e1b5146103e257806344336cfa146103ea5780634533477e146103fd5780634ae001d8146104105780634fcf04f91461044d575f80fd5b806312e8e2c31161021d57806312e8e2c31461031e5780631e96917d1461033157806321bf936a1461033a578063228c076c1461038b5780633ad86d72146103c3575f80fd5b806291d2b814610258578063086146d21461026d5780630888dc9014610288578063091cc5581461029b5780630d8e6e2c146102f7575b5f80fd5b61026b610266366004613192565b6107cd565b005b61027561085c565b6040519081526020015b60405180910390f35b610275610296366004613217565b61087a565b6102d36102a93660046132c3565b600e6020525f9081526040902080546001820154600283015460039093015460ff90921692909184565b6040805160ff9095168552602085019390935291830152606082015260800161027f565b60408051808201825260058152640322e342e360dc1b6020820152905161027f919061331d565b61026b61032c3660046132c3565b610c77565b61027560045481565b61036c6103483660046132c3565b600b6020525f908152604090208054600182015460029092015460ff909116919083565b6040805160ff909416845260208401929092529082015260600161027f565b61039e6103993660046132c3565b610cfe565b60408051825160ff16815260208084015190820152918101519082015260600161027f565b6102756103d13660046132c3565b600d6020525f908152604090205481565b61026b610d5d565b6102756103f836600461352c565b610d95565b61027561040b36600461352c565b611394565b61043d61041e366004613570565b600f60209081525f928352604080842090915290825290205460ff1681565b604051901515815260200161027f565b61027561045b36600461359e565b601060209081525f928352604080842090915290825290205481565b61047f600281565b60405160ff909116815260200161027f565b6104a461049f3660046132c3565b6113a6565b60405161027f919061360a565b6102756104bf3660046132c3565b611412565b61026b6104d236600461361c565b611461565b61026b6104e536600461365b565b611544565b6102756104f836600461359e565b601160209081525f928352604080842090915290825290205481565b61026b6105223660046136c2565b6115b3565b5f54610539906001600160a01b031681565b6040516001600160a01b03909116815260200161027f565b61047f61055f3660046132c3565b611890565b60025461043d9060ff1681565b6002546105399061010090046001600160a01b031681565b61026b610597366004613192565b61191a565b61043d6105aa3660046132c3565b600a6020525f908152604090205460ff1681565b6105396105cc366004613192565b60086020525f90815260409020546001600160a01b031681565b61026b6105f43660046136fa565b611991565b61026b6106073660046132c3565b611a10565b61026b61061a366004613726565b611bda565b600554610539906001600160a01b031681565b610275610640366004613192565b60096020525f908152604090205481565b61027561065f3660046132c3565b600c6020525f908152604090205481565b61068361067e3660046132c3565b611c2d565b60405161027f9190815160ff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61043d6106c7366004613192565b60076020525f908152604090205460ff1681565b6107356106e93660046132c3565b60066020525f90815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039485169593851694831693600160a01b90930460ff16929087565b604080516001600160a01b0398891681529688166020880152949096169385019390935260ff919091166060840152608083015260a082015260c081019190915260e00161027f565b61027560035481565b61079a6107953660046132c3565b611c9e565b60405161027f9190613752565b61026b6107b5366004613570565b611dce565b61026b6107c8366004613192565b611e95565b5f546001600160a01b031633146107ff5760405162461bcd60e51b81526004016107f6906137d8565b60405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527ff3d6907bf00dd37e685d19085134f0fab4ced80b96963ef3e992dc7ac0324c54906020015b60405180910390a150565b5f62093a8061086b8142613812565b6108759190613831565b905090565b5f60015460011461089d5760405162461bcd60e51b81526004016107f690613848565b600260018190555460ff16156108c6576040516363d8143160e01b815260040160405180910390fd5b600260ff881610156108eb57604051634f9a14b160e11b815260040160405180910390fd5b8415806108f6575085155b15610914576040516356e43e7f60e01b815260040160405180910390fd5b6001600160a01b038816158061093157506001600160a01b038916155b1561094f5760405163538ba4f960e01b815260040160405180910390fd5b873b5f8190036109725760405163684cae7960e11b815260040160405180910390fd5b61097e89333089611f08565b60048054600180820190925592505f9061099d90889060ff8c16611f50565b90505f6109a861085c565b90506040518061010001604052808e6001600160a01b031681526020018d6001600160a01b031681526020018c6001600160a01b031681526020018b60ff16815260200162093a808c60016109fd919061386c565b60ff16610a0a9190613831565b610a149084613885565b81526020018a81526020018981526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093909452505086815260066020818152604092839020855181546001600160a01b039182166001600160a01b0319918216178355878401516001840180549184169190921617905593860151600282018054606089015160ff16600160a01b026001600160a81b03199091169290961691909117949094179093556080850151600384015560a0850151600484015560c0850151600584015560e08501518051939450610b069392850192910190613104565b5050604080516001600160a01b038f811682528e8116602083015260ff8e1692820192909252606081018c90526080810185905260a081018b905287151560c0820152908f16915085907fbd09d6ba321593e1822a3fd27c75fcfaafc65d9ef961da9d03cf1bc0a6e924959060e00160405180910390a35f848152600a60209081526040808320805460ff19168915151790558051606081019091529182528101610bb462093a8084613885565b815260209081018490525f868152600b825260408082208451815460ff191660ff909116178155928401516001840155929092015160029091015586905b81811015610c60575f868152600f602052604081206001918b8b85818110610c1c57610c1c613898565b9050602002016020810190610c319190613192565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610bf2565b50506001805550919b9a5050505050505050505050565b5f546001600160a01b03163314610ca05760405162461bcd60e51b81526004016107f6906137d8565b670de0b6b3a7640000811115610cc9576040516356e43e7f60e01b815260040160405180910390fd5b60038190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001610851565b610d2260405180606001604052805f60ff1681526020015f81526020015f81525090565b505f908152600b60209081526040918290208251606081018452815460ff168152600182015492810192909252600201549181019190915290565b5f546001600160a01b03163314610d865760405162461bcd60e51b81526004016107f6906137d8565b6002805460ff19166001179055565b5f828152600f6020908152604080832084516001600160a01b0316845290915281205460ff1615610dc757505f61138e565b5f610dd061085c565b9050600260019054906101000a90046001600160a01b03166001600160a01b0316630a441f7b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4791906138ac565b8114610e56575f91505061138e565b5f84815260066020818152604080842081516101008101835281546001600160a01b0390811682526001830154811682860152600283015490811682850152600160a01b900460ff16606082015260038201546080820152600482015460a0820152600582015460c08201529381018054835181860281018601909452808452919360e08601939290830182828015610f1657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610ef8575b505050919092525050505f868152600e60205260408120608083015160038201549394509092808210908218021890505f610f6260405180604001604052805f81526020015f81525090565b610f8360405180606001604052805f81526020015f81526020015f81525090565b6002548951875160208c01516040808e01519051634f712f3f60e01b81526101009095046001600160a01b031694634f712f3f94610fc9949093909290916004016138c3565b60e060405180830381865afa158015610fe4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100891906139b2565b50815190955091935091501580611042575088516001600160a01b03165f9081526010602090815260408083208d84529091529020548711155b80611051575080604001518710155b8061105c5750828711155b806110675750838710155b8061107d57506110768a610cfe565b6020015187105b80611099575060c08601515f8b8152600c602052604090205410155b156110ad575f97505050505050505061138e565b5f8a8152600d60205260409020548015806110de57505f811180156110de5750876110d78c610cfe565b6020015114155b156112d95785545f9060ff161561110457600287015460a0890152600187015460c08901525b5f898711611112575f61112a565b62093a806111208b896139f4565b61112a9190613812565b5f8e8152600c602052604090205460c08b0151919250611149916139f4565b915061115862093a808b613885565b871180156111665750600181115b1561117a5761117782600183611f50565b91505b6112d4670de0b6b3a76400005f60115f8d5f01516001600160a01b03166001600160a01b031681526020019081526020015f205f600260019054906101000a90046001600160a01b03166001600160a01b031663aa34453f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122391906138ac565b81526020019081526020015f20541161123d5786516112cc565b8a516001600160a01b039081165f908152601160209081526040808320600254825163aa34453f60e01b815292519195610100909104169263aa34453f92600480820193918290030181865afa158015611299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd91906138ac565b81526020019081526020015f20545b849190611f50565b925050505b5f6112ec835f015184604001518b611f74565b90506112f88183611f97565b99505f6113128960a0015183611f9790919063ffffffff16565b9050808b118b8218028b185f8e8152600c602052604090205460c08b0151919c509061133e828e613885565b111561135757808a60c0015161135491906139f4565b9b505b600354156113825761137f600354670de0b6b3a764000061137891906139f4565b8d90611f97565b9b505b50505050505050505050505b92915050565b5f61139f8383611fc2565b9392505050565b5f8181526006602081815260409283902090910180548351818402810184019094528084526060939283018282801561140657602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116113e8575b50505050509050919050565b5f8181526006602052604081208161142861085c565b90508082600301541161143b575f611459565b62093a8081836003015461144f91906139f4565b6114599190613812565b949350505050565b6001546001146114835760405162461bcd60e51b81526004016107f690613848565b60026001555f81815b81811015611539575f8585838181106114a7576114a7613898565b90506020020160208101906114bc9190613192565b6001600160a01b0381165f81815260096020526040808220805492905551909650919250907f9dc46f23cfb5ddcad0ae7ea2be38d47fec07bb9382ec7e564efc69e036dd66ce906115109087815260200190565b60405180910390a26005546115309082906001600160a01b0316866126bc565b5060010161148c565b505060018055505050565b825f5b818110156115ab575f86868381811061156257611562613898565b9050602002013590506115a18186868581811061158157611581613898565b90506020028101906115939190613a07565b61159c90613a25565b611fc2565b5050600101611547565b505050505050565b6001546001146115d55760405162461bcd60e51b81526004016107f690613848565b600260018190555460ff16156115fe576040516363d8143160e01b815260040160405180910390fd5b5f8481526006602052604090206001015484906001600160a01b031633146116395760405163fabbbc6760e01b815260040160405180910390fd5b5f858152600a602052604090205460ff166116675760405163dc370e0160e01b815260040160405180910390fd5b600161167286611412565b101561169157604051633bad1a5760e01b815260040160405180910390fd5b82158061169c575081155b156116ba576040516356e43e7f60e01b815260040160405180910390fd5b5f858152600660209081526040808320600e8352928190208151608081018352815460ff1681526001820154938101939093526002808201549284019290925260030154606083015282015461171b906001600160a01b0316333088611f08565b60208101511561178b57604051806080016040528087835f015161173f919061386c565b60ff1681526020018683602001516117579190613885565b81526020810186905260400161177362093a8060ff8a16613831565b83606001516117829190613885565b905290506117fb565b6040518060800160405280878460020160149054906101000a900460ff166117b3919061386c565b60ff1681526020018684600501546117cb9190613885565b8152602081018690526040016117e762093a8060ff8a16613831565b84600301546117f69190613885565b905290505b5f878152600e60209081526040918290208351815460ff90911660ff1990911681178255848301516001830181905585850151600284015560608087015160039094019390935584518c81529384019190915282840152810186905290517fbc253f6a158b7f3743255b0764f4408f10f66d26d277929a6bbe1bdf4fd766389181900360800190a15050600180555050505050565b5f818152600660205260408120816118a661085c565b90505f818360030154116118ba575f6118d8565b62093a808284600301546118ce91906139f4565b6118d89190613812565b6002840154909150600160a01b900460ff16811161190f57600283015461190a908290600160a01b900460ff166139f4565b611911565b5f5b95945050505050565b5f546001600160a01b031633146119435760405162461bcd60e51b81526004016107f6906137d8565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90602001610851565b5f546001600160a01b031633146119ba5760405162461bcd60e51b81526004016107f6906137d8565b6001600160a01b038281165f8181526008602052604080822080546001600160a01b0319169486169485179055517fc1416b5cdab50a9fbc872236e1aa54566c6deb40024e63a4b1737ecacf09d6f99190a35050565b600154600114611a325760405162461bcd60e51b81526004016107f690613848565b600260019081555f828152600660205260409020908101546001600160a01b0316611a70576040516329606baf60e01b815260040160405180910390fd5b611a79826126ff565b8060030154611a8661085c565b101580611a95575060025460ff165b15611bd2575f828152600e602090815260408083208151608081018352815460ff16815260018201549381018490526002820154928101929092526003015460608201529015611b2c575f848152600c602090815260409091205490820151611afe91906139f4565b5f858152600e60205260408120805460ff191681556001810182905560028101829055600301559150611b56565b5f848152600c6020908152604080832054600690925290912060050154611b5391906139f4565b91505b60028301546001840154611b77916001600160a01b039081169116846126bc565b5f8481526006602090815260409182902060010180546001600160a01b031916905581518681529081018490527fe44903a04328507d74e4709cbebc6c819f9f1cd0b7cb171ba22814fcc18ecf38910160405180910390a150505b505060018055565b5f546001600160a01b03163314611c035760405162461bcd60e51b81526004016107f6906137d8565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b611c5760405180608001604052805f60ff1681526020015f81526020015f81526020015f81525090565b505f908152600e60209081526040918290208251608081018452815460ff168152600182015492810192909252600281015492820192909252600390910154606082015290565b611cfd6040518061010001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff1681526020015f81526020015f81526020015f8152602001606081525090565b5f8281526006602081815260409283902083516101008101855281546001600160a01b0390811682526001830154811682850152600283015490811682870152600160a01b900460ff16606082015260038201546080820152600482015460a0820152600582015460c082015292810180548551818502810185019096528086529394919360e0860193830182828015611dbe57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611da0575b5050505050815250509050919050565b5f8281526006602052604090206001015482906001600160a01b03163314611e095760405163fabbbc6760e01b815260040160405180910390fd5b6001600160a01b038216611e305760405163538ba4f960e01b815260040160405180910390fd5b5f8381526006602090815260409182902060010180546001600160a01b0319166001600160a01b03861690811790915591518581527f5baaf19ee8739d1720c1401554ff4abe5682505ec43d3f2eb61b9dfc0abd9745910160405180910390a2505050565b5f546001600160a01b03163314611ebe5760405162461bcd60e51b81526004016107f6906137d8565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6040516323b872dd5f5283602052826040528160605260205f6064601c5f895af13d1560015f51141716611f4357637939f4245f526004601cfd5b5f60605260405250505050565b5f825f190484118302158202611f6d5763ad251c275f526004601cfd5b5091020490565b5f828210611f8357505f61139f565b611f8d82846139f4565b6114599085613831565b5f815f19048311820215611fb25763bac65e5b5f526004601cfd5b50670de0b6b3a764000091020490565b5f600154600114611fe55760405162461bcd60e51b81526004016107f690613848565b600260018190555460ff161561200e576040516363d8143160e01b815260040160405180910390fd5b5f838152600f6020908152604080832085516001600160a01b0316845290915290205460ff161561204057505f6126b2565b5f61204b8484612822565b90505f600260019054906101000a90046001600160a01b03166001600160a01b031663aa34453f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561209f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c391906138ac565b9050600260019054906101000a90046001600160a01b03166001600160a01b0316630a441f7b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612116573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213a91906138ac565b821461214a575f925050506126b2565b5f85815260066020908152604080832081516060810183528481529283018490529082019290925260025486518354604051635428e59960e11b81525f9361010090046001600160a01b039081169363a851cb32936121b1938a9390911690600401613a30565b602060405180830381865afa1580156121cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f09190613a4f565b156122f857600254875184546040516355a38e0f60e01b81526001600160a01b036101009094048416936355a38e0f93612232938a9391921690600401613a30565b606060405180830381865afa15801561224d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190613a6a565b600254885185546040516309a7bc0960e41b81529395506001600160a01b03610100909304831693639a7bc090936122b2938a939092911690600401613a30565b602060405180830381865afa1580156122cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f191906138ac565b9050612387565b6002548751845460208a01516040808c01519051634f712f3f60e01b81526001600160a01b03610100909604861695634f712f3f9561234095909491169290916004016138c3565b60e060405180830381865afa15801561235b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237f91906139b2565b509093509150505b815115806123b8575086516001600160a01b03165f9081526010602090815260408083208b84529091529020548511155b806123c7575081604001518510155b806123d25750808511155b806123e1575082600301548510155b806123f357506123ef61085c565b8514155b8061240e575060058301545f898152600c6020526040902054145b15612420575f955050505050506126b2565b86516001600160a01b03165f9081526010602090815260408083208b8452909152808220879055835190840151612458919088611f74565b5f8a8152600d6020526040902054909150612474908290611f97565b96505f61248e856004015483611f9790919063ffffffff16565b90508088118882180288185f8b8152600c60205260409020546005870154919950906124ba828b613885565b11156124d3578086600501546124d091906139f4565b98505b5f8b8152600c6020526040812080548b92906124f0908490613885565b90915550506003545f901561254f5760035461250d908b90611f97565b9050612519818b6139f4565b60028801546001600160a01b03165f9081526009602052604081208054929c508392909190612549908490613885565b90915550505b6002548b516040516359b28f7560e11b81526001600160a01b0391821660048201525f9261010090049091169063b3651eea90602401602060405180830381865afa1580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c49190613a84565b8c516001600160a01b03165f9081526007602052604090205490915060ff1680156125f657506001600160a01b038116155b15612614576040516359f1f54760e11b815260040160405180910390fd5b6001600160a01b038116612629578b5161262b565b805b6002890154909150612647906001600160a01b0316828d6126bc565b8b516002890154604080516001600160a01b039283168152602081018f9052908101859052606081018d90528f9291909116907f6f9c9826be5976f3f82a3490c52a83328ce2ec7be9e62dcb39c26da5148d7c769060800160405180910390a3505050505050505050505b6001805592915050565b81601a5280603a5269a9059cbb0000000000005f5260205f604460165f875af13d1560015f511417166126f6576390b8ec185f526004601cfd5b5f603a52505050565b5f818152600e6020526040902060018101541561281e576003818101545f8481526006602090815260408083209485019390935584546002808601805460ff60a01b191660ff938416600160a01b0217905586015460048601556001860154600590950194909455600b90529081205490911690036127a157805460018281015461278f9290919060ff16611f50565b5f838152600b60205260409020600201555b8054600182015460028301546040805186815260ff909416602085015283019190915260608201527f2e363750a1295e75baeb02bb4277be5bbd051627ff6fa2edae8a99c91ddf5ef19060800160405180910390a15f828152600e60205260408120805460ff191681556001810182905560028101829055600301555b5050565b5f828152600b602052604081208161283861085c565b825490915060ff161580156128505750816001015481145b801561286757505f858152600d6020526040902054155b1561288057612875856126ff565b6128808582866128c2565b62093a8082600101546128939190613885565b42106128b6576128a2856126ff565b6128ad85828661298e565b915061138e9050565b50600101549392505050565b5f838152600d60205260408120549003612989575f83815260066020818152604080842080549301805482518185028101850190935280835261294c946001600160a01b03169383018282801561294057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612922575b50505050508585612b49565b90508015612987575f848152600b602052604090206002015461297890670de0b6b3a764000083611f50565b5f858152600d60205260409020555b505b505050565b5f61299884611890565b5f8581526006602052604081209192506129b186611412565b5f878152600c6020526040812054600585015492935090916129d391906139f4565b90506129e262093a8087613885565b83600301541180156129f45750600182115b15612a0857612a0581600184611f50565b90505b8254600684018054604080516020808402820181019092528281525f94612a7d946001600160a01b03909116939192909190830182828015612a7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612a53575b50505050508989612b49565b9050612a9282670de0b6b3a764000083611f50565b5f898152600d6020908152604080832093909355825160608101845260ff808a1682528183018c81528286018881528e8652600b9094529385902091518254911660ff199091161781559151600183015551600290910155517fb77c22cd311809931524bcc8d4a33a61a392e2304c8a7d476b64018e11ed6cb190612b37908a9088908b90879093845260ff9290921660208401526040830152606082015260800190565b60405180910390a15050505050505050565b5f80600260019054906101000a90046001600160a01b03166001600160a01b031663aa34453f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc091906138ac565b6001600160a01b0387165f90815260116020908152604080832084845290915290205490915015612c14576001600160a01b0386165f90815260116020908152604080832093835292905220549050611459565b612c3560405180606001604052805f81526020015f81526020015f81525090565b8551600254604051632c0073c360e21b81526001600160a01b038a81166004830152602482018690525f93926101009004169063b001cf0c906044016040805180830381865afa158015612c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612caf9190613a9f565b5194505f859003612e3a57600254865160208801516040808a01519051634e53c8a760e01b81526101009094046001600160a01b031693634e53c8a793612cfc9390928f926004016138c3565b5f604051808303815f87803b158015612d13575f80fd5b505af1158015612d25573d5f803e3d5ffd5b50506002548851604051635428e59960e11b81526101009092046001600160a01b0316935063a851cb329250612d62918891908e90600401613a30565b602060405180830381865afa158015612d7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da19190613a4f565b612dbe576040516308ef8d1160e31b815260040160405180910390fd5b600254604051632c0073c360e21b81526001600160a01b038b81166004830152602482018790526101009092049091169063b001cf0c906044016040805180830381865afa158015612e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e369190613a9f565b5194505b8015612ebd575f5b81811015612ebb57612e91898281518110612e5f57612e5f613898565b60200260200101518b89602001518a606001518581518110612e8357612e83613898565b602002602001015189612eec565b9350612ea5845f015185604001518a611f74565b9250612eb183876139f4565b9550600101612e42565b505b5050506001600160a01b0386165f90815260116020908152604080832093835292905220819055949350505050565b612f0d60405180606001604052805f81526020015f81526020015f81525090565b600254604051635428e59960e11b81526101009091046001600160a01b03169063a851cb3290612f459085908a908a90600401613a30565b602060405180830381865afa158015612f60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f849190613a4f565b61308357600254604051634e53c8a760e01b81526101009091046001600160a01b031690634e53c8a790612fc29089908990899089906004016138c3565b5f604051808303815f87803b158015612fd9575f80fd5b505af1158015612feb573d5f803e3d5ffd5b5050600254604051635428e59960e11b81526101009091046001600160a01b0316925063a851cb3291506130279085908a908a90600401613a30565b602060405180830381865afa158015613042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190613a4f565b613083576040516308ef8d1160e31b815260040160405180910390fd5b6002546040516355a38e0f60e01b81526101009091046001600160a01b0316906355a38e0f906130bb9085908a908a90600401613a30565b606060405180830381865afa1580156130d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fa9190613a6a565b9695505050505050565b828054828255905f5260205f20908101928215613157579160200282015b8281111561315757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613122565b50613163929150613167565b5090565b5b80821115613163575f8155600101613168565b6001600160a01b038116811461318f575f80fd5b50565b5f602082840312156131a2575f80fd5b813561139f8161317b565b803560ff811681146131bd575f80fd5b919050565b5f8083601f8401126131d2575f80fd5b50813567ffffffffffffffff8111156131e9575f80fd5b6020830191508360208260051b8501011115613203575f80fd5b9250929050565b801515811461318f575f80fd5b5f805f805f805f805f6101008a8c031215613230575f80fd5b893561323b8161317b565b985060208a013561324b8161317b565b975060408a013561325b8161317b565b965061326960608b016131ad565b955060808a0135945060a08a0135935060c08a013567ffffffffffffffff811115613292575f80fd5b61329e8c828d016131c2565b90945092505060e08a01356132b28161320a565b809150509295985092959850929598565b5f602082840312156132d3575f80fd5b5035919050565b5f81518084525f5b818110156132fe576020818501810151868301820152016132e2565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f61139f60208301846132da565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156133665761336661332f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156133955761339561332f565b604052919050565b5f82601f8301126133ac575f80fd5b813567ffffffffffffffff8111156133c6576133c661332f565b6133d9601f8201601f191660200161336c565b8181528460208386010111156133ed575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60808284031215613419575f80fd5b613421613343565b9050813561342e8161317b565b815260208281013567ffffffffffffffff8082111561344b575f80fd5b6134578683870161339d565b83850152604085013591508082111561346e575f80fd5b61347a8683870161339d565b60408501526060850135915080821115613492575f80fd5b818501915085601f8301126134a5575f80fd5b8135818111156134b7576134b761332f565b8060051b6134c685820161336c565b91825283810185019185810190898411156134df575f80fd5b86860192505b8383101561351a578235858111156134fc575f8081fd5b61350a8b89838a010161339d565b83525091860191908601906134e5565b60608801525094979650505050505050565b5f806040838503121561353d575f80fd5b82359150602083013567ffffffffffffffff81111561355a575f80fd5b61356685828601613409565b9150509250929050565b5f8060408385031215613581575f80fd5b8235915060208301356135938161317b565b809150509250929050565b5f80604083850312156135af575f80fd5b82356135ba8161317b565b946020939093013593505050565b5f8151808452602080850194508084015f5b838110156135ff5781516001600160a01b0316875295820195908201906001016135da565b509495945050505050565b602081525f61139f60208301846135c8565b5f806020838503121561362d575f80fd5b823567ffffffffffffffff811115613643575f80fd5b61364f858286016131c2565b90969095509350505050565b5f805f806040858703121561366e575f80fd5b843567ffffffffffffffff80821115613685575f80fd5b613691888389016131c2565b909650945060208701359150808211156136a9575f80fd5b506136b6878288016131c2565b95989497509550505050565b5f805f80608085870312156136d5575f80fd5b843593506136e5602086016131ad565b93969395505050506040820135916060013590565b5f806040838503121561370b575f80fd5b82356137168161317b565b915060208301356135938161317b565b5f8060408385031215613737575f80fd5b82356137428161317b565b915060208301356135938161320a565b602081525f60018060a01b0380845116602084015280602085015116604084015250604083015161378e60608401826001600160a01b03169052565b50606083015160ff8116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008081850152506114596101208401826135c8565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261382c57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761138e5761138e6137fe565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b60ff818116838216019081111561138e5761138e6137fe565b8082018082111561138e5761138e6137fe565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156138bc575f80fd5b5051919050565b6001600160a01b038581168252841660208201526080604082018190525f906138ee908301856132da565b828103606084015261390081856132da565b979650505050505050565b5f6040828403121561391b575f80fd5b6040516040810181811067ffffffffffffffff8211171561393e5761393e61332f565b604052825181526020928301519281019290925250919050565b5f60608284031215613968575f80fd5b6040516060810181811067ffffffffffffffff8211171561398b5761398b61332f565b80604052508091508251815260208301516020820152604083015160408201525092915050565b5f805f8060e085870312156139c5575f80fd5b6139cf868661390b565b93506139de8660408701613958565b60a086015160c090960151949790965092505050565b8181038181111561138e5761138e6137fe565b5f8235607e19833603018112613a1b575f80fd5b9190910192915050565b5f61138e3683613409565b9283526001600160a01b03918216602084015216604082015260600190565b5f60208284031215613a5f575f80fd5b815161139f8161320a565b5f60608284031215613a7a575f80fd5b61139f8383613958565b5f60208284031215613a94575f80fd5b815161139f8161317b565b5f60408284031215613aaf575f80fd5b61139f838361390b56fea26469706673582212204b7e203493971f9daa38e799019b21fdee4903f29c39f272c2fbf970f069f88f64736f6c6343000814003300000000000000000000000053e375f10bb81b149dd424c7ff8e060b0b0461b50000000000000000000000008898502ba35ab64b3562abc509befb7eb178d4df0000000000000000000000008898502ba35ab64b3562abc509befb7eb178d4df