0 txs
2.1k calls
constructor
constructor()
functions
accountedRewards
viewfunction accountedRewards() view returns (uint256)
allPendingRewards
viewfunction allPendingRewards(address _user) view returns (uint256 pending)
authorizedContracts
viewfunction authorizedContracts(address) view returns (bool)
blacklistedTokens
viewfunction blacklistedTokens(address) view returns (bool)
bountyManager
viewfunction bountyManager() view returns (address)
depositedRewards
viewfunction depositedRewards() view returns (uint256)
eligibilityEnabled
viewfunction eligibilityEnabled() view returns (bool)
eligibilityExempt
viewfunction eligibilityExempt(address) view returns (bool)
eligibleDataProvider
viewfunction eligibleDataProvider() view returns (address)
emissionSchedule
viewfunction emissionSchedule(uint256) view returns (uint128 startTimeOffset, uint128 rewardsPerSecond)
emissionScheduleIndex
viewfunction emissionScheduleIndex() view returns (uint256)
endingTime
viewfunction endingTime() view returns (uint256 estimatedTime, uint256 lastUpdatedTime, uint256 updateCadence)
lastAllPoolUpdate
viewfunction lastAllPoolUpdate() view returns (uint256)
lastRPS
viewfunction lastRPS() view returns (uint256)
leverager
viewfunction leverager() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingRewards
viewfunction pendingRewards(address _user, address[] _tokens) view returns (uint256[])
persistRewardsPerSecond
viewfunction persistRewardsPerSecond() view returns (bool)
poolConfigurator
viewfunction poolConfigurator() view returns (address)
poolInfo
viewfunction poolInfo(address) view returns (uint256 totalSupply, uint256 allocPoint, uint256 lastRewardTime, uint256 accRewardPerShare, address onwardIncentives)
poolLength
viewfunction poolLength() view returns (uint256)
registeredTokens
viewfunction registeredTokens(uint256) view returns (address)
rewardMinter
viewfunction rewardMinter() view returns (address)
rewardsPerSecond
viewfunction rewardsPerSecond() view returns (uint256)
startTime
viewfunction startTime() view returns (uint256)
totalAllocPoint
viewfunction totalAllocPoint() view returns (uint256)
userBaseClaimable
viewfunction userBaseClaimable(address) view returns (uint256)
userInfo
viewfunction userInfo(address, address) view returns (uint256 amount, uint256 rewardDebt, uint256 lastClaimTime)
addPool
nonpayablefunction addPool(address _token, uint256 _allocPoint)
afterLockUpdate
nonpayablefunction afterLockUpdate(address _user)
batchUpdateAllocPoint
nonpayablefunction batchUpdateAllocPoint(address[] _tokens, uint256[] _allocPoints)
beforeLockUpdate
nonpayablefunction beforeLockUpdate(address _user)
claim
nonpayablefunction claim(address _user, address[] _tokens)
claimAll
nonpayablefunction claimAll(address _user)
claimBounty
nonpayablefunction claimBounty(address _user, bool _execute) returns (bool issueBaseBounty)
endRewardTime
nonpayablefunction endRewardTime() returns (uint256)
handleActionAfter
nonpayablefunction handleActionAfter(address _user, uint256 _balance, uint256 _totalSupply)
handleActionBefore
nonpayablefunction handleActionBefore(address _user)
initialize
nonpayablefunction initialize(address _poolConfigurator, address _eligibleDataProvider, address _rewardMinter, uint256 _rewardsPerSecond)
pause
nonpayablefunction pause()
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, uint256 tokenAmount)
registerRewardDeposit
nonpayablefunction registerRewardDeposit(uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setBlacklistedTokens
nonpayablefunction setBlacklistedTokens(address[] _tokens, bool _value)
setBountyManager
nonpayablefunction setBountyManager(address _bountyManager)
setContractAuthorization
nonpayablefunction setContractAuthorization(address _address, bool _authorize)
setEligibilityEnabled
nonpayablefunction setEligibilityEnabled(bool _newVal)
setEligibilityExempt
nonpayablefunction setEligibilityExempt(address _contract, bool _value)
setEmissionSchedule
nonpayablefunction setEmissionSchedule(uint256[] _startTimeOffsets, uint256[] _rewardsPerSecond)
setEndingTimeUpdateCadence
nonpayablefunction setEndingTimeUpdateCadence(uint256 _lapse)
setOnwardIncentives
nonpayablefunction setOnwardIncentives(address _token, address _incentives)
setRewardsPerSecond
nonpayablefunction setRewardsPerSecond(uint256 _rewardsPerSecond, bool _persist)
start
nonpayablefunction start()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
AuthorizedContractUpdated
event AuthorizedContractUpdated(address _contract, bool _authorized)
BalanceUpdated
event BalanceUpdated(address indexed token, address indexed user, uint256 balance, uint256 totalSupply)
BatchAllocPointsUpdated
event BatchAllocPointsUpdated(address[] _tokens, uint256[] _allocPoints)
BlacklistedTokensUpdated
event BlacklistedTokensUpdated(address[] _tokens, bool _value)
BountyManagerUpdated
event BountyManagerUpdated(address indexed _bountyManager)
ChefReserveLow
event ChefReserveLow(uint256 indexed _balance)
Disqualified
event Disqualified(address indexed user)
EligibilityEnabledUpdated
event EligibilityEnabledUpdated(bool indexed _newVal)
EmissionScheduleAppended
event EmissionScheduleAppended(uint256[] startTimeOffsets, uint256[] rewardsPerSeconds)
EndingTimeUpdateCadence
event EndingTimeUpdateCadence(uint256 indexed _lapse)
Initialized
event Initialized(uint8 version)
OnwardIncentivesUpdated
event OnwardIncentivesUpdated(address indexed _token, address _incentives)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Recovered
event Recovered(address indexed token, uint256 amount)
RewardDeposit
event RewardDeposit(uint256 indexed _amount)
RewardsPerSecondUpdated
event RewardsPerSecondUpdated(uint256 indexed rewardsPerSecond, bool persist)
Unpaused
event Unpaused(address account)
errors
AddressZero
error AddressZero()
AlreadyStarted
error AlreadyStarted()
ArrayLengthMismatch
error ArrayLengthMismatch()
AuthorizationAlreadySet
error AuthorizationAlreadySet()
BountyOnly
error BountyOnly()
CadenceTooLong
error CadenceTooLong()
DuplicateSchedule
error DuplicateSchedule()
ExceedsMaxInt
error ExceedsMaxInt()
InsufficientPermission
error InsufficientPermission()
InvalidRToken
error InvalidRToken()
InvalidStart
error InvalidStart()
NotAllowed
error NotAllowed()
NotAscending
error NotAscending()
NotEligible
error NotEligible()
NothingToVest
error NothingToVest()
NotMFD
error NotMFD()
NotRTokenOrMfd
error NotRTokenOrMfd()
OutOfRewards
error OutOfRewards()
PoolExists
error PoolExists()
UnknownPool
error UnknownPool()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6149e180620000f36000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80638456cb59116101d3578063cccd82b011610104578063eacdaabc116100a2578063f5fe16101161007c578063f5fe16101461086b578063f60ccc861461087e578063f6d69c2814610891578063ff66a305146108a457600080fd5b8063eacdaabc1461083c578063edb1329414610845578063f2fde38b1461085857600080fd5b8063d0557090116100de578063d0557090146107c1578063d5b9221b146107d4578063db3e3461146107f7578063de7e410c1461081757600080fd5b8063cccd82b0146106fd578063cd1a4d861461079b578063cf756fdf146107ae57600080fd5b80639b8e556311610171578063ba04a1111161014b578063ba04a11114610761578063be05d3fb1461076a578063be9a655514610773578063bfccff451461077b57600080fd5b80639b8e55631461070e578063b26770f71461072e578063b36b9ffd1461074157600080fd5b80638e2eba09116101ad5780638e2eba09146106465780639a0ba2ea146106595780639a7b5f111461066c5780639b5a734f146106fd57600080fd5b80638456cb591461060d5780638980f11f146106155780638da5cb5b1461062857600080fd5b80633f4ba83a116102ad5780636d4f675c1161024b578063779f616911610225578063779f6169146105db57806378e97925146105e45780637ab8955d146105ed578063800ce1da1461060057600080fd5b80636d4f675c146105b7578063715018a6146105c057806377329f35146105c857600080fd5b80635d8e5d49116102875780635d8e5d491461053a5780635ea3f4fa1461054d5780635fe4f741146105605780636c47a6c3146105a557600080fd5b80633f4ba83a146105045780635c8b5f441461050c5780635c975abb1461052f57600080fd5b80631d94f24d1161031a578063334d0bbd116102f4578063334d0bbd1461048257806334c54230146104be5780633adcdfc8146104d15780633df8161c146104e457600080fd5b80631d94f24d1461044757806325dc43871461045c57806332a9caba1461046f57600080fd5b80630c634248116103565780630c634248146103d35780630f208beb146103dc57806317caf6f1146104315780631b2064f71461043a57600080fd5b806302a247701461037d5780630702a95d14610398578063081e3eda146103cb575b600080fd5b6103856108b7565b6040519081526020015b60405180910390f35b6103bb6103a636600461429b565b60a26020526000908152604090205460ff1681565b604051901515815260200161038f565b609954610385565b610385609c5481565b6104166103ea3660046142b8565b60a060209081526000928352604080842090915290825290208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161038f565b610385609f5481565b6098546103bb9060ff1681565b61045a6104553660046142f1565b610a4a565b005b61045a61046a366004614334565b610d3d565b61045a61047d366004614359565b610dbb565b610495610490366004614385565b610f7e565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161038f565b61045a6104cc3660046143ea565b610fc9565b61045a6104df36600461429b565b611171565b6104f76104f2366004614485565b6112a0565b60405161038f919061457d565b61045a611472565b6103bb61051a36600461429b565b60b06020526000908152604090205460ff1681565b60335460ff166103bb565b61045a6105483660046145c1565b611484565b61038561055b36600461429b565b611549565b60a9546105809073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161038f565b60ac5460ad5460ae5461041692919083565b61038560a55481565b61045a611628565b61045a6105d636600461429b565b61163a565b61038560a75481565b61038560a35481565b6103bb6105fb3660046145c1565b6116ab565b60a4546103bb9060ff1681565b61045a611712565b61045a610623366004614359565b611722565b60655473ffffffffffffffffffffffffffffffffffffffff16610580565b61045a610654366004614485565b611734565b610580610667366004614385565b611c0f565b6106bf61067a36600461429b565b609d60205260009081526040902080546001820154600283015460038401546004909401549293919290919073ffffffffffffffffffffffffffffffffffffffff1685565b60408051958652602086019490945292840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00161038f565b61045a61070b36600461429b565b50565b60a8546105809073ffffffffffffffffffffffffffffffffffffffff1681565b61045a61073c366004614385565b611c46565b60ab546105809073ffffffffffffffffffffffffffffffffffffffff1681565b610385609b5481565b61038560a65481565b61045a611cbe565b61038561078936600461429b565b60a16020526000908152604090205481565b61045a6107a93660046142b8565b611d06565b61045a6107bc3660046145ef565b611df0565b61045a6107cf366004614385565b61213c565b6103bb6107e236600461429b565b60af6020526000908152604090205460ff1681565b60aa546105809073ffffffffffffffffffffffffffffffffffffffff1681565b60a45461058090610100900473ffffffffffffffffffffffffffffffffffffffff1681565b610385609a5481565b61045a610853366004614640565b6121a9565b61045a61086636600461429b565b612286565b61045a610879366004614697565b61233a565b61045a61088c3660046145c1565b61239d565b61045a61089f3660046143ea565b612499565b61045a6108b236600461429b565b6127d4565b6000806108c261284b565b90506000806108d060995490565b905060005b818110156109e25760b06000609983815481106108f4576108f46146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610936576001016108d5565b6000609d60006099848154811061094f5761094f6146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902060a754600282015491925010156109d957609f54609a54826001015460a75484600201546109ae9190614712565b6109b89190614729565b6109c29190614729565b6109cc9190614766565b6109d690856147a1565b93505b506001016108d5565b504260ad55609a54610a17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ac55610a3f565b60a754609a54610a2784866147a1565b610a319190614766565b610a3b91906147a1565b60ac555b505060ac5492915050565b336000908152609e602052604090205460ff16158015610a9d5750610a6d612862565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ad4576040517f2c36303b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260b0602052604090205460ff1615610b1e576040517fef7120cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a85473ffffffffffffffffffffffffffffffffffffffff84811691161480610b795750610b4a612862565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80610ba9575073ffffffffffffffffffffffffffffffffffffffff8316600090815260a2602052604090205460ff165b15610bb357505050565b60a45460ff1615610d2c5760a9546040517f5de20b4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000921690635de20b4290602401602060405180830381865afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5391906147b9565b60a9546040517f0afb040900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015292935060009290911690630afb0409906024016020604051808303816000875af1158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef91906147b9565b90508015610d17578115610d0e57610d09338686866128fc565b610d25565b610d0985612bb0565b610d2385826001612df7565b505b5050505050565b610d38338484846128fc565b505050565b610d45612f25565b610d4d612fa6565b609a829055609880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682151590811790915560405190815282907f91bb2acfac3265da2e9b45e815cdcb50f9b349454c54e812590ecb5d109ae8dc906020015b60405180910390a25050565b60a454610100900473ffffffffffffffffffffffffffffffffffffffff163314801590610e00575060655473ffffffffffffffffffffffffffffffffffffffff163314155b15610e37576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152609d602052604090206002015415610e97576040517ff48e3c2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e9f61307c565b80609f54610ead91906147a1565b609f556099805460018181019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d0001805473ffffffffffffffffffffffffffffffffffffffff9094167fffffffffffffffffffffffff000000000000000000000000000000000000000094851681179091556000908152609d602090815260408083208085019590955542600286015560049094018054909516909455609e909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b60978181548110610f8e57600080fd5b6000918252602090912001546fffffffffffffffffffffffffffffffff80821692507001000000000000000000000000000000009091041682565b610fd1612f25565b82811461100a576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611012612fa6565b609f548360005b81811015611125576000609d6000898985818110611039576110396146b4565b905060200201602081019061104e919061429b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154600014156110c9576040517ff7139e3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8585838181106110db576110db6146b4565b905060200201358160010154856110f29190614712565b6110fc91906147a1565b9350858583818110611110576111106146b4565b60200291909101356001928301555001611019565b50609f8290556040517fcc2b8d88fa5f3a2e0003dc990c66fa3018e89b9708ecd8c7c11ff056c9dece1c9061116190889088908890889061487b565b60405180910390a1505050505050565b611179612862565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111dd576040517ff3320bfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a45460ff161561070b5760a9546040517f0afb040900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000921690630afb0409906024016020604051808303816000875af115801561125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127f91906147b9565b905080156112945761129082612bb0565b5050565b610d3882826001612df7565b60606000825167ffffffffffffffff8111156112be576112be614456565b6040519080825280602002602001820160405280156112e7578160200160208202803683370190505b50835190915060005b8181101561146857600085828151811061130c5761130c6146b4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff8116600090815260b090925260409091205490915060ff161561135357506001016112f0565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152609d6020908152604080832060a08352818420948c1684529390915290206003820154600283015442111561140e576040805160a081018252845481526001850154602082015260028501549181019190915260038401546060820152600484015473ffffffffffffffffffffffffffffffffffffffff166080820152609f546000916113fc916130a8565b915061140a905081836147a1565b9150505b6001820154825464e8d4a5100090611427908490614729565b6114319190614766565b61143b9190614712565b87868151811061144d5761144d6146b4565b60209081029190910101525050600190920191506112f09050565b5090949350505050565b61147a612f25565b611482613138565b565b60655473ffffffffffffffffffffffffffffffffffffffff1633148015906114bc575033600090815260af602052604090205460ff16155b156114f3576040517fdeda903000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260a26020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260a16020908152604080832054609980548351818602810186019094528084529194936115e19387939092918301828280156115d757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116115ac575b50505050506112a0565b805190915060005b8181101561162057828181518110611603576116036146b4565b60200260200101518461161691906147a1565b93506001016115e9565b505050919050565b611630612f25565b61148260006131b5565b61070b8160998054806020026020016040519081016040528092919081815260200182805480156116a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611676575b5050505050611734565b60ab5460009073ffffffffffffffffffffffffffffffffffffffff1633146116ff576040517fa2c4874500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61170b8383600161322c565b9392505050565b61171a612f25565b611482613386565b61172a612f25565b61129082826133e1565b61173c61344a565b60a45460ff1615611755576117538260018061322c565b505b61175d61307c565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260a160205260408120805490829055609f54835142935b81811015611a0e5760b060008783815181106117ae576117ae6146b4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff16156117ef57600101611790565b609e6000878381518110611805576118056146b4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661186f576040517fef7120cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000609d6000888481518110611887576118876146b4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546000141561190a576040517ff7139e3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191481856134b7565b600060a0600089858151811061192c5761192c6146b4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a51000836003015483600001546119c99190614729565b6119d39190614766565b60018301549091506119e582896147a1565b6119ef9190614712565b6001808401929092556002909201889055909550919091019050611790565b50611a198684613576565b60a960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663673a7e286040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a8357600080fd5b505af1158015611a97573d6000803e3d6000fd5b505050508362069780611aaa91906147a1565b611ab26108b7565b1015610d235760a854604080517fab453a59000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163ab453a599160048083019260209291908290030181865afa158015611b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4c91906148a2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd91906148bf565b6040517f1681e542d7f33ef0ad012aecd346fa867be856110f81d25dcbbd72f972a57a4590600090a250505050505050565b60998181548110611c1f57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611c4e612f25565b62093a80811115611c8b576040517f5113ff5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ae81905560405181907f4c6066dd5fe248a11e31c5a6a9b6dcbccd2383a0f85b87f3afb34f78cd0289d590600090a250565b611cc6612f25565b60a35415611d00576040517f1fbde44500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4260a355565b611d0e612f25565b73ffffffffffffffffffffffffffffffffffffffff82166000908152609d602052604090206002810154611d6e576040517ff7139e3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff848116918217909255604051908152908416907f6001221d1bef9473618c7f4928e156fea20c42629d0b4444cc83abae66bd0ac49060200160405180910390a2505050565b600054610100900460ff1615808015611e105750600054600160ff909116105b80611e2a5750303b158015611e2a575060005460ff166001145b611ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611f1957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8516611f66576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611fb3576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612000576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612008613655565b6120106136f4565b60a4805460a9805473ffffffffffffffffffffffffffffffffffffffff8881167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560a880548884169216919091179055609a859055609880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116600190811790925591891661010002919091167fffffffffffffffffffffff000000000000000000000000000000000000000000909216919091171790558015610d2557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050505050565b612144612f25565b8060a55461215291906147a1565b60a55561215d612fa6565b609a5415801561216f57506000609b54115b1561217b57609b54609a555b60405181907f413750d12f7d0aae43d7950b99c1034ded0220bbd00b4dd5582085c46461436490600090a250565b6121b1612f25565b8160005b81811015612244578260b060008787858181106121d4576121d46146b4565b90506020020160208101906121e9919061429b565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016121b5565b507f438da67664cf743a2ed7173adfb11dc6e5acd5a1a33ff333988f515157e0a1df848484604051612278939291906148d8565b60405180910390a150505050565b61228e612f25565b73ffffffffffffffffffffffffffffffffffffffff8116612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611eb2565b61070b816131b5565b612342612f25565b60a480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040517fe23460163e90b25578e7e469ea6c9c62807fb99d83cdab99cf8d9d823d2b4e3a90600090a250565b6123a5612f25565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260af602052604090205460ff161515811515141561240b576040517f406185cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260af602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f8f689f580b739f90591fbd591709dd98941c0afe7a47c812b93e978c4702bceb910160405180910390a15050565b6124a1612f25565b828015806124af5750808214155b156124e6576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561279e57801561256d57858582818110612509576125096146b4565b90506020020135868660018461251f9190614712565b81811061252e5761252e6146b4565b90506020020135111561256d576040517f4781fe9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff868683818110612590576125906146b4565b9050602002013511156125cf576040517fd2fcf5b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff8484838181106125f2576125f26146b4565b905060200201351115612631576040517fd2fcf5b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612652868683818110612646576126466146b4565b90506020020135613793565b15612689576040517fde9a71c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a354156126ef5760a35461269e9042614712565b8686838181106126b0576126b06146b4565b9050602002013510156126ef576040517f38356e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6097604051806040016040528088888581811061270e5761270e6146b4565b905060200201356fffffffffffffffffffffffffffffffff16815260200186868581811061273e5761273e6146b4565b6fffffffffffffffffffffffffffffffff60209182029390930135831690935250835460018181018655600095865294839020845194909301518216700100000000000000000000000000000000029390911692909217910155016124e9565b507f0a4b885eafe78f585b7c7667ea419f9b1b17d09dfdf23ffa7925b73db6986f168585858560405161212d94939291906148fe565b6127dc612f25565b60ab80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f399c0ee7188568b38d4bbb76666ae7a03da799c64e2a69ece47a0543021fa8d390600090a250565b600060a65460a55461285d9190614712565b905090565b60008060a860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd57ed6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f691906148a2565b92915050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152609d60205260409020600281015461295c576040517ff7139e3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61296881609f546134b7565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260a060209081526040808320938816835292905220805460038301548115612a3557600183015460009064e8d4a510006129bf8486614729565b6129c99190614766565b6129d39190614712565b90508015612a335773ffffffffffffffffffffffffffffffffffffffff8816600090815260a16020526040902054612a0c9082906147a1565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260a160205260409020555b505b82548454612a439190614712565b845585835564e8d4a51000612a588288614729565b612a629190614766565b60018401558354612a749087906147a1565b8455600484015473ffffffffffffffffffffffffffffffffffffffff1615612b36576004848101546040517fae0b537100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116938201939093528983166024820152604481018990526064810188905291169063ae0b537190608401600060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f526824944047da5b81071fb6349412005c5da81380b336103fbe5dd34556c7768888604051612b9e929190918252602082015260400190565b60405180910390a35050505050505050565b6000612bbb60995490565b905060005b81811015610d385760b0600060998381548110612bdf57612bdf6146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615612c2157600101612bc0565b600060998281548110612c3657612c366146b4565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152909116906370a0823190602401602060405180830381865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd391906148bf565b9050600060a0600060998581548110612cee57612cee6146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff9081168452838201949094526040928301822093891682529290925290205490508115801590612d415750808214155b15612ded57612ded60998481548110612d5c57612d5c6146b4565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686848486609d600060998b81548110612da257612da26146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054612dde91906147a1565b612de89190614712565b6128fc565b5050600101612bc0565b600080612e03856137f7565b60a9546040517f6f21a17900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015292935060009290911690636f21a17990602401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d91906148bf565b905080151585158015612ead5750825b8015612eb7575080155b15612ec157600193505b848015612ecb5750835b15612f1b57612ed9876138dd565b60405173ffffffffffffffffffffffffffffffffffffffff8816907fa77719a89d2325682411f1762214545e5d0fc4b374cc00cb48fcd390a670f2e190600090a25b5050509392505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611eb2565b609f546000612fb460995490565b905060005b818110156130735760b0600060998381548110612fd857612fd86146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff161561301a57600101612fb9565b61306b609d600060998481548110613034576130346146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020846134b7565b600101612fb9565b50504260a75550565b6130846108b7565b4211156130a057613093612fa6565b609a8054609b5560009055565b611482613a7c565b8151600090819080156131305760008560400151426130c79190614712565b90506000609a54826130d99190614729565b905060006130e561284b565b9050818110156130f3578091505b868860200151836131049190614729565b61310e9190614766565b95508361312064e8d4a5100088614729565b61312a9190614766565b94505050505b509250929050565b613140613b60565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000808280156132395750835b156132db5760a9546040517f0afb040900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015290911690630afb0409906024016020604051808303816000875af11580156132b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d491906147b9565b9050613372565b60a9546040517f660186e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529091169063660186e690602401602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f91906147b9565b90505b61337d858286612df7565b95945050505050565b61338e61344a565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861318b3390565b61340273ffffffffffffffffffffffffffffffffffffffff83163383613bcc565b8173ffffffffffffffffffffffffffffffffffffffff167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2882604051610daf91815260200190565b60335460ff1615611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611eb2565b4260006134c26108b7565b90508181116134cf578091505b836002015482116134e05750505050565b6040805160a081018252855481526001860154602082015260028601549181019190915260038501546060820152600485015473ffffffffffffffffffffffffffffffffffffffff166080820152600090819061353d90866130a8565b915091508160a65461354f91906147a1565b60a65560038601546135629082906147a1565b600387015550505060029092019190915550565b806135ad576040517f1a15fbab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135b7612862565b90506135c38183613c59565b6040517ea4173a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526001604483015282169062a4173a90606401600060405180830381600087803b15801561363857600080fd5b505af115801561364c573d6000803e3d6000fd5b50505050505050565b600054610100900460ff166136ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611eb2565b611482613ded565b600054610100900460ff1661378b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611eb2565b611482613e8d565b609754600090815b818110156137ed5783609782815481106137b7576137b76146b4565b6000918252602090912001546fffffffffffffffffffffffffffffffff1614156137e5575060019392505050565b60010161379b565b5060009392505050565b60008061380360995490565b905060005b818110156138d65760a0600060998381548110613827576138276146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220938816825292909252902054158015906138c0575060b0600060998381548110613889576138896146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16155b156138ce57600192506138d6565b600101613808565b5050919050565b60a45460ff16613919576040517ff8eb54de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061392460995490565b905060005b818110156139f457600060998281548110613946576139466146b4565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1680835260b090915260409091205490915060ff161561398c5750600101613929565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152609d6020908152604080832060a0835281842094891684529390915290208054156139e9576139e98387600084600001548660000154612de89190614712565b505050600101613929565b5060a9546040517fe2c75ca000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301524260248301529091169063e2c75ca090604401600060405180830381600087803b158015613a6857600080fd5b505af1158015610d23573d6000803e3d6000fd5b60985460ff1661148257609754609c5460a354600090613a9c9042614712565b90505b8282108015613ae2575060978281548110613abc57613abc6146b4565b6000918252602090912001546fffffffffffffffffffffffffffffffff90811690821610155b15613af257600190910190613a9f565b609c54821115610d3857609c829055613b09612fa6565b6097613b16600184614712565b81548110613b2657613b266146b4565b60009182526020909120015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16609a55505050565b60335460ff16611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611eb2565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610d38908490613f4e565b80613c62575050565b60a854604080517fab453a59000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163ab453a599160048083019260209291908290030181865afa158015613cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf691906148a2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015613d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8a91906148bf565b905080831115613dc6576040517faa31f1cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613de773ffffffffffffffffffffffffffffffffffffffff83168585613bcc565b50505050565b600054610100900460ff16613e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611eb2565b611482336131b5565b600054610100900460ff16613f24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611eb2565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000613fb0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661405d9092919063ffffffff16565b9050805160001480613fd1575080806020019051810190613fd191906147b9565b610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611eb2565b606061406c8484600085614074565b949350505050565b606082471015614106576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611eb2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161412f919061493e565b60006040518083038185875af1925050503d806000811461416c576040519150601f19603f3d011682016040523d82523d6000602084013e614171565b606091505b50915091506141828783838761418d565b979650505050505050565b606083156142205782516142195773ffffffffffffffffffffffffffffffffffffffff85163b614219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611eb2565b508161406c565b61406c83838151156142355781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb2919061495a565b73ffffffffffffffffffffffffffffffffffffffff8116811461070b57600080fd5b803561429681614269565b919050565b6000602082840312156142ad57600080fd5b813561170b81614269565b600080604083850312156142cb57600080fd5b82356142d681614269565b915060208301356142e681614269565b809150509250929050565b60008060006060848603121561430657600080fd5b833561431181614269565b95602085013595506040909401359392505050565b801515811461070b57600080fd5b6000806040838503121561434757600080fd5b8235915060208301356142e681614326565b6000806040838503121561436c57600080fd5b823561437781614269565b946020939093013593505050565b60006020828403121561439757600080fd5b5035919050565b60008083601f8401126143b057600080fd5b50813567ffffffffffffffff8111156143c857600080fd5b6020830191508360208260051b85010111156143e357600080fd5b9250929050565b6000806000806040858703121561440057600080fd5b843567ffffffffffffffff8082111561441857600080fd5b6144248883890161439e565b9096509450602087013591508082111561443d57600080fd5b5061444a8782880161439e565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561449857600080fd5b82356144a381614269565b915060208381013567ffffffffffffffff808211156144c157600080fd5b818601915086601f8301126144d557600080fd5b8135818111156144e7576144e7614456565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561452a5761452a614456565b60405291825284820192508381018501918983111561454857600080fd5b938501935b8285101561456d5761455e8561428b565b8452938501939285019261454d565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156145b557835183529284019291840191600101614599565b50909695505050505050565b600080604083850312156145d457600080fd5b82356145df81614269565b915060208301356142e681614326565b6000806000806080858703121561460557600080fd5b843561461081614269565b9350602085013561462081614269565b9250604085013561463081614269565b9396929550929360600135925050565b60008060006040848603121561465557600080fd5b833567ffffffffffffffff81111561466c57600080fd5b6146788682870161439e565b909450925050602084013561468c81614326565b809150509250925092565b6000602082840312156146a957600080fd5b813561170b81614326565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015614724576147246146e3565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614761576147616146e3565b500290565b60008261479c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156147b4576147b46146e3565b500190565b6000602082840312156147cb57600080fd5b815161170b81614326565b8183526000602080850194508260005b858110156148215781356147f981614269565b73ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016147e6565b509495945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561485e57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408152600061488f6040830186886147d6565b828103602084015261418281858761482c565b6000602082840312156148b457600080fd5b815161170b81614269565b6000602082840312156148d157600080fd5b5051919050565b6040815260006148ec6040830185876147d6565b90508215156020830152949350505050565b60408152600061488f60408301868861482c565b60005b8381101561492d578181015183820152602001614915565b83811115613de75750506000910152565b60008251614950818460208701614912565b9190910192915050565b6020815260008251806020840152614979816040850160208701614912565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e8b0b193737d833a964e8196691e149b7c5a5fcbbaf482226ce5ace58cdea7b564736f6c634300080c0033