0 txs
38 calls
constructor
No constructor.
functions
access
viewfunction access(address) view returns (bool)
allowedLocker
viewfunction allowedLocker(address) view returns (bool)
balanceOf
viewfunction balanceOf(address _user) view returns (uint256)
blockThirdPartyActions
viewfunction blockThirdPartyActions(address) view returns (bool)
bribeManager
viewfunction bribeManager() view returns (address)
earned
viewfunction earned(address _user, address _rewardToken) view returns (uint256)
FEE_DENOMINATOR
viewfunction FEE_DENOMINATOR() view returns (uint256)
getRewardTokensLength
viewfunction getRewardTokensLength() view returns (uint256)
getUserLocks
viewfunction getUserLocks(address _user) view returns (tuple[])
getVlQuoLens
viewfunction getVlQuoLens() view returns (address)
isRewardToken
viewfunction isRewardToken(address) view returns (bool)
lastClaimedWeek
viewfunction lastClaimedWeek(address) view returns (uint256)
MAX_LOCK_WEEKS
viewfunction MAX_LOCK_WEEKS() view returns (uint256)
maxLockLength
viewfunction maxLockLength() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ptsConverter
viewfunction ptsConverter() view returns (address)
queuedRewards
viewfunction queuedRewards(address) view returns (uint256)
quo
viewfunction quo() view returns (address)
rewardPool
viewfunction rewardPool() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
unlockGracePeriod
viewfunction unlockGracePeriod() view returns (uint256)
unlockPunishment
viewfunction unlockPunishment() view returns (uint256)
userLocks
viewfunction userLocks(address, uint256) view returns (uint256 quoAmount, uint256 vlQuoAmount, uint256 lockTime, uint256 unlockTime)
vlQuoLens
viewfunction vlQuoLens() view returns (address)
WEEK
viewfunction WEEK() view returns (uint256)
weeklyRewards
viewfunction weeklyRewards(address, uint256) view returns (uint256)
weeklyTotalWeight
viewfunction weeklyTotalWeight(uint256) view returns (uint256)
weeklyUserWeight
viewfunction weeklyUserWeight(address, uint256) view returns (uint256)
decreaseBalance
nonpayablefunction decreaseBalance(address _user, uint256 _amount)
donate
nonpayablefunction donate(address _rewardToken, uint256 _amount)
getReward
nonpayablefunction getReward()
increaseBalance
nonpayablefunction increaseBalance(address _user, uint256 _amount)
initialize
nonpayablefunction initialize()
lock
nonpayablefunction lock(address _user, uint256 _amount, uint256 _weeks)
lockCustomForConvertingPTS
nonpayablefunction lockCustomForConvertingPTS(uint256 _weeks, uint256 _amountPTS)
lockCustomForUser
nonpayablefunction lockCustomForUser(uint256 _weeks, uint256 _amountQuo, bytes32[] merkleProof)
pause
nonpayablefunction pause()
queueNewRewards
nonpayablefunction queueNewRewards(address _rewardToken, uint256 _rewards)
renounceOwnership
nonpayablefunction renounceOwnership()
setAccess
nonpayablefunction setAccess(address _address, bool _status)
setAllowedLocker
nonpayablefunction setAllowedLocker(address _locker, bool _allowed)
setBlockThirdPartyActions
nonpayablefunction setBlockThirdPartyActions(bool _block)
setMaxLockLength
nonpayablefunction setMaxLockLength(uint256 _maxLockLength)
setParams
nonpayablefunction setParams(address _quo, address _bribeManager, address _treasury)
setPTSConverter
nonpayablefunction setPTSConverter(address newConverter)
setRewardPool
nonpayablefunction setRewardPool(address newRewardPool)
setUnlockGracePeriod
nonpayablefunction setUnlockGracePeriod(uint256 _unlockGracePeriod)
setUnlockPunishment
nonpayablefunction setUnlockPunishment(uint256 _unlockPunishment)
setVlQuoLens
nonpayablefunction setVlQuoLens(address newVlQuoLens)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlock
nonpayablefunction unlock(uint256 _slot)
unpause
nonpayablefunction unpause()
withdrawReward
nonpayablefunction withdrawReward(address token, uint256 amount)
events
AccessSet
event AccessSet(address indexed _address, bool _status)
AllowedLockerSet
event AllowedLockerSet(address indexed _locker, bool _allowed)
BalanceUpdated
event BalanceUpdated(address indexed _user, uint256 _balance)
Locked
event Locked(address indexed _user, uint256 _amount, uint256 _weeks)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RewardAdded
event RewardAdded(address indexed _rewardToken, uint256 _reward)
RewardPaid
event RewardPaid(address indexed _user, address indexed _rewardToken, uint256 _reward)
RewardTokenAdded
event RewardTokenAdded(address indexed _rewardToken)
Unlocked
event Unlocked(address indexed _user, uint256 _unlockTime, uint256 _quoAmount, uint256 _vlQuoAmount)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506136be806100206000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80636fae3d76116101d3578063b53a6a7111610104578063e2ab691d116100a2578063eb28fdb71161007c578063eb28fdb7146106c1578063f2fde38b146106d4578063f4359ce5146106e7578063ff056949146106ef57610378565b8063e2ab691d14610688578063e57030841461069b578063e69d849d146106ae57610378565b8063bafacab9116100de578063bafacab91461065d578063c9ee18c414610665578063d73792a914610678578063e2a578cd1461068057610378565b8063b53a6a7114610624578063b5fd73f814610637578063b84614a51461064a57610378565b80637bb7bed1116101715780638d145e151161014b5780638d145e15146105d35780638da5cb5b146105e6578063a081df7f146105ee578063aa33fedb1461060157610378565b80637bb7bed1146105b05780638129fc1c146105c35780638456cb59146105cb57610378565b806371905b55116101ad57806371905b551461056f57806375e77914146105775780637806f68a1461058a57806378238c371461059d57610378565b80636fae3d761461054157806370a0823114610554578063715018a61461056757610378565b806358d3232f116102ad578063641f641f1161024b5780636795616c116102255780636795616c1461050057806369d65918146105135780636dc18eac146105265780636ef08c5b1461053957610378565b8063641f641f146104dd57806365663cc0146104f057806366666aa9146104f857610378565b80635c975abb116102875780635c975abb146104a55780635e9b78c3146104ba5780636198e339146104c257806361d027b3146104d557610378565b806358d3232f14610477578063594aa9671461048a5780635b86f5991461049257610378565b80632521cdd81161031a5780633d18b912116102f45780633d18b9121461043f5780633f4ba83a146104475780633f4e9f551461044f578063503f14361461046257610378565b80632521cdd81461041c5780632638b6191461042457806330274d861461043757610378565b80631b0da15a116103565780631b0da15a146103c35780631bfca4df146103d6578063211dc32d146103e957806323a35de9146103fc57610378565b806304d0c2c51461037d57806310ea27901461039257806318160ddd146103bb575b600080fd5b61039061038b366004612dc2565b610702565b005b6103a56103a0366004612dc2565b610883565b6040516103b29190613606565b60405180910390f35b6103a56108a0565b6103906103d1366004612cf7565b6108a6565b6103a56103e4366004612cf7565b6108fd565b6103a56103f7366004612d12565b61090f565b61040f61040a366004612cf7565b610a19565b6040516103b29190613012565b6103a5610ab6565b610390610432366004612e87565b610abc565b6103a5610da8565b610390610dae565b610390610ee3565b61039061045d366004612e57565b610f22565b61046a610f5c565b6040516103b29190612f41565b610390610485366004612dc2565b610f6b565b61046a611025565b6103906104a0366004612dc2565b611034565b6104ad61106e565b6040516103b29190613076565b6103a5611077565b6103906104d0366004612e57565b61107d565b61046a6112c2565b6103a56104eb366004612e57565b6112d1565b61046a6112e3565b61046a6112f2565b6104ad61050e366004612cf7565b611301565b610390610521366004612e57565b611316565b610390610534366004612d8b565b611350565b61046a61140b565b6104ad61054f366004612cf7565b61141a565b6103a5610562366004612cf7565b61142f565b61039061144a565b6103a56114c9565b6103a5610585366004612dc2565b6114cf565b6104ad610598366004612cf7565b6114ec565b6103906105ab366004612cf7565b611501565b61046a6105be366004612e57565b611558565b61039061157f565b61039061161a565b6103906105e1366004612e57565b611657565b61046a611691565b6103906105fc366004612d46565b6116a0565b61061461060f366004612dc2565b6117c2565b6040516103b29493929190613633565b6103a5610632366004612cf7565b611805565b6104ad610645366004612cf7565b611817565b610390610658366004612d8b565b61182c565b6103a56118db565b610390610673366004612ea8565b6118e0565b6103a5611b9f565b61046a611ba5565b610390610696366004612dec565b611bb4565b6103906106a9366004612e1f565b611ecd565b6103906106bc366004612dc2565b611eed565b6103906106cf366004612cf7565b611f7d565b6103906106e2366004612cf7565b611fd4565b6103a561208b565b6103906106fd366004612dc2565b612092565b33600090815260da602052604090205460ff1661073a5760405162461bcd60e51b81526004016107319061350f565b60405180910390fd5b610743826120cc565b6107586001600160a01b038316333084612181565b60006107626121df565b600081815260d26020526040902054909150806107bd576001600160a01b038416600090815260d7602052604090205461079c90846121fd565b6001600160a01b038516600090815260d760205260409020555061087f9050565b6001600160a01b038416600090815260d760205260409020546107e19084906121fd565b6001600160a01b038516600090815260d76020908152604080832083905560d8825280832086845290915290205490935061081c90846121fd565b6001600160a01b038516600081815260d860209081526040808320878452909152908190209290925590517fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e2990610874908690613606565b60405180910390a250505b5050565b60d360209081526000928352604080842090915290825290205481565b60d05490565b6108ae612229565b6033546001600160a01b039081169116146108db5760405162461bcd60e51b815260040161073190613414565b60de80546001600160a01b0319166001600160a01b0392909216919091179055565b60d96020526000908152604090205481565b6001600160a01b038216600090815260d9602052604081205461093457506000610a13565b6001600160a01b038316600090815260d9602052604081205461095a9062093a806121fd565b9050600061097362093a8061096d6121df565b9061222d565b90506000825b828111610a0d57600081815260d260205260409020548061099a57506109f9565b6001600160a01b03808916600090815260d360209081526040808320868452825280832054938b16835260d882528083208684529091529020546109f5916109ee9184916109e8919061226f565b906122a9565b84906121fd565b9250505b610a068162093a806121fd565b9050610979565b50925050505b92915050565b6001600160a01b038116600090815260cf60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610aab578382906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610a51565b505050509050919050565b60d55490565b60026065541415610adf5760405162461bcd60e51b815260040161073190613578565b600260655560975460ff1615610b075760405162461bcd60e51b8152600401610731906132e4565b81601a1480610b165750816034145b610b325760405162461bcd60e51b8152600401610731906130df565b60df54604051634cd01af160e01b81526000916001600160a01b031690634cd01af190610b659033908690600401612f55565b602060405180830381600087803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190612e6f565b905060008111610bd95760405162461bcd60e51b815260040161073190613246565b60cc5433600090815260cf602052604090205410610c095760405162461bcd60e51b81526004016107319061313a565b6000610c15828561226f565b90506000610c37610c298662093a8061226f565b610c316122eb565b906121fd565b33600081815260cf60209081526040808320815160808101835289815280840189815242938201938452606082018881528354600181810186559488529587209251600490960290920194855551918401919091559051600283015551600390910155919250610ca89190846122fc565b6000610cb26122eb565b90505b81811015610d2b57600081815260d26020526040902054610cd690846121fd565b600082815260d2602090815260408083209390935533825260d3815282822084835290522054610d0690846121fd565b33600090815260d36020908152604080832085845290915290205562093a8001610cb5565b5033600090815260d96020526040902054610d5957610d486121df565b33600090815260d960205260409020555b336001600160a01b03167fd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea58487604051610d9492919061360f565b60405180910390a250506001606555505050565b60cd5481565b60026065541415610dd15760405162461bcd60e51b815260040161073190613578565b600260655533600090815260d96020526040902054801580610e015750610dfd62093a8061096d6121df565b8110155b15610e0c5750610edc565b60005b60d554811015610eba57600060d58281548110610e2857fe5b60009182526020822001546001600160a01b03169150610e48338361090f565b90508015610eb057610e646001600160a01b038316338361249a565b816001600160a01b0316336001600160a01b03167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e83604051610ea79190613606565b60405180910390a35b5050600101610e0f565b50610eca62093a8061096d6121df565b33600090815260d96020526040902055505b6001606555565b610eeb612229565b6033546001600160a01b03908116911614610f185760405162461bcd60e51b815260040161073190613414565b610f206124b9565b565b610f2a612229565b6033546001600160a01b03908116911614610f575760405162461bcd60e51b815260040161073190613414565b60cc55565b60df546001600160a01b031681565b610f73612229565b6033546001600160a01b03908116911614610fa05760405162461bcd60e51b815260040161073190613414565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610fce9033908590600401612f55565b602060405180830381600087803b158015610fe857600080fd5b505af1158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190612e3b565b505050565b60c9546001600160a01b031681565b33600090815260db602052604090205460ff166110635760405162461bcd60e51b81526004016107319061350f565b61087f3383836122fc565b60975460ff1690565b60ce5481565b600260655414156110a05760405162461bcd60e51b815260040161073190613578565b600260655560975460ff16156110c85760405162461bcd60e51b8152600401610731906132e4565b33600090815260cf60205260409020548082106110f75760405162461bcd60e51b815260040161073190613449565b6110ff612cb8565b33600090815260cf6020526040902080548490811061111a57fe5b906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505090506001820383146111f75733600090815260cf602052604090208054600019840190811061118657fe5b906000526020600020906004020160cf6000336001600160a01b03166001600160a01b0316815260200190815260200160002084815481106111c457fe5b60009182526020909120825460049092020190815560018083015490820155600280830154908201556003918201549101555b33600090815260cf6020526040902080548061120f57fe5b6000828152602081206004600019909301928302018181556001810182905560028101829055600301559055805160c954611257916001600160a01b0390911690339061249a565b6112676000338360200151612525565b336001600160a01b03167f5245d528087a96a64f4589a764f00061e4671eab90cb1e019b1a5b24b2e4c2a88260600151836000015184602001516040516112b09392919061361d565b60405180910390a25050600160655550565b60cb546001600160a01b031681565b60d26020526000908152604090205481565b60de546001600160a01b031690565b60e0546001600160a01b031681565b60d46020526000908152604090205460ff1681565b61131e612229565b6033546001600160a01b0390811691161461134b5760405162461bcd60e51b815260040161073190613414565b60cd55565b611358612229565b6033546001600160a01b039081169116146113855760405162461bcd60e51b815260040161073190613414565b6001600160a01b0382166113ab5760405162461bcd60e51b8152600401610731906130b4565b6001600160a01b038216600081815260db602052604090819020805460ff1916841515179055517f42e1635b691f8595301e5b9ff183cc4f17d70b31caba00b3da882b43c83183fa906113ff908490613076565b60405180910390a25050565b60de546001600160a01b031681565b60da6020526000908152604090205460ff1681565b6001600160a01b0316600090815260d1602052604090205490565b611452612229565b6033546001600160a01b0390811691161461147f5760405162461bcd60e51b815260040161073190613414565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b60cc5481565b60d860209081526000928352604080842090915290825290205481565b60db6020526000908152604090205460ff1681565b611509612229565b6033546001600160a01b039081169116146115365760405162461bcd60e51b815260040161073190613414565b60e080546001600160a01b0319166001600160a01b0392909216919091179055565b60d5818154811061156557fe5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff16806115985750611598612764565b806115a6575060005460ff16155b6115c25760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff161580156115ed576000805460ff1961ff0019909116610100171660011790555b6115f561276a565b6115fd6127e8565b61160561286f565b8015611617576000805461ff00191690555b50565b611622612229565b6033546001600160a01b0390811691161461164f5760405162461bcd60e51b815260040161073190613414565b610f206128fb565b61165f612229565b6033546001600160a01b0390811691161461168c5760405162461bcd60e51b815260040161073190613414565b60ce55565b6033546001600160a01b031690565b6116a8612229565b6033546001600160a01b039081169116146116d55760405162461bcd60e51b815260040161073190613414565b60c9546001600160a01b0316156116fe5760405162461bcd60e51b8152600401610731906131df565b6001600160a01b0383166117245760405162461bcd60e51b8152600401610731906135df565b6001600160a01b03821661174a5760405162461bcd60e51b8152600401610731906135af565b6001600160a01b0381166117705760405162461bcd60e51b815260040161073190613467565b60c980546001600160a01b039485166001600160a01b03199182161790915560ca80549385169382169390931790925560cb805491909316911617905561271060cc556212750060cd5561012c60ce55565b60cf60205281600052604060002081815481106117db57fe5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b60d76020526000908152604090205481565b60d66020526000908152604090205460ff1681565b611834612229565b6033546001600160a01b039081169116146118615760405162461bcd60e51b815260040161073190613414565b6001600160a01b0382166118875760405162461bcd60e51b8152600401610731906130b4565b6001600160a01b038216600081815260da602052604090819020805460ff1916841515179055517fe0d0d1199aec56521e891cd26fe0ee3ef93dbbed0757861a01e39fe747b4b684906113ff908490613076565b603481565b600260655414156119035760405162461bcd60e51b815260040161073190613578565b600260655560975460ff161561192b5760405162461bcd60e51b8152600401610731906132e4565b60006119356112e3565b6001600160a01b0316634b48152b338686868a6040518663ffffffff1660e01b8152600401611968959493929190612f6e565b602060405180830381600087803b15801561198257600080fd5b505af1158015611996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ba9190612e6f565b9050600081116119dc5760405162461bcd60e51b815260040161073190613246565b60cc5433600090815260cf602052604090205410611a0c5760405162461bcd60e51b81526004016107319061313a565b6000611a18828761226f565b90506000611a2c610c298862093a8061226f565b33600081815260cf60209081526040808320815160808101835289815280840189815242938201938452606082018881528354600181810186559488529587209251600490960290920194855551918401919091559051600283015551600390910155919250611a9d9190846122fc565b6000611aa76122eb565b90505b81811015611b2057600081815260d26020526040902054611acb90846121fd565b600082815260d2602090815260408083209390935533825260d3815282822084835290522054611afb90846121fd565b33600090815260d36020908152604080832085845290915290205562093a8001611aaa565b5033600090815260d96020526040902054611b4e57611b3d6121df565b33600090815260d960205260409020555b336001600160a01b03167fd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea58489604051611b8992919061360f565b60405180910390a2505060016065555050505050565b61271081565b60ca546001600160a01b031681565b60026065541415611bd75760405162461bcd60e51b815260040161073190613578565b600260655560975460ff1615611bff5760405162461bcd60e51b8152600401610731906132e4565b6001600160a01b038316611c255760405162461bcd60e51b8152600401610731906132bc565b336001600160a01b0384161480611c5557506001600160a01b038316600090815260d4602052604090205460ff16155b611c715760405162461bcd60e51b815260040161073190613493565b60008111611c915760405162461bcd60e51b815260040161073190613388565b6034811115611cb25760405162461bcd60e51b815260040161073190613216565b60008211611cd25760405162461bcd60e51b815260040161073190613246565b60cc546001600160a01b038416600090815260cf602052604090205410611d0b5760405162461bcd60e51b81526004016107319061313a565b60c954611d23906001600160a01b0316333085612181565b6000611d2f838361226f565b90506000611d43610c298462093a8061226f565b6001600160a01b038616600090815260cf60209081526040808320815160808101835289815280840188815242938201938452606082018781528354600181810186559488529587209251600490960290920194855551918401919091559051600283015551600390910155909150611dbd9086846122fc565b6000611dc76122eb565b90505b81811015611e5257600081815260d26020526040902054611deb90846121fd565b600082815260d260209081526040808320939093556001600160a01b038916825260d3815282822084835290522054611e2490846121fd565b6001600160a01b038716600090815260d36020908152604080832085845290915290205562093a8001611dca565b506001600160a01b038516600090815260d96020526040902054611e9257611e786121df565b6001600160a01b038616600090815260d960205260409020555b846001600160a01b03167fd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea58585604051610d9492919061360f565b33600090815260d460205260409020805460ff1916911515919091179055565b6001600160a01b038216600090815260d6602052604090205460ff16611f255760405162461bcd60e51b8152600401610731906133ed565b611f3a6001600160a01b038316333084612181565b6001600160a01b038216600090815260d76020526040902054611f5d90826121fd565b6001600160a01b03909216600090815260d7602052604090209190915550565b611f85612229565b6033546001600160a01b03908116911614611fb25760405162461bcd60e51b815260040161073190613414565b60df80546001600160a01b0319166001600160a01b0392909216919091179055565b611fdc612229565b6033546001600160a01b039081169116146120095760405162461bcd60e51b815260040161073190613414565b6001600160a01b03811661202f5760405162461bcd60e51b815260040161073190613162565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b62093a8081565b33600090815260db602052604090205460ff166120c15760405162461bcd60e51b81526004016107319061350f565b61087f338383612525565b6001600160a01b038116600090815260d6602052604090205460ff16156120f257611617565b60d5805460018082019092557f51858de9989bf7441865ebdadbf7382c8838edbf830f5d86a9a51ac773676dd60180546001600160a01b0319166001600160a01b038416908117909155600081815260d66020526040808220805460ff1916909417909355915190917ff3e4c2c64e71e6ba2eaab9a599bced62f9eb91d2cda610bf41aa8c80ff2cf82691a250565b6121d9846323b872dd60e01b8585856040516024016121a293929190612fc8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612954565b50505050565b60006121f862093a806121f242826122a9565b9061226f565b905090565b6000828201838110156122225760405162461bcd60e51b8152600401610731906131a8565b9392505050565b3390565b600061222283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129e3565b60008261227e57506000610a13565b8282028284828161228b57fe5b04146122225760405162461bcd60e51b8152600401610731906133ac565b600061222283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a0f565b60006121f862093a80610c316121df565b6001600160a01b03831615612391576001600160a01b038316600090815260dc602052604090205461232e90826121fd565b6001600160a01b03808516600090815260dc602090815260408083209490945560dd8152838220928616825291909152205461236a90826121fd565b6001600160a01b03808516600090815260dd60209081526040808320938716835292905220555b60e0546001600160a01b03838116600090815260d16020526040902054911690637094482d9084906123c381866121fd565b60d0546040518563ffffffff1660e01b81526004016123e59493929190612fec565b600060405180830381600087803b1580156123ff57600080fd5b505af1158015612413573d6000803e3d6000fd5b505060d05461242592509050826121fd565b60d0556001600160a01b038216600090815260d1602052604081205461244b90836121fd565b6001600160a01b038416600081815260d160205260409081902083905551919250907f8ad64a0ac7700dd8425ab0499f107cb6e2cd1581d803c5b8c1c79dcb8190b1af90610874908490613606565b6110208363a9059cbb60e01b84846040516024016121a2929190612f55565b60975460ff166124db5760405162461bcd60e51b81526004016107319061310c565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61250e612229565b60405161251b9190612f41565b60405180910390a1565b6001600160a01b038316156125ba576001600160a01b038316600090815260dc6020526040902054612557908261222d565b6001600160a01b03808516600090815260dc602090815260408083209490945560dd81528382209286168252919091522054612593908261222d565b6001600160a01b03808516600090815260dd60209081526040808320938716835292905220555b60e0546001600160a01b03838116600090815260d16020526040902054911690637094482d9084906125ec818661222d565b60d0546040518563ffffffff1660e01b815260040161260e9493929190612fec565b600060405180830381600087803b15801561262857600080fd5b505af115801561263c573d6000803e3d6000fd5b505060d05461264e925090508261222d565b60d0556001600160a01b038216600090815260d16020526040812054612674908361222d565b6001600160a01b03808516600090815260d160205260409081902083905560ca54905163de46e5df60e01b8152929350839291169063de46e5df906126bd908790600401612f41565b60206040518083038186803b1580156126d557600080fd5b505afa1580156126e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270d9190612e6f565b111561272b5760405162461bcd60e51b81526004016107319061335c565b826001600160a01b03167f8ad64a0ac7700dd8425ab0499f107cb6e2cd1581d803c5b8c1c79dcb8190b1af826040516108749190613606565b303b1590565b600054610100900460ff16806127835750612783612764565b80612791575060005460ff16155b6127ad5760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff161580156127d8576000805460ff1961ff0019909116610100171660011790555b6127e0612a46565b611605612ac7565b600054610100900460ff16806128015750612801612764565b8061280f575060005460ff16155b61282b5760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff16158015612856576000805460ff1961ff0019909116610100171660011790555b60016065558015611617576000805461ff001916905550565b600054610100900460ff16806128885750612888612764565b80612896575060005460ff16155b6128b25760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff161580156128dd576000805460ff1961ff0019909116610100171660011790555b6097805460ff191690558015611617576000805461ff001916905550565b60975460ff161561291e5760405162461bcd60e51b8152600401610731906132e4565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861250e612229565b60606129a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ba19092919063ffffffff16565b80519091501561102057808060200190518101906129c79190612e3b565b6110205760405162461bcd60e51b81526004016107319061352e565b60008184841115612a075760405162461bcd60e51b81526004016107319190613081565b505050900390565b60008183612a305760405162461bcd60e51b81526004016107319190613081565b506000838581612a3c57fe5b0495945050505050565b600054610100900460ff1680612a5f5750612a5f612764565b80612a6d575060005460ff16155b612a895760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff16158015611605576000805460ff1961ff0019909116610100171660011790558015611617576000805461ff001916905550565b600054610100900460ff1680612ae05750612ae0612764565b80612aee575060005460ff16155b612b0a5760405162461bcd60e51b81526004016107319061330e565b600054610100900460ff16158015612b35576000805460ff1961ff0019909116610100171660011790555b6000612b3f612229565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611617576000805461ff001916905550565b6060612bb08484600085612bb8565b949350505050565b606082471015612bda5760405162461bcd60e51b815260040161073190613276565b612be385612c79565b612bff5760405162461bcd60e51b8152600401610731906134d8565b60006060866001600160a01b03168587604051612c1c9190612f25565b60006040518083038185875af1925050503d8060008114612c59576040519150601f19603f3d011682016040523d82523d6000602084013e612c5e565b606091505b5091509150612c6e828286612c7f565b979650505050505050565b3b151590565b60608315612c8e575081612222565b825115612c9e5782518084602001fd5b8160405162461bcd60e51b81526004016107319190613081565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610a1357600080fd5b600060208284031215612d08578081fd5b6122228383612ce0565b60008060408385031215612d24578081fd5b612d2e8484612ce0565b9150612d3d8460208501612ce0565b90509250929050565b600080600060608486031215612d5a578081fd5b612d648585612ce0565b9250612d738560208601612ce0565b9150612d828560408601612ce0565b90509250925092565b60008060408385031215612d9d578182fd5b612da78484612ce0565b91506020830135612db78161367a565b809150509250929050565b60008060408385031215612dd4578182fd5b612dde8484612ce0565b946020939093013593505050565b600080600060608486031215612e00578283fd5b612e0a8585612ce0565b95602085013595506040909401359392505050565b600060208284031215612e30578081fd5b81356122228161367a565b600060208284031215612e4c578081fd5b81516122228161367a565b600060208284031215612e68578081fd5b5035919050565b600060208284031215612e80578081fd5b5051919050565b60008060408385031215612e99578182fd5b50508035926020909101359150565b60008060008060608587031215612ebd578081fd5b8435935060208501359250604085013567ffffffffffffffff80821115612ee2578283fd5b818701915087601f830112612ef5578283fd5b813581811115612f03578384fd5b8860208083028501011115612f16578384fd5b95989497505060200194505050565b60008251612f3781846020870161364e565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038616815260208101859052608060408201819052810183905260006001600160fb1b03841115612fa4578081fd5b60208402808660a0850137820160a001908152606090910191909152949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b602080825282518282018190526000919060409081850190868401855b828110156130695781518051855286810151878601528581015186860152606090810151908501526080909301929085019060010161302f565b5091979650505050505050565b901515815260200190565b60006020825282518060208401526130a081604085016020870161364e565b601f01601f19169190910160400192915050565b602080825260119082015270696e76616c6964205f616464726573732160781b604082015260600190565b602080825260139082015272496e636f7272656374206c6f636b207765656b60681b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252600e908201526d0d8dec6d6e640e8dede40daeac6d60931b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601c908201527f706172616d73206861766520616c7265616479206265656e2073657400000000604082015260600190565b60208082526016908201527545786365656473204d41585f4c4f434b5f5745454b5360501b604082015260600190565b602080825260169082015275416d6f756e74206d757374206265206e6f6e7a65726f60501b604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252600e908201526d696e76616c6964205f757365722160901b604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b602080825260129082015271151bdbc81b5d58da081d9bdd194818d85cdd60721b604082015260600190565b6020808252600a90820152694d696e2031207765656b60b01b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600d908201526c34b73b30b634b2103a37b5b2b760991b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600490820152637775743f60e01b604082015260600190565b602080825260129082015271696e76616c6964205f74726561737572792160701b604082015260600190565b60208082526025908201527f43616e6e6f74206c6f636b206f6e20626568616c66206f66207468697320616360408201526418dbdd5b9d60da1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b602080825260059082015264042c2eae8d60db1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260169082015275696e76616c6964205f62726962654d616e616765722160501b604082015260600190565b6020808252600d908201526c696e76616c6964205f71756f2160981b604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60005b83811015613669578181015183820152602001613651565b838111156121d95750506000910152565b801515811461161757600080fdfea2646970667358221220feff46760fa2685189a92be580eb8d4ae70bc609d209997c5e4ab7faf4821b9b64736f6c634300060c0033