0 txs
188.6k calls
constructor
constructor()
functions
balances
viewfunction balances() view returns (uint256 token0Bal, uint256 token1Bal)
balancesOfPool
viewfunction balancesOfPool() view returns (uint256 token0Bal, uint256 token1Bal, uint256 mainAmount0, uint256 mainAmount1, uint256 altAmount0, uint256 altAmount1)
balancesOfThis
viewfunction balancesOfThis() view returns (uint256 token0Bal, uint256 token1Bal)
beefyFeeConfig
viewfunction beefyFeeConfig() view returns (address)
beefyFeeRecipient
viewfunction beefyFeeRecipient() view returns (address)
currentTick
viewfunction currentTick() view returns (int24 tick)
depositFee
viewfunction depositFee() view returns (uint256)
factory
viewfunction factory() view returns (address)
fees
viewfunction fees() view returns (uint256)
gauge
viewfunction gauge() view returns (address)
getAllFees
viewfunction getAllFees() view returns (tuple)
getStratFeeId
viewfunction getStratFeeId() view returns (uint256)
isCalm
viewfunction isCalm() view returns (bool)
keeper
viewfunction keeper() view returns (address)
lastHarvest
viewfunction lastHarvest() view returns (uint256)
lastPositionAdjustment
viewfunction lastPositionAdjustment() view returns (uint256)
lockedProfit
viewfunction lockedProfit() view returns (uint256 locked0, uint256 locked1)
lpToken0
viewfunction lpToken0() view returns (address)
lpToken0ToNativePath
viewfunction lpToken0ToNativePath() view returns (bytes)
lpToken1
viewfunction lpToken1() view returns (address)
lpToken1ToNativePath
viewfunction lpToken1ToNativePath() view returns (bytes)
maxTickDeviation
viewfunction maxTickDeviation() view returns (int56)
native
viewfunction native() view returns (address)
nftManager
viewfunction nftManager() view returns (address)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
output
viewfunction output() view returns (address)
outputToNativePath
viewfunction outputToNativePath() view returns (bytes)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pool
viewfunction pool() view returns (address)
positionAlt
viewfunction positionAlt() view returns (uint256 nftId, int24 tickLower, int24 tickUpper)
positionMain
viewfunction positionMain() view returns (uint256 nftId, int24 tickLower, int24 tickUpper)
positionWidth
viewfunction positionWidth() view returns (int24)
price
viewfunction price() view returns (uint256 _price)
quoter
viewfunction quoter() view returns (address)
range
viewfunction range() view returns (uint256 lowerPrice, uint256 upperPrice)
rewardPool
viewfunction rewardPool() view returns (address)
sqrtPrice
viewfunction sqrtPrice() view returns (uint160 sqrtPriceX96)
strategist
viewfunction strategist() view returns (address)
swapFee
viewfunction swapFee() view returns (uint256 fee)
totalLocked0
viewfunction totalLocked0() view returns (uint256)
totalLocked1
viewfunction totalLocked1() view returns (uint256)
twap
viewfunction twap() view returns (int56 twapTick)
twapInterval
viewfunction twapInterval() view returns (uint32)
unirouter
viewfunction unirouter() view returns (address)
vault
viewfunction vault() view returns (address)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
beforeAction
nonpayablefunction beforeAction()
deposit
nonpayablefunction deposit()
harvest
nonpayablefunction harvest()
harvest
nonpayablefunction harvest(address _callFeeRecipient)
initialize
nonpayablefunction initialize(address _pool, address _quoter, address _nftManager, address _gauge, address _rewardPool, address _output, int24 _positionWidth, bytes[] _paths, tuple _commonAddresses)
lpToken0ToNativePrice
nonpayablefunction lpToken0ToNativePrice() returns (uint256)
lpToken1ToNativePrice
nonpayablefunction lpToken1ToNativePrice() returns (uint256)
moveTicks
nonpayablefunction moveTicks()
outputToNativePrice
nonpayablefunction outputToNativePrice() returns (uint256)
panic
nonpayablefunction panic(uint256 _minAmount0, uint256 _minAmount1)
renounceOwnership
nonpayablefunction renounceOwnership()
retireVault
nonpayablefunction retireVault()
setDeviation
nonpayablefunction setDeviation(int56 _maxDeviation)
setPositionWidth
nonpayablefunction setPositionWidth(int24 _width)
setRewardPool
nonpayablefunction setRewardPool(address _rewardPool)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setStratFeeId
nonpayablefunction setStratFeeId(uint256 _feeId)
setTwapInterval
nonpayablefunction setTwapInterval(uint32 _interval)
setUnirouter
nonpayablefunction setUnirouter(address _unirouter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 _amount0, uint256 _amount1)
events
ChargedFees
event ChargedFees(uint256 callFeeAmount, uint256 beefyFeeAmount, uint256 strategistFeeAmount)
ClaimedRewards
event ClaimedRewards(uint256 fees)
HarvestRewards
event HarvestRewards(uint256 fees)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetDeviation
event SetDeviation(int56 maxTickDeviation)
SetOutputToNativePath
event SetOutputToNativePath(bytes path)
SetPositionWidth
event SetPositionWidth(int24 oldWidth, int24 width)
SetRewardPool
event SetRewardPool(address rewardPool)
SetStrategist
event SetStrategist(address strategist)
SetStratFeeId
event SetStratFeeId(uint256 feeId)
SetTwapInterval
event SetTwapInterval(uint32 oldInterval, uint32 interval)
SetUnirouter
event SetUnirouter(address unirouter)
TVL
event TVL(uint256 bal0, uint256 bal1)
Unpaused
event Unpaused(address account)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidEntry
error InvalidEntry()
InvalidInput
error InvalidInput()
InvalidOutput
error InvalidOutput()
InvalidTicks
error InvalidTicks()
NotAuthorized
error NotAuthorized()
NotCalm
error NotCalm()
NotManager
error NotManager()
NotPool
error NotPool()
NotStrategist
error NotStrategist()
NotVault
error NotVault()
OverLimit
error OverLimit()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StrategyPaused
error StrategyPaused()
TooMuchSlippage
error TooMuchSlippage()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615b7380620000f36000396000f3fe6080604052600436106103fd5760003560e01c80637bb98a6811610213578063b83d268311610123578063e48f98fd116100ab578063f1a392da1161007a578063f1a392da14610b8e578063f20eaeb814610ba4578063f2fde38b14610bc4578063fbfa77cf14610be4578063fcc25e1314610c0457600080fd5b8063e48f98fd14610b44578063e88b91ea14610b59578063e941fa7814610810578063e97206a914610b7957600080fd5b8063c7b9d530116100f2578063c7b9d53014610ac5578063c7d5413214610ae5578063d0e30db014610afa578063d92f3d7314610b0f578063dc66b43314610b2f57600080fd5b8063b83d268314610a46578063bc415d8a14610a5b578063c45a015514610a85578063c6bbd5a714610aa557600080fd5b806399cd2446116101a6578063a035b1fe11610175578063a035b1fe146109c5578063a6f19c84146109da578063aced1661146109fa578063b20feaaf14610a0f578063b3a60cb314610a3157600080fd5b806399cd24461461093c5780639af1d35a146109855780639bdde46b1461099b5780639c6d4904146109b057600080fd5b80638cfc0250116101e25780638cfc0250146108df5780638da5cb5b146108f45780638e14545914610912578063953d329f1461092757600080fd5b80637bb98a681461087a5780638097e2491461088f578063865238d4146108a9578063877562b6146108bf57600080fd5b80633c1d5df01161030e57806354cf2aeb116102a157806366666aa91161027057806366666aa9146107f057806367a5279314610810578063696c58e514610824578063715018a61461084557806378238c371461085a57600080fd5b806354cf2aeb146107775780635c975abb1461078c5780635ee167c0146107b057806360991346146107d057600080fd5b8063441a3e70116102dd578063441a3e701461071857806344b81396146107385780634641257d1461074d5780634746fb551461076257600080fd5b80633c1d5df01461068a5780633c334dd5146106c35780633e55f932146106e35780633f4ba83a1461070357600080fd5b806316b9cd9c116103915780631dcfeddd116103605780631dcfeddd146105f25780631fe4a68614610614578063257ae0de146106345780632b950b6614610654578063362c28c61461066a57600080fd5b806316b9cd9c1461058857806316f0115b1461059d57806317dd7a72146105bd5780631d27050f146105d257600080fd5b806311b0b42d116103cd57806311b0b42d146104cf5780631208aa181461050757806312cf13811461052f578063150b7a021461054f57600080fd5b8062a4b5c91461043457806304c404b314610463578063065e5360146104875780630e5c011e146104af57600080fd5b3661042f5760d3546001600160a01b0316331461042d5760405163ea8e4eb560e01b815260040160405180910390fd5b005b600080fd5b34801561044057600080fd5b50610449610c46565b604080519283526020830191909152015b60405180910390f35b34801561046f57600080fd5b50610479609d5481565b60405190815260200161045a565b34801561049357600080fd5b5061049c610e55565b60405160029190910b815260200161045a565b3480156104bb57600080fd5b5061042d6104ca366004614a0e565b610ece565b3480156104db57600080fd5b506097546104ef906001600160a01b031681565b6040516001600160a01b03909116815260200161045a565b34801561051357600080fd5b5061051c610eda565b60405160069190910b815260200161045a565b34801561053b57600080fd5b5061042d61054a366004614a3a565b611049565b34801561055b57600080fd5b5061056f61056a366004614a57565b6110c6565b6040516001600160e01b0319909116815260200161045a565b34801561059457600080fd5b506104796110d8565b3480156105a957600080fd5b5060d1546104ef906001600160a01b031681565b3480156105c957600080fd5b5061042d611216565b3480156105de57600080fd5b5061042d6105ed366004614b08565b611230565b3480156105fe57600080fd5b506106076112d1565b60405161045a9190614b75565b34801561062057600080fd5b50609a546104ef906001600160a01b031681565b34801561064057600080fd5b506099546104ef906001600160a01b031681565b34801561066057600080fd5b50610479609c5481565b34801561067657600080fd5b5061042d610685366004614b97565b61135f565b34801561069657600080fd5b5060e1546106ae90600160501b900463ffffffff1681565b60405163ffffffff909116815260200161045a565b3480156106cf57600080fd5b5061042d6106de366004614bcc565b611402565b3480156106ef57600080fd5b5061042d6106fe366004614cd7565b611756565b34801561070f57600080fd5b5061042d61184b565b34801561072457600080fd5b5061042d610733366004614cf0565b6118f8565b34801561074457600080fd5b506104496119bb565b34801561075957600080fd5b5061042d611a30565b34801561076e57600080fd5b506104ef611a39565b34801561078357600080fd5b50610479611aac565b34801561079857600080fd5b5060655460ff165b604051901515815260200161045a565b3480156107bc57600080fd5b5060d6546104ef906001600160a01b031681565b3480156107dc57600080fd5b5061042d6107eb366004614cf0565b611b4b565b3480156107fc57600080fd5b5060d8546104ef906001600160a01b031681565b34801561081c57600080fd5b506000610479565b34801561083057600080fd5b5060e15461051c906301000000900460060b81565b34801561085157600080fd5b5061042d611bfd565b34801561086657600080fd5b5061042d610875366004614a0e565b611c0f565b34801561088657600080fd5b50610449611c7b565b34801561089b57600080fd5b5060e15461049c9060020b81565b3480156108b557600080fd5b50610479609f5481565b3480156108cb57600080fd5b5060d7546104ef906001600160a01b031681565b3480156108eb57600080fd5b50610479611ccb565b34801561090057600080fd5b506033546001600160a01b03166104ef565b34801561091e57600080fd5b506104ef611d40565b34801561093357600080fd5b50610607611d8a565b34801561094857600080fd5b5060df5460e0546109669190600281810b9163010000009004900b83565b60408051938452600292830b6020850152910b9082015260600161045a565b34801561099157600080fd5b5061047960d95481565b3480156109a757600080fd5b506107a0611d97565b3480156109bc57600080fd5b50610479611e3f565b3480156109d157600080fd5b50610479611f24565b3480156109e657600080fd5b5060d4546104ef906001600160a01b031681565b348015610a0657600080fd5b506104ef611f63565b348015610a1b57600080fd5b50610a24611fad565b60405161045a9190614d12565b348015610a3d57600080fd5b5061042d611fdd565b348015610a5257600080fd5b506104ef612111565b348015610a6757600080fd5b5060dd5460de546109669190600281810b9163010000009004900b83565b348015610a9157600080fd5b50609b546104ef906001600160a01b031681565b348015610ab157600080fd5b5060d2546104ef906001600160a01b031681565b348015610ad157600080fd5b5061042d610ae0366004614a0e565b61218a565b348015610af157600080fd5b5061042d612203565b348015610b0657600080fd5b5061042d612303565b348015610b1b57600080fd5b5061042d610b2a366004614a0e565b612393565b348015610b3b57600080fd5b506104796123ff565b348015610b5057600080fd5b506106076124e4565b348015610b6557600080fd5b5060d3546104ef906001600160a01b031681565b348015610b8557600080fd5b506104496124f1565b348015610b9a57600080fd5b50610479609e5481565b348015610bb057600080fd5b5060d5546104ef906001600160a01b031681565b348015610bd057600080fd5b5061042d610bdf366004614a0e565b612524565b348015610bf057600080fd5b506098546104ef906001600160a01b031681565b348015610c1057600080fd5b50610c1961259a565b604080519687526020870195909552938501929092526060840152608083015260a082015260c00161045a565b60d95460d65460d554600092839290916001600160a01b03918216911603610ce55760d6546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd49190614d8f565b610cde9190614dbe565b9250610d54565b60d6546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d519190614d8f565b92505b60d75460d5546001600160a01b03918216911603610de95760d7546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd89190614d8f565b610de29190614dbe565b9150509091565b60d7546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de29190614d8f565b60d15460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260c09291908290030181865afa158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec39190614dfe565b509295945050505050565b610ed7816126b8565b50565b6040805160028082526060820183526000928392919060208301908036833701905050905060e1600a9054906101000a900463ffffffff1681600081518110610f2557610f25614e8d565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610f5457610f54614e8d565b63ffffffff9092166020928302919091019091015260d15460405163883bdbfd60e01b81526000916001600160a01b03169063883bdbfd90610f9a908590600401614ea3565b600060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fdf9190810190614fe3565b50905060e1600a9054906101000a900463ffffffff1660030b8160008151811061100b5761100b614e8d565b60200260200101518260018151811061102657611026614e8d565b602002602001015161103891906150a8565b61104291906150eb565b9250505090565b611051612782565b60e15460408051600292830b81529183900b60208301527f69d927977053f4ff4a26e8d792564e367e844a869cda4df12630bf7b62a632de910160405180910390a161109b6127dc565b6110a3612869565b60e1805462ffffff191662ffffff83161790556110be612e44565b610ed7612e9a565b630a85bd0160e11b5b95945050505050565b600080600a60d760009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111549190615129565b61115f90600a615230565b611169919061523f565b60975460d7549192506001600160a01b0390811691160361118957919050565b60d25460405163cdca175360e01b81526000916001600160a01b03169063cdca1753906111bd9060dc908690600401615287565b6000604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611204919081019061531e565b505050905080600a61104291906153f0565b61121e6130e1565b6112266127dc565b61122e612869565b565b611238612782565b60e1546040805163ffffffff600160501b9093048316815291831660208301527f86139943149914833c057d2c24f3a3967cce8e6aba2eb12e422500d8a51ffc7b910160405180910390a1603c8163ffffffff1610156112ab5760405163b4fa3fb360e01b815260040160405180910390fd5b60e1805463ffffffff909216600160501b0263ffffffff60501b19909216919091179055565b60db80546112de90615253565b80601f016020809104026020016040519081016040528092919081815260200182805461130a90615253565b80156113575780601f1061132c57610100808354040283529160200191611357565b820191906000526020600020905b81548152906001019060200180831161133a57829003601f168201915b505050505081565b611367612782565b604051600682900b81527f69d3f73bfb3c2f0de63dc1de2ed486cf45d88ebfff8cb1e8f124b085d2bafb979060200160405180910390a16113a661310c565b6113b1906004615407565b60020b8160060b126113d65760405163b4fa3fb360e01b815260040160405180910390fd5b60e1805466ffffffffffffff90921663010000000269ffffffffffffff00000019909216919091179055565b600054610100900460ff16158080156114225750600054600160ff909116105b8061143c5750303b15801561143c575060005460ff166001145b6114a45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156114c7576000805461ff0019166101001790555b6114d08261317a565b60d180546001600160a01b03199081166001600160a01b038e811691821790935560d2805483168e851617905560d5805483168a851617905560d3805483168d851617905560d4805483168c851617905560d88054909216928a1692909217905560408051630dfe168160e01b81529051630dfe1681916004808201926020929091908290030181865afa15801561156c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115909190615439565b60d660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116189190615439565b60d780546001600160a01b0319166001600160a01b039290921691909117905560e1805462ffffff191662ffffff8716179055838360008161165c5761165c614e8d565b905060200281019061166e9190615456565b60da9161167c9190836154ec565b508383600181811061169057611690614e8d565b90506020028101906116a29190615456565b60db916116b09190836154ec565b50838360028181106116c4576116c4614e8d565b90506020028101906116d69190615456565b60dc916116e49190836154ec565b5060e1805463ffffffff60501b1916600f60531b1790556117036132ef565b8015611749576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6033546001600160a01b0316331480159061178a5750611774611f63565b6001600160a01b0316336001600160a01b031614155b156117a85760405163607e454560e11b815260040160405180910390fd5b6117b0611a39565b6001600160a01b0316633e55f932826040518263ffffffff1660e01b81526004016117dd91815260200190565b600060405180830381600087803b1580156117f757600080fd5b505af115801561180b573d6000803e3d6000fd5b505050507f9163810ee1e29168d4ce900e48a333fb8fbd3fd070d2bef67f6d4db0846a469f8160405161184091815260200190565b60405180910390a150565b6033546001600160a01b0316331480159061187f5750611869611f63565b6001600160a01b0316336001600160a01b031614155b1561189d5760405163607e454560e11b815260040160405180910390fd5b60006118b16033546001600160a01b031690565b6001600160a01b0316036118d85760405163ea8e4eb560e01b815260040160405180910390fd5b6118e06132ef565b6118e861336b565b6118f0612e44565b61122e612e9a565b6119006130e1565b60e2544203611911576119116133bd565b81156119345760985460d654611934916001600160a01b039182169116846133e2565b80156119575760985460d754611957916001600160a01b039182169116836133e2565b61195f613446565b61196b5761196b612e9a565b600080611976611c7b565b60408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a8910160405180910390a150505050565b6000806000609e54426119ce9190614dbe565b90506000610e1082106119e25760006119ee565b6119ee82610e10614dbe565b9050610e1081609c54611a0191906153f0565b611a0b919061523f565b610e1082609d54611a1c91906153f0565b611a26919061523f565b9350935050509091565b61122e326126b8565b609b5460408051634746fb5560e01b815290516000926001600160a01b031691634746fb559160048083019260209291908290030181865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190615439565b905090565b6000620f4240670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3291906155ac565b62ffffff16611b4191906153f0565b611aa7919061523f565b6033546001600160a01b03163314801590611b7f5750611b69611f63565b6001600160a01b0316336001600160a01b031614155b15611b9d5760405163607e454560e11b815260040160405180910390fd5b611ba56127dc565b611bad612869565b611bb56134d1565b611bbd613549565b600080611bc8611c7b565b9150915083821080611bd957508281105b15611bf75760405163fa6ad35560e01b815260040160405180910390fd5b50505050565b611c05612782565b61122e6000613586565b611c17612782565b611c1f6134d1565b60d880546001600160a01b0319166001600160a01b038316179055611c426132ef565b6040516001600160a01b03821681527f173d73afad648e625c4a53878536f7a2debed1f51a04f21d728bce3cf534fcc190602001611840565b600080600080611c89610c46565b91509150600080611c9861259a565b505050509150915060008285611cae91906155d1565b90506000611cbc83866155d1565b91989197509095505050505050565b6000611cd5611a39565b604051636788231160e11b81523060048201526001600160a01b03919091169063cf104622906024015b602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190614d8f565b609b5460408051638e14545960e01b815290516000926001600160a01b031691638e1454599160048083019260209291908290030181865afa158015611a83573d6000803e3d6000fd5b60dc80546112de90615253565b600080611da2610e55565b90506000611dae610eda565b60e154909150600090611ddc90611dcf906301000000900460060b846150a8565b60060b620d89e7196135d8565b60e154909150600090611e0990611dfd906301000000900460060b856155e4565b60060b620d89e86135f2565b90508360020b8260060b1380611e2457508360020b8160060b125b15611e3457600094505050505090565b600194505050505090565b600080600a60d660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb9190615129565b611ec690600a615230565b611ed0919061523f565b60975460d6549192506001600160a01b03908116911603611ef057919050565b60d25460405163cdca175360e01b81526000916001600160a01b03169063cdca1753906111bd9060db908690600401615287565b600080611f2f612111565b90506002611f53826001600160a01b0316670de0b6b3a7640000600160601b613601565b611f5d9190615230565b91505090565b609b546040805163aced166160e01b815290516000926001600160a01b03169163aced16619160048083019260209291908290030181865afa158015611a83573d6000803e3d6000fd5b611fb5614996565b6040518060600160405280611fc86136b5565b81526020016000815260200160009052919050565b611fe5612782565b609860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205c9190614d8f565b6103e81461207d5760405163ea8e4eb560e01b815260040160405180910390fd5b612088600080611b4b565b6000612092611d40565b905060008061209f610c46565b909250905081156120c15760d6546120c1906001600160a01b031684846133e2565b80156120de5760d7546120de906001600160a01b031684836133e2565b60006120e8613766565b905080156121075760d554612107906001600160a01b031685836133e2565b611bf76000613586565b60d15460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260c09291908290030181865afa15801561215b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217f9190614dfe565b509395945050505050565b609a546001600160a01b031633146121b557604051633163ba6d60e11b815260040160405180910390fd5b609a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f46d58e3fa07bf19b1d27240f0e286b27e9f7c1b0d88933333fe833b60eec541290602001611840565b61220b6133bd565b609b546040516305226abd60e51b81523360048201526001600160a01b039091169063a44d57a090602401602060405180830381865afa158015612253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122779190615611565b6122945760405163ea8e4eb560e01b815260040160405180910390fd5b61229c6127dc565b6122a4612869565b6122ac612e44565b6122b4612e9a565b6000806122bf611c7b565b60408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a891015b60405180910390a15050565b61230b6133bd565b6123136130e1565b60e154600160701b900460ff166123405761232c612e44565b60e1805460ff60701b1916600160701b1790555b612348612e9a565b600080612353611c7b565b4260e25560408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a891016122f7565b61239b612782565b6123a36134d1565b609980546001600160a01b0319166001600160a01b0383161790556123c66132ef565b6040516001600160a01b03821681527f5ca6e64c4522e68e154aa9372f2c5969cd37d9640e59f66953dc472f54ee86fa90602001611840565b600080600a60d560009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247b9190615129565b61248690600a615230565b612490919061523f565b60975460d5549192506001600160a01b039081169116036124b057919050565b60d25460405163cdca175360e01b81526000916001600160a01b03169063cdca1753906111bd9060da908690600401615287565b60da80546112de90615253565b60de5460009081906125059060020b613797565b60de5490925061251e906301000000900460020b613797565b90509091565b61252c612782565b6001600160a01b0381166125915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161149b565b610ed781613586565b60008060008060008060006125ad612111565b905060008060008060008060dd600001546000146125d95760dd546125d1906137cd565b919750945092505b60df54156125f55760df546125ed906137cd565b919650925090505b60de5461262690889061260a9060020b613862565b60de54612620906301000000900460020b613862565b89613b98565b60e054919c509a5061265c9088906126409060020b613862565b60e054612656906301000000900460020b613862565b88613b98565b909950975061266b848c6155d1565b9a50612677838b6155d1565b9950612683828a6155d1565b985061268f81896155d1565b975061269b898c6155d1565b9c506126a7888b6155d1565b9b5050505050505050909192939495565b6126c06133bd565b6126c86127dc565b60006126d68260d954613c34565b600060d95560d85460d5546040516328f362b160e21b81526001600160a01b03918216600482015260248101849052620151806044820152929350169063a3cd8ac490606401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b505042609e5550506040518181527fc8004e996aeb9ddf998debb2ef732f1fc90ad7ef353fc45c0559b81497429904906020016122f7565b6033546001600160a01b0316331461122e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161149b565b60006127e6613766565b60dd54909150156127fd5760dd546127fd90613e7c565b60df54156128115760df5461281190613e7c565b60008161281c613766565b6128269190614dbe565b90508060d95461283691906155d1565b60d9556040518181527fbaff721654472c7678712abe6447438f26b27dbb4fc4e0b96fd8174ce684a4c9906020016122f7565b60dd546000908190156129645760d35460dd5460405163133f757160e31b81526001600160a01b03909216916399fbab88916128ab9160040190815260200190565b61018060405180830381865afa1580156128c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ed9190615643565b505060d45460dd54604051632e1a7d4d60e01b8152949d506001600160a01b039091169a50632e1a7d4d99506129319850965050600490910193506149f092505050565b600060405180830381600087803b15801561294b57600080fd5b505af115801561295f573d6000803e3d6000fd5b505050505b60df5415612a5a5760d35460df5460405163133f757160e31b81526001600160a01b03909216916399fbab88916129a19160040190815260200190565b61018060405180830381865afa1580156129bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e39190615643565b505060d45460df54604051632e1a7d4d60e01b8152949c506001600160a01b039091169a50632e1a7d4d9950612a279850965050600490910193506149f092505050565b600060405180830381600087803b158015612a4157600080fd5b505af1158015612a55573d6000803e3d6000fd5b505050505b612a956040518060a001604052806000815260200160006001600160801b031681526020016000815260200160008152602001600081525090565b6040805160808101825260008082526020820181905291810182905260608101919091526001600160801b03841615612c7c5750506040805160a08101825260dd548082526001600160801b0385811660208085019190915260008486018190526060808601919091524260808087019190915286519081018752938452309184019190915282850182905282015260d3549251630624e65f60e11b8152919290916001600160a01b0390911690630c49ccbe90612b57908590600401615724565b60408051808303816000875af1158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b999190615767565b505060d35460405163fc6f786560e01b81526001600160a01b039091169063fc6f786590612bcb90849060040161578b565b60408051808303816000875af1158015612be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0d9190615767565b505060d35460dd54604051630852cd8d60e31b81526001600160a01b03909216916342966c6891612c449160040190815260200190565b600060405180830381600087803b158015612c5e57600080fd5b505af1158015612c72573d6000803e3d6000fd5b5050600060dd5550505b6001600160801b03831615611bf75750506040805160a08101825260df548082526001600160801b0384811660208085019190915260008486018190526060808601919091524260808087019190915286519081018752938452309184019190915282850182905282015260d3549251630624e65f60e11b8152919290916001600160a01b0390911690630c49ccbe90612d1a908590600401615724565b60408051808303816000875af1158015612d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5c9190615767565b505060d35460405163fc6f786560e01b81526001600160a01b039091169063fc6f786590612d8e90849060040161578b565b60408051808303816000875af1158015612dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd09190615767565b505060d35460df54604051630852cd8d60e31b81526001600160a01b03909216916342966c6891612e079160040190815260200190565b600060405180830381600087803b158015612e2157600080fd5b505af1158015612e35573d6000803e3d6000fd5b5050600060df55505050505050565b612e4c6133bd565b6000612e56610e55565b90506000612e6261310c565b60e154909150600090612e7990839060020b615407565b9050612e86838383613edd565b612e91838383613f18565b505042609f5550565b612ea26133bd565b612eaa614070565b600080612eb5610c46565b60de5460e054929450909250600281810b92630100000092839004820b9281830b929104900b6000612ee5612111565b9050600080600080612ef689613862565b90506000612f0389613862565b9050612f128683838f8f614111565b9450612f2086838388613b98565b909450925050506001600160801b03831615801590612f475750811580612f45575080155b155b15612f6c57612f5a8888848460016141d3565b612f62610c46565b909a509850612f74565b612f746133bd565b6000612f7f87613862565b90506000612f8c87613862565b9050612f9b8683838f8f614111565b9450612fa986838388613b98565b9094509250612fbb8683838787614111565b945050506000836001600160801b0316118015612fe257506000821180612fe25750600081115b15612ff557612ff58686848460006141d3565b60dd54156130655760d45460dd5460405163b6b55f2560e01b81526001600160a01b039092169163b6b55f25916130329160040190815260200190565b600060405180830381600087803b15801561304c57600080fd5b505af1158015613060573d6000803e3d6000fd5b505050505b60df54156130d55760d45460df5460405163b6b55f2560e01b81526001600160a01b039092169163b6b55f25916130a29160040190815260200190565b600060405180830381600087803b1580156130bc57600080fd5b505af11580156130d0573d6000803e3d6000fd5b505050505b50505050505050505050565b6098546001600160a01b0316331461122e576040516362df054560e01b815260040160405180910390fd5b60d154604080516334324e9f60e21b815290516000926001600160a01b03169163d0c93a7c9160048083019260209291908290030181865afa158015613156573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa791906157ce565b600054610100900460ff166131a15760405162461bcd60e51b815260040161149b906157eb565b6131a9614362565b6131b1614391565b6131be6020820182614a0e565b609880546001600160a01b0319166001600160a01b03929092169190911790556131ee6040820160208301614a0e565b609980546001600160a01b0319166001600160a01b039290921691909117905561321e6060820160408301614a0e565b609a80546001600160a01b0319166001600160a01b039290921691909117905561324e6080820160608301614a0e565b609b80546001600160a01b0319166001600160a01b03929092169182179055604080516311b0b42d60e01b815290516311b0b42d916004808201926020929091908290030181865afa1580156132a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cc9190615439565b609780546001600160a01b0319166001600160a01b039290921691909117905550565b60995460d55461330e916001600160a01b0391821691166000196143c0565b60d85460d55461332d916001600160a01b0391821691166000196143c0565b60d35460d65461334c916001600160a01b0391821691166000196143c0565b60d35460d75461122e916001600160a01b0391821691166000196143c0565b613373614450565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6133c5611d97565b61122e576040516313643c3b60e11b815260040160405180910390fd5b6040516001600160a01b0383811660248301526044820183905261344191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614499565b505050565b600061345460655460ff1690565b80611aa75750609b60009054906101000a90046001600160a01b03166001600160a01b031663f12d54d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190615611565b60995460d5546134ef916001600160a01b03918216911660006143c0565b60d85460d55461350d916001600160a01b03918216911660006143c0565b60d35460d65461352b916001600160a01b03918216911660006143c0565b60d35460d75461122e916001600160a01b03918216911660006143c0565b6135516144fc565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586133a03390565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008183136135e757816135e9565b825b90505b92915050565b60008183126135e757816135e9565b600080806000198587098587029250828110838203039150508060000361363a576000841161362f57600080fd5b5082900490506136ae565b80841161364657600080fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6136f06040518060c0016040528060008152602001600081526020016000815260200160008152602001606081526020016000151581525090565b6136f8611a39565b604051639af608c960e01b81523060048201526001600160a01b039190911690639af608c990602401600060405180830381865afa15801561373e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190615836565b60d5546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401611cff565b600060026137c36137a784613862565b6001600160a01b0316670de0b6b3a7640000600160601b613601565b6135ec9190615230565b60d35460405163133f757160e31b815260048101839052600091829182916001600160a01b0316906399fbab889060240161018060405180830381865afa15801561381c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138409190615643565b939f6001600160801b039182169f5093169c50919a5050505050505050505050565b60008060008360020b12613879578260020b613881565b8260020b6000035b9050620d89e88111156138ba5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640161149b565b6000816001166000036138d157600160801b6138e3565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613917576ffff97272373d413259a46990580e213a0260801c5b6004821615613936576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613955576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613974576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613993576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156139b2576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156139d1576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156139f1576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613a11576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613a31576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613a51576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613a71576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613a91576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613ab1576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613ad1576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613af2576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613b12576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613b31576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613b4e576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613b6f578060001981613b6b57613b6b6150d5565b0490505b640100000000810615613b83576001613b86565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115613bb9579293925b846001600160a01b0316866001600160a01b031611613be457613bdd858585614542565b9150613c2b565b836001600160a01b0316866001600160a01b03161015613c1d57613c09868585614542565b9150613c168587856145bd565b9050613c2b565b613c288585856145bd565b90505b94509492505050565b600080613c3f6136b5565b905060008315613d75578151600090670de0b6b3a764000090613c6290876153f0565b613c6c919061523f565b9050613c788186614dbe565b9350600080613c85614607565b60975460d5549192506001600160a01b03918216911614613d3b5760995460d554609754604051630df791e560e41b81526001600160a01b03928316600482015290821660248201526044810186905291169063df791e50906064016020604051808303816000875af1158015613d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d249190614d8f565b5080613d2e614607565b613d389190614dbe565b91505b60975460d5546001600160a01b03918216911603613d6457613d5d83856155d1565b9350613d71565b613d6e82856155d1565b93505b5050505b6000670de0b6b3a7640000836040015183613d9091906153f0565b613d9a919061523f565b609754909150613db4906001600160a01b031687836133e2565b6000670de0b6b3a7640000846060015184613dcf91906153f0565b613dd9919061523f565b609a54609754919250613df9916001600160a01b039081169116836133e2565b600081613e068486614dbe565b613e109190614dbe565b9050613e30613e1d611d40565b6097546001600160a01b031690836133e2565b60408051848152602081018390529081018390527fd255b592c7f268a73e534da5219a60ff911b4cf6daae21c7d20527dd657bd99a9060600160405180910390a1505050505092915050565b60d454604051631c4b774b60e01b8152600481018390526001600160a01b0390911690631c4b774b90602401600060405180830381600087803b158015613ec257600080fd5b505af1158015613ed6573d6000803e3d6000fd5b5050505050565b613ee8838284614638565b60de805465ffffffffffff1916630100000062ffffff9384160262ffffff19161792909116919091179055505050565b600080613f23610c46565b909250905060008215613f5f576ec097ce7bc90715b34b9f1000000000613f48611f24565b613f5290856153f0565b613f5c919061523f565b90505b81811015613fbe57613f72868587614638565b5060e0805462ffffff191662ffffff92909216919091179055613f96868680614638565b5060e0805462ffffff90921663010000000265ffffff00000019909216919091179055614019565b8082101561401957613fd1868687614638565b60e0805462ffffff191662ffffff9290921691909117905550613ff5868587614638565b60e0805462ffffff90921663010000000265ffffff00000019909216919091179055505b60e05460de54600291820b910b14801561404a575060e05460de54630100000091829004600290810b92909104900b145b1561406857604051631434ed7f60e01b815260040160405180910390fd5b505050505050565b60655460ff16806140f35750609b60009054906101000a90046001600160a01b03166001600160a01b031663f12d54d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f39190615611565b1561122e5760405163e628b94960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b03161115614131579293925b846001600160a01b0316866001600160a01b03161161415c5761415585858561466a565b90506110cf565b836001600160a01b0316866001600160a01b031610156141be57600061418387868661466a565b905060006141928789866146d4565b9050806001600160801b0316826001600160801b0316106141b357806141b5565b815b925050506110cf565b6141c98585846146d4565b9695505050505050565b604080516101808101825260d6546001600160a01b03908116825260d754166020820152600091810161420461310c565b60020b81526020018760020b81526020018660020b81526020018581526020018481526020016000815260200160008152602001306001600160a01b0316815260200142815260200160006001600160a01b03168152509050600060d360009054906101000a90046001600160a01b03166001600160a01b031663b5007d1f836040518263ffffffff1660e01b81526004016142a0919061592c565b6080604051808303816000875af11580156142bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e39190615a05565b505050905082156142f85760dd8190556142fe565b60df8190555b60d35460d45460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401600060405180830381600087803b15801561434e57600080fd5b505af1158015611749573d6000803e3d6000fd5b600054610100900460ff166143895760405162461bcd60e51b815260040161149b906157eb565b61122e61470a565b600054610100900460ff166143b85760405162461bcd60e51b815260040161149b906157eb565b61122e61473a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614411848261476d565b611bf7576040516001600160a01b0384811660248301526000604483015261444691869182169063095ea7b39060640161340f565b611bf78482614499565b60655460ff1661122e5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161149b565b60006144ae6001600160a01b03841683614810565b905080516000141580156144d35750808060200190518101906144d19190615611565b155b1561344157604051635274afe760e01b81526001600160a01b038416600482015260240161149b565b60655460ff161561122e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161149b565b6000826001600160a01b0316846001600160a01b03161115614562579192915b6001600160a01b0384166145ab6fffffffffffffffffffffffffffffffff60601b606085901b166145938787615a41565b6001600160a01b0316866001600160a01b0316613601565b6145b5919061523f565b949350505050565b6000826001600160a01b0316846001600160a01b031611156145dd579192915b6145b56001600160801b0383166145f48686615a41565b6001600160a01b0316600160601b613601565b6097546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401611cff565b6000806000614647868561481e565b90506146538582615a61565b925061465f8582615a86565b915050935093915050565b6000826001600160a01b0316846001600160a01b0316111561468a579192915b60006146ad856001600160a01b0316856001600160a01b0316600160601b613601565b90506110cf6146cf84836146c18989615a41565b6001600160a01b0316613601565b614868565b6000826001600160a01b0316846001600160a01b031611156146f4579192915b6145b56146cf83600160601b6146c18888615a41565b600054610100900460ff166147315760405162461bcd60e51b815260040161149b906157eb565b61122e33613586565b600054610100900460ff166147615760405162461bcd60e51b815260040161149b906157eb565b6065805460ff19169055565b6000806000846001600160a01b03168460405161478a9190615aab565b6000604051808303816000865af19150503d80600081146147c7576040519150601f19603f3d011682016040523d82523d6000602084013e6147cc565b606091505b50915091508180156147f65750805115806147f65750808060200190518101906147f69190615611565b80156110cf5750505050506001600160a01b03163b151590565b60606135e983836000614883565b60008061482b8385615ac7565b905060008460020b12801561484b57506148458385615af8565b60020b15155b1561485e578061485a81615b1a565b9150505b6145b58382615407565b806001600160801b038116811461487e57600080fd5b919050565b6060814710156148a85760405163cd78605960e01b815230600482015260240161149b565b600080856001600160a01b031684866040516148c49190615aab565b60006040518083038185875af1925050503d8060008114614901576040519150601f19603f3d011682016040523d82523d6000602084013e614906565b606091505b50915091506141c9868383606082614926576149218261496d565b6136ae565b815115801561493d57506001600160a01b0384163b155b1561496657604051639996b31560e01b81526001600160a01b038516600482015260240161149b565b50806136ae565b80511561497d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806149dc6040518060c0016040528060008152602001600081526020016000815260200160008152602001606081526020016000151581525090565b815260200160008152602001600081525090565b90815260200190565b6001600160a01b0381168114610ed757600080fd5b600060208284031215614a2057600080fd5b81356136ae816149f9565b8060020b8114610ed757600080fd5b600060208284031215614a4c57600080fd5b81356136ae81614a2b565b600080600080600060808688031215614a6f57600080fd5b8535614a7a816149f9565b94506020860135614a8a816149f9565b935060408601359250606086013567ffffffffffffffff80821115614aae57600080fd5b818801915088601f830112614ac257600080fd5b813581811115614ad157600080fd5b896020828501011115614ae357600080fd5b9699959850939650602001949392505050565b63ffffffff81168114610ed757600080fd5b600060208284031215614b1a57600080fd5b81356136ae81614af6565b60005b83811015614b40578181015183820152602001614b28565b50506000910152565b60008151808452614b61816020860160208601614b25565b601f01601f19169290920160200192915050565b6020815260006135e96020830184614b49565b8060060b8114610ed757600080fd5b600060208284031215614ba957600080fd5b81356136ae81614b88565b600060808284031215614bc657600080fd5b50919050565b6000806000806000806000806000806101808b8d031215614bec57600080fd5b8a35614bf7816149f9565b995060208b0135614c07816149f9565b985060408b0135614c17816149f9565b975060608b0135614c27816149f9565b965060808b0135614c37816149f9565b955060a08b0135614c47816149f9565b945060c08b0135614c5781614a2b565b935060e08b013567ffffffffffffffff80821115614c7457600080fd5b818d0191508d601f830112614c8857600080fd5b813581811115614c9757600080fd5b8e60208260051b8501011115614cac57600080fd5b602083019550809450505050614cc68c6101008d01614bb4565b90509295989b9194979a5092959850565b600060208284031215614ce957600080fd5b5035919050565b60008060408385031215614d0357600080fd5b50508035926020909101359150565b60208152600082516060602084015280516080840152602081015160a0840152604081015160c0840152606081015160e0840152608081015160c0610100850152614d61610140850182614b49565b905060a082015115156101208501526020850151604085015260408501516060850152809250505092915050565b600060208284031215614da157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156135ec576135ec614da8565b805161487e81614a2b565b805161ffff8116811461487e57600080fd5b8051801515811461487e57600080fd5b60008060008060008060c08789031215614e1757600080fd5b8651614e22816149f9565b6020880151909650614e3381614a2b565b9450614e4160408801614ddc565b9350614e4f60608801614ddc565b9250614e5d60808801614ddc565b9150614e6b60a08801614dee565b90509295509295509295565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015614ee157835163ffffffff1683529284019291840191600101614ebf565b50909695505050505050565b60405160c0810167ffffffffffffffff81118282101715614f1057614f10614e77565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f3f57614f3f614e77565b604052919050565b600067ffffffffffffffff821115614f6157614f61614e77565b5060051b60200190565b600082601f830112614f7c57600080fd5b81516020614f91614f8c83614f47565b614f16565b8083825260208201915060208460051b870101935086841115614fb357600080fd5b602086015b84811015614fd8578051614fcb816149f9565b8352918301918301614fb8565b509695505050505050565b60008060408385031215614ff657600080fd5b825167ffffffffffffffff8082111561500e57600080fd5b818501915085601f83011261502257600080fd5b81516020615032614f8c83614f47565b82815260059290921b8401810191818101908984111561505157600080fd5b948201945b8386101561507857855161506981614b88565b82529482019490820190615056565b9188015191965090935050508082111561509157600080fd5b5061509e85828601614f6b565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156135ec576135ec614da8565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b80615102576151026150d5565b667fffffffffffff1982146000198214161561512057615120614da8565b90059392505050565b60006020828403121561513b57600080fd5b815160ff811681146136ae57600080fd5b600181815b8085111561518757816000190482111561516d5761516d614da8565b8085161561517a57918102915b93841c9390800290615151565b509250929050565b60008261519e575060016135ec565b816151ab575060006135ec565b81600181146151c157600281146151cb576151e7565b60019150506135ec565b60ff8411156151dc576151dc614da8565b50506001821b6135ec565b5060208310610133831016604e8410600b841016171561520a575081810a6135ec565b615214838361514c565b806000190482111561522857615228614da8565b029392505050565b60006135e960ff84168361518f565b60008261524e5761524e6150d5565b500490565b600181811c9082168061526757607f821691505b602082108103614bc657634e487b7160e01b600052602260045260246000fd5b60408152600080845461529981615253565b80604086015260606001808416600081146152bb57600181146152d757615309565b60ff1985166060890152606084151560051b8901019550615309565b8960005260208060002060005b868110156152ff5781548b82018701529084019082016152e4565b8a01606001975050505b50505050506020929092019290925292915050565b6000806000806080858703121561533457600080fd5b8451935060208086015167ffffffffffffffff8082111561535457600080fd5b61536089838a01614f6b565b9550604088015191508082111561537657600080fd5b508601601f8101881361538857600080fd5b8051615396614f8c82614f47565b81815260059190911b8201830190838101908a8311156153b557600080fd5b928401925b828410156153dc5783516153cd81614af6565b825292840192908401906153ba565b60609990990151979a969950505050505050565b80820281158282048414176135ec576135ec614da8565b60008260020b8260020b028060020b915080821461542757615427614da8565b5092915050565b805161487e816149f9565b60006020828403121561544b57600080fd5b81516136ae816149f9565b6000808335601e1984360301811261546d57600080fd5b83018035915067ffffffffffffffff82111561548857600080fd5b60200191503681900382131561549d57600080fd5b9250929050565b601f821115613441576000816000526020600020601f850160051c810160208610156154cd5750805b601f850160051c820191505b81811015614068578281556001016154d9565b67ffffffffffffffff83111561550457615504614e77565b615518836155128354615253565b836154a4565b6000601f84116001811461554c57600085156155345750838201355b600019600387901b1c1916600186901b178355613ed6565b600083815260209020601f19861690835b8281101561557d578685013582556020948501946001909201910161555d565b508682101561559a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000602082840312156155be57600080fd5b815162ffffff811681146136ae57600080fd5b808201808211156135ec576135ec614da8565b600681810b9083900b01667fffffffffffff8113667fffffffffffff19821217156135ec576135ec614da8565b60006020828403121561562357600080fd5b6135e982614dee565b80516001600160801b038116811461487e57600080fd5b6000806000806000806000806000806000806101808d8f03121561566657600080fd5b8c516bffffffffffffffffffffffff8116811461568257600080fd5b9b5061569060208e0161542e565b9a5061569e60408e0161542e565b99506156ac60608e0161542e565b98506156ba60808e01614dd1565b97506156c860a08e01614dd1565b96506156d660c08e01614dd1565b95506156e460e08e0161562c565b94506101008d015193506101208d015192506157036101408e0161562c565b91506157126101608e0161562c565b90509295989b509295989b509295989b565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b6000806040838503121561577a57600080fd5b505080516020909101519092909150565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b6000602082840312156157e057600080fd5b81516136ae81614a2b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602080838503121561584957600080fd5b825167ffffffffffffffff8082111561586157600080fd5b9084019060c0828703121561587557600080fd5b61587d614eed565b82518152838301518482015260408301516040820152606083015160608201526080830151828111156158af57600080fd5b8301601f810188136158c057600080fd5b8051838111156158d2576158d2614e77565b6158e4601f8201601f19168701614f16565b935080845288868284010111156158fa57600080fd5b61590981878601888501614b25565b505081608082015261591d60a08401614dee565b60a08201529695505050505050565b81516001600160a01b031681526101808101602083015161595860208401826001600160a01b03169052565b50604083015161596d604084018260020b9052565b506060830151615982606084018260020b9052565b506080830151615997608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516159dd828501826001600160a01b03169052565b50506101408381015190830152610160928301516001600160a01b0316929091019190915290565b60008060008060808587031215615a1b57600080fd5b84519350615a2b6020860161562c565b6040860151606090960151949790965092505050565b6001600160a01b0382811682821603908082111561542757615427614da8565b600282810b9082900b03627fffff198112627fffff821317156135ec576135ec614da8565b600281810b9083900b01627fffff8113627fffff19821217156135ec576135ec614da8565b60008251615abd818460208701614b25565b9190910192915050565b60008160020b8360020b80615ade57615ade6150d5565b627fffff1982146000198214161561512057615120614da8565b60008260020b80615b0b57615b0b6150d5565b808360020b0791505092915050565b60008160020b627fffff198103615b3357615b33614da8565b600019019291505056fea2646970667358221220e7512735842fe26bf2d858b6c0679d62a91e26b7c0855d69b4522c7e29f7e3e464736f6c63430008170033