11 txs
23 calls
constructor
constructor(address _vault, address _gauge, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken0, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken1)
functions
apiVersion
purefunction apiVersion() pure returns (string)
balanceOfWant
viewfunction balanceOfWant() view returns (uint256)
baseFeeOracle
viewfunction baseFeeOracle() view returns (address)
claimableProfitInUsdc
viewfunction claimableProfitInUsdc() view returns (uint256)
claimableRewards
viewfunction claimableRewards() view returns (uint256)
creditThreshold
viewfunction creditThreshold() view returns (uint256)
delegatedAssets
viewfunction delegatedAssets() view returns (uint256)
doHealthCheck
viewfunction doHealthCheck() view returns (bool)
emergencyExit
viewfunction emergencyExit() view returns (bool)
estimatedTotalAssets
viewfunction estimatedTotalAssets() view returns (uint256)
ethToWant
viewfunction ethToWant(uint256 _ethAmount) view returns (uint256)
factory
viewfunction factory() view returns (address)
forceHarvestTriggerOnce
viewfunction forceHarvestTriggerOnce() view returns (bool)
gauge
viewfunction gauge() view returns (address)
harvestProfitMaxInUsdc
viewfunction harvestProfitMaxInUsdc() view returns (uint256)
harvestProfitMinInUsdc
viewfunction harvestProfitMinInUsdc() view returns (uint256)
harvestTrigger
viewfunction harvestTrigger(uint256 callCostinEth) view returns (bool)
healthCheck
viewfunction healthCheck() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isBaseFeeAcceptable
viewfunction isBaseFeeAcceptable() view returns (bool)
isFeeOnTransfer
viewfunction isFeeOnTransfer() view returns (bool)
isOriginal
viewfunction isOriginal() view returns (bool)
isStablePool
viewfunction isStablePool() view returns (bool)
keeper
viewfunction keeper() view returns (address)
localKeepVELO
viewfunction localKeepVELO() view returns (uint256)
maxReportDelay
viewfunction maxReportDelay() view returns (uint256)
metadataURI
viewfunction metadataURI() view returns (string)
minReportDelay
viewfunction minReportDelay() view returns (uint256)
name
viewfunction name() view returns (string)
poolToken0
viewfunction poolToken0() view returns (address)
poolToken1
viewfunction poolToken1() view returns (address)
rewards
viewfunction rewards() view returns (address)
router
viewfunction router() view returns (address)
stakedBalance
viewfunction stakedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
swapRouteForToken0
viewfunction swapRouteForToken0(uint256) view returns (address from, address to, bool stable, address factory)
swapRouteForToken1
viewfunction swapRouteForToken1(uint256) view returns (address from, address to, bool stable, address factory)
tendTrigger
viewfunction tendTrigger(uint256 callCostInWei) view returns (bool)
vault
viewfunction vault() view returns (address)
velo
viewfunction velo() view returns (address)
veloRouteToToken0
viewfunction veloRouteToToken0() view returns (address[])
veloRouteToToken1
viewfunction veloRouteToToken1() view returns (address[])
veloVoter
viewfunction veloVoter() view returns (address)
want
viewfunction want() view returns (address)
cloneStrategyVelodrome
nonpayablefunction cloneStrategyVelodrome(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1) returns (address newStrategy)
harvest
nonpayablefunction harvest()
initialize
nonpayablefunction initialize(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1)
manualRewardClaim
nonpayablefunction manualRewardClaim()
migrate
nonpayablefunction migrate(address _newStrategy)
setBaseFeeOracle
nonpayablefunction setBaseFeeOracle(address _baseFeeOracle)
setCreditThreshold
nonpayablefunction setCreditThreshold(uint256 _creditThreshold)
setDoHealthCheck
nonpayablefunction setDoHealthCheck(bool _doHealthCheck)
setEmergencyExit
nonpayablefunction setEmergencyExit()
setForceHarvestTriggerOnce
nonpayablefunction setForceHarvestTriggerOnce(bool _forceHarvestTriggerOnce)
setHarvestTriggerParams
nonpayablefunction setHarvestTriggerParams(uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc)
setHealthCheck
nonpayablefunction setHealthCheck(address _healthCheck)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setLocalKeepVelo
nonpayablefunction setLocalKeepVelo(uint256 _keepVelo)
setMaxReportDelay
nonpayablefunction setMaxReportDelay(uint256 _delay)
setMetadataURI
nonpayablefunction setMetadataURI(string _metadataURI)
setMinReportDelay
nonpayablefunction setMinReportDelay(uint256 _delay)
setRewards
nonpayablefunction setRewards(address _rewards)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setSwapRoutes
nonpayablefunction setSwapRoutes(tuple[] _newSwapRouteForToken0, tuple[] _newSwapRouteForToken1, bool _isFeeOnTransfer)
setVoter
nonpayablefunction setVoter(address _veloVoter)
sweep
nonpayablefunction sweep(address _token)
tend
nonpayablefunction tend()
withdraw
nonpayablefunction withdraw(uint256 _amountNeeded) returns (uint256 _loss)
events
Cloned
event Cloned(address indexed clone)
EmergencyExitEnabled
event EmergencyExitEnabled()
ForcedHarvestTrigger
event ForcedHarvestTrigger(bool triggerState)
Harvested
event Harvested(uint256 profit, uint256 loss, uint256 debtPayment, uint256 debtOutstanding)
SetDoHealthCheck
event SetDoHealthCheck(bool)
SetHealthCheck
event SetHealthCheck(address)
UpdatedBaseFeeOracle
event UpdatedBaseFeeOracle(address baseFeeOracle)
UpdatedCreditThreshold
event UpdatedCreditThreshold(uint256 creditThreshold)
UpdatedKeeper
event UpdatedKeeper(address newKeeper)
UpdatedMaxReportDelay
event UpdatedMaxReportDelay(uint256 delay)
UpdatedMetadataURI
event UpdatedMetadataURI(string metadataURI)
UpdatedMinReportDelay
event UpdatedMinReportDelay(uint256 delay)
UpdatedRewards
event UpdatedRewards(address rewards)
UpdatedStrategist
event UpdatedStrategist(address newStrategist)
errors
No errors.
creation bytecode
0x60806040526015805460ff191660011790553480156200001e57600080fd5b506040516200635f3803806200635f83398101604081905262000041916200115c565b83620000508133808062000068565b506200005e838383620002c7565b5050505062001686565b6006546001600160a01b031615620000c75760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000121573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001479190620011ec565b600680546001600160a01b0319166001600160a01b0392909216918217905562000175908560001962000c0c565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000220919062001211565b6200022d90600a62001340565b6200023c90620f42406200134e565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c0919062001368565b5050505050565b600b5461010090046001600160a01b031615620003275760405162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401620000be565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf9190620011ec565b6001600160a01b031614620004175760405162461bcd60e51b815260206004820152601360248201527f676175676520706f6f6c206d69736d61746368000000000000000000000000006044820152606401620000be565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa15801562000463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000489919062001368565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005079190620011ec565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200056c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005929190620011ec565b600f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061d9190620011ec565b601080546001600160a01b0319166001600160a01b039290921691909117905560005b8351811015620006ff57601184828151811062000661576200066162001386565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b9615159690960295909517909455606090910151600290930180549092169216919091179055620006f7816200139c565b905062000640565b5060005b8251811015620007c257601283828151811062000724576200072462001386565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b9615159690960295909517909455606090910151600290930180549092169216919091179055620007ba816200139c565b905062000703565b50600e546001600160a01b03166000805160206200633f83398151915214620008c8576000805160206200633f8339815191526001600160a01b0316601160008154811062000815576200081562001386565b60009182526020909120600390910201546001600160a01b03161415806200088457506011600184516200084a9190620013b8565b815481106200085d576200085d62001386565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b15620008c85760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b6044820152606401620000be565b600f546001600160a01b03166000805160206200633f83398151915214620009cd576000805160206200633f8339815191526001600160a01b031660126000815481106200091a576200091a62001386565b60009182526020909120600390910201546001600160a01b03161415806200098957506012600183516200094f9190620013b8565b8154811062000962576200096262001386565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b15620009cd5760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b6044820152606401620000be565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b03868116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000a48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a6e919062001368565b50600e5462000a9e906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360001962000c0c565b600f5462000acd906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360001962000c0c565b60405163095ea7b360e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43600482015260001960248201526000805160206200633f8339815191529063095ea7b3906044016020604051808303816000875af115801562000b36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b5c919062001368565b50600660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000bb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bdb9190810190620013f4565b60405160200162000bed919062001492565b60405160208183030381529060405260169081620002c0919062001567565b80158062000c8a5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000c62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c88919062001211565b155b62000cfe5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401620000be565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b1790915262000d5691859162000d5b16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649082015260009062000daa906001600160a01b03851690849062000e2f565b905080516000148062000dce57508080602001905181019062000dce919062001368565b62000d565760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620000be565b606062000e40848460008562000e48565b949350505050565b60608247101562000eab5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620000be565b600080866001600160a01b0316858760405162000ec9919062001633565b60006040518083038185875af1925050503d806000811462000f08576040519150601f19603f3d011682016040523d82523d6000602084013e62000f0d565b606091505b50909250905062000f218783838762000f2c565b979650505050505050565b6060831562000fa057825160000362000f98576001600160a01b0385163b62000f985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620000be565b508162000e40565b62000e40838381511562000fb75781518083602001fd5b8060405162461bcd60e51b8152600401620000be919062001651565b80516001600160a01b038116811462000feb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200102b576200102b62000ff0565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200105c576200105c62000ff0565b604052919050565b8051801515811462000feb57600080fd5b600082601f8301126200108757600080fd5b815160206001600160401b03821115620010a557620010a562000ff0565b620010b5818360051b0162001031565b82815260079290921b84018101918181019086841115620010d557600080fd5b8286015b84811015620011515760808189031215620010f45760008081fd5b620010fe62001006565b620011098262000fd3565b81526200111885830162000fd3565b8582015260406200112b81840162001064565b9082015260606200113e83820162000fd3565b90820152835291830191608001620010d9565b509695505050505050565b600080600080608085870312156200117357600080fd5b6200117e8562000fd3565b93506200118e6020860162000fd3565b60408601519093506001600160401b0380821115620011ac57600080fd5b620011ba8883890162001075565b93506060870151915080821115620011d157600080fd5b50620011e08782880162001075565b91505092959194509250565b600060208284031215620011ff57600080fd5b6200120a8262000fd3565b9392505050565b6000602082840312156200122457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620012825781600019048211156200126657620012666200122b565b808516156200127457918102915b93841c939080029062001246565b509250929050565b6000826200129b575060016200133a565b81620012aa575060006200133a565b8160018114620012c35760028114620012ce57620012ee565b60019150506200133a565b60ff841115620012e257620012e26200122b565b50506001821b6200133a565b5060208310610133831016604e8410600b841016171562001313575081810a6200133a565b6200131f838362001241565b80600019048211156200133657620013366200122b565b0290505b92915050565b60006200120a83836200128a565b80820281158282048414176200133a576200133a6200122b565b6000602082840312156200137b57600080fd5b6200120a8262001064565b634e487b7160e01b600052603260045260246000fd5b600060018201620013b157620013b16200122b565b5060010190565b818103818111156200133a576200133a6200122b565b60005b83811015620013eb578181015183820152602001620013d1565b50506000910152565b6000602082840312156200140757600080fd5b81516001600160401b03808211156200141f57600080fd5b818401915084601f8301126200143457600080fd5b81518181111562001449576200144962000ff0565b6200145e601f8201601f191660200162001031565b91508082528560208285010111156200147657600080fd5b62001489816020840160208601620013ce565b50949350505050565b7f53747261746567794165726f64726f6d65466163746f72792d00000000000000815260008251620014cc816019850160208701620013ce565b9190910160190192915050565b600181811c90821680620014ee57607f821691505b6020821081036200150f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000d5657600081815260208120601f850160051c810160208610156200153e5750805b601f850160051c820191505b818110156200155f578281556001016200154a565b505050505050565b81516001600160401b0381111562001583576200158362000ff0565b6200159b81620015948454620014d9565b8462001515565b602080601f831160018114620015d35760008415620015ba5750858301515b600019600386901b1c1916600185901b1785556200155f565b600085815260208120601f198616915b828110156200160457888601518255948401946001909101908401620015e3565b5085821015620016235787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825162001647818460208701620013ce565b9190910192915050565b602081526000825180602084015262001672816040850160208701620013ce565b601f01601f19169190910160400192915050565b614ca980620016966000396000f3fe608060405234801561001057600080fd5b50600436106103fc5760003560e01c806395e80c5011610215578063c6040a2c11610125578063ed882c2b116100b8578063f887ea4011610087578063f887ea4014610862578063fa4e2df91461087d578063fbfa77cf14610886578063fcf2d0ad14610899578063fe2508a6146108a157600080fd5b8063ed882c2b14610821578063ee6497f114610834578063efbb5cb014610847578063f017c92f1461084f57600080fd5b8063ce5494bb116100f4578063ce5494bb146107e0578063d96d862a146107f3578063e81c1e7914610806578063ec38a8621461080e57600080fd5b8063c6040a2c146107a4578063c7b9d530146107b7578063c9d100da146107ca578063ccd63705146107d357600080fd5b8063aa5480cf116101a8578063b576211411610177578063b576211414610733578063b9fe5c4c1461073b578063c12f643114610743578063c1a3d44c14610789578063c45a01551461079157600080fd5b8063aa5480cf146106ec578063ac00ff26146106f5578063aced166114610708578063b252720b1461071b57600080fd5b8063a56fc91e116101e4578063a56fc91e146106a1578063a6f19c84146106b4578063a73bf6df146106cc578063a763cf5b146106df57600080fd5b806395e80c501461065f5780639a9b23f0146106685780639ec5a8941461067b5780639f450b5a1461068e57600080fd5b80634758af8a116103105780636c003a9b116102a3578063780022a011610272578063780022a014610615578063826cddf6146106235780638c7c53ce1461063b5780638e6350e21461065057806395326e2d1461065757600080fd5b80636c003a9b146105da5780636f392ce7146105e2578063748747e6146105ef578063750521f51461060257600080fd5b80635b9f0016116102df5780635b9f00161461059e5780635cf6d5ad146105a6578063650d1880146105b95780636718835f146105cd57600080fd5b80634758af8a146105575780634bc2a6571461056a5780635641ec031461057d5780635ae29a8c1461058a57600080fd5b80631fe4a686116103935780632e1a7d4d116103625780632e1a7d4d1461050e578063320afc2d1461052157806339a172a814610534578063440368a3146105475780634641257d1461054f57600080fd5b80631fe4a686146104b957806322f3e2d4146104cc57806325829410146104e457806328b7ccf71461050557600080fd5b80630ada4dab116103cf5780630ada4dab1461045357806311bc824514610466578063143f3dce146104795780631f1fcd511461048e57600080fd5b806301681a621461040157806303ee438c1461041657806306fdde0314610434578063090c49221461043c575b600080fd5b61041461040f36600461404c565b6108b4565b005b61041e610a5f565b60405161042b9190614094565b60405180910390f35b61041e610aed565b61044560135481565b60405190815260200161042b565b6104146104613660046140d5565b610b7f565b61041461047436600461404c565b610bcf565b610481610c3b565b60405161042b91906140f2565b6006546104a1906001600160a01b031681565b6040516001600160a01b03909116815260200161042b565b6003546104a1906001600160a01b031681565b6104d4610ce2565b604051901515815260200161042b565b60408051808201909152600581526418171a171b60d91b602082015261041e565b61044560085481565b61044561051c36600461413f565b610d70565b6104a161052f3660046142d7565b610de4565b61041461054236600461413f565b610eeb565b610414610f28565b610414610fa6565b600f546104a1906001600160a01b031681565b61041461057836600461404c565b611354565b6009546104d49060ff1681565b6010546104d490600160a01b900460ff1681565b61044561137e565b600d546104a1906001600160a01b031681565b6104d46105c736600461413f565b50600090565b6001546104d49060ff1681565b6104456113f1565b6015546104d49060ff1681565b6104146105fd36600461404c565b611425565b610414610610366004614398565b61148e565b6104456105c736600461413f565b6009546104a19061010090046001600160a01b031681565b6104a1600080516020614c5483398151915281565b6000610445565b6104d46114e1565b61044560075481565b61041461067636600461413f565b611576565b6004546104a1906001600160a01b031681565b61041461069c36600461404c565b6115b5565b6104146106af36600461440a565b611613565b600b546104a19061010090046001600160a01b031681565b600e546104a1906001600160a01b031681565b600b546104d49060ff1681565b610445600a5481565b6104146107033660046140d5565b611918565b6005546104a1906001600160a01b031681565b6001546104a19061010090046001600160a01b031681565b610445611968565b610481611a23565b61075661075136600461413f565b611ab4565b604080516001600160a01b039586168152938516602085015291151591830191909152909116606082015260800161042b565b610445611b01565b6010546104a1906001600160a01b031681565b6107566107b236600461413f565b611b32565b6104146107c536600461404c565b611b42565b610445600c5481565b6017546104d49060ff1681565b6104146107ee36600461404c565b611bab565b6104146108013660046142d7565b611cd6565b610414611cf6565b61041461081c36600461404c565b611d61565b6104d461082f36600461413f565b611ebf565b610414610842366004614482565b612057565b61044561206a565b61041461085d36600461413f565b612086565b6104a173cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4381565b61044560145481565b6002546104a1906001600160a01b031681565b6104146120c3565b6104146108af36600461413f565b6121e2565b6108bc61221f565b6006546001600160a01b03908116908216036109075760405162461bcd60e51b8152602060048201526005602482015264085dd85b9d60da1b60448201526064015b60405180910390fd5b6002546001600160a01b039081169082160361094f5760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b60448201526064016108fe565b606060005b81518110156109d65781818151811061096f5761096f6144a4565b60200260200101516001600160a01b0316836001600160a01b0316036109c45760405162461bcd60e51b815260206004820152600a602482015269085c1c9bdd1958dd195960b21b60448201526064016108fe565b806109ce816144d0565b915050610954565b50610a5b6109e2612244565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906144e9565b6001600160a01b03851691906122b2565b5050565b60008054610a6c90614502565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890614502565b8015610ae55780601f10610aba57610100808354040283529160200191610ae5565b820191906000526020600020905b815481529060010190602001808311610ac857829003601f168201915b505050505081565b606060168054610afc90614502565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2890614502565b8015610b755780601f10610b4a57610100808354040283529160200191610b75565b820191906000526020600020905b815481529060010190602001808311610b5857829003601f168201915b5050505050905090565b610b87612315565b600b805460ff19168215159081179091556040519081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf3083953319906020015b60405180910390a150565b610bd7612315565b6040516001600160a01b03821681527fc8db9c35f716b87af1fbb83f03c78646061931269301fd7ba6dcf189b4cdc2fc9060200160405180910390a1600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b606060006011805480602002602001604051908101604052809291908181526020016000905b82821015610ccd576000848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c61565b505050509050610cdc816123b7565b91505090565b6002546040516339ebf82360e01b815230600482015260009182916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190614536565b604001511180610d6b57506000610d6961206a565b115b905090565b6002546000906001600160a01b03163314610db65760405162461bcd60e51b8152602060048201526006602482015265085d985d5b1d60d21b60448201526064016108fe565b6000610dc1836124d6565b600654909350909150610dde906001600160a01b031633836122b2565b50919050565b60155460009060ff16610df657600080fd5b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81523060601b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152906037816000f0604051636cb6c31560e11b81529093506001600160a01b038416915063d96d862a90610e79908c908c908c908c908c908c908c9060040161461c565b600060405180830381600087803b158015610e9357600080fd5b505af1158015610ea7573d6000803e3d6000fd5b50506040516001600160a01b03851692507f783540fb4221a3238720dc7038937d0d79982bcf895274aa6ad179f82cf0d53c9150600090a250979650505050505050565b610ef36125aa565b60078190556040518181527fbb2c369a0355a34b02ab5fce0643150c87e1c8dfe7c918d465591879f57948b190602001610bc4565b610f306125c6565b6002546040805163bf3759b560e01b81529051610fa4926001600160a01b03169163bf3759b59160048083019260209291908290030181865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f91906144e9565b61271b565b565b610fae6125c6565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b031663bf3759b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a91906144e9565b60095490915060009060ff16156110875760006110456127a1565b905082811015611060576110598184614680565b9350611075565b82811115611075576110728382614680565b94505b61107f8484614680565b915050611098565b6110908261281f565b919550935090505b600b805460ff19169055604051600081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf30839533199060200160405180910390a16002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111449190614536565b60c001516002546040516328766ebf60e21b81526004810188905260248101879052604481018590529192506001600160a01b03169063a1d9bafc906064016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c691906144e9565b92506111d18361271b565b60015460ff1680156111f2575060015461010090046001600160a01b031615155b156112c45760015460405163c70fa00b60e01b815260048101879052602481018690526044810184905260648101859052608481018390526101009091046001600160a01b03169063c70fa00b9060a401602060405180830381865afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112849190614693565b6112bf5760405162461bcd60e51b815260206004820152600c60248201526b216865616c7468636865636b60a01b60448201526064016108fe565b611305565b604051600181527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916811790555b6040805186815260208101869052908101839052606081018490527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a15050505050565b61135c61221f565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546040516370a0823160e01b815230600482015260009161010090046001600160a01b0316906370a08231906024015b602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b91906144e9565b600b546040516246613160e11b815230600482015260009161010090046001600160a01b031690628cc262906024016113b0565b61142d6125aa565b6001600160a01b03811661144057600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f202ddb4a2e345f6323ed90f8fc8559d770a7abbbeee84dde8aca3351fe715490602001610bc4565b6114966125aa565b60006114a38284836146f6565b507f300e67d5a415b6d015a471d9c7b95dd58f3e8290af965e84e0f845de2996dda682826040516114d59291906147b6565b60405180910390a15050565b60095460009061010090046001600160a01b03166114ff5750600190565b600960019054906101000a90046001600160a01b03166001600160a01b03166334a9e75c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190614693565b61157e61221f565b61271081111561158d57600080fd5b6000811180156115a65750600d546001600160a01b0316155b156115b057600080fd5b600c55565b6115bd612315565b60098054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f711be97287cb9ec921887b9be36e148e1a27c6b158547b22b9704ffc54447a0f90602001610bc4565b61161b612315565b61162760116000613fd9565b61163360126000613fd9565b6017805460ff191682151517905560005b83518110156116fc576011848281518110611661576116616144a4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556116f5816144d0565b9050611644565b5060005b82518110156117b857601283828151811061171d5761171d6144a4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556117b1816144d0565b9050611700565b50600e546001600160a01b0316600080516020614c548339815191521480159061182457506011600184516117ed9190614680565b815481106117fd576117fd6144a4565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b156118665760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108fe565b600f546001600160a01b0316600080516020614c54833981519152148015906118d1575060126001835161189a9190614680565b815481106118aa576118aa6144a4565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b156119135760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108fe565b505050565b611920612315565b60405181151581527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916911515919091179055565b6040516378a051ad60e11b8152670de0b6b3a76400006004820152600080516020614c5483398151915260248201526000908190732223f9fe624f69da4d8256a7bcc9104fba7f8f759063f140a35a90604401602060405180830381865afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906144e9565b9050670de0b6b3a7640000611a0f6113f1565b611a1990836147e5565b610cdc91906147fc565b6060600060128054806020026020016040519081016040528092919081815260200160009082821015610ccd576000848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c61565b60128181548110611ac457600080fd5b60009182526020909120600390910201805460018201546002909201546001600160a01b03918216935081831692600160a01b900460ff16911684565b6006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024016113b0565b60118181548110611ac457600080fd5b611b4a6125aa565b6001600160a01b038116611b5d57600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f352ececae6d7d1e6d26bcf2c549dfd55be1637e9b22dc0cf3b71ddb36097a6b490602001610bc4565b6002546001600160a01b03163314611bc257600080fd5b6002546040805163fbfa77cf60e01b815290516001600160a01b039283169284169163fbfa77cf9160048083019260209291908290030181865afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c32919061481e565b6001600160a01b031614611c4557600080fd5b611c4e81612fbe565b6006546040516370a0823160e01b8152306004820152611cd39183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc091906144e9565b6006546001600160a01b031691906122b2565b50565b611ce2878787876130c4565b611ced83838361330e565b50505050505050565b611cfe612315565b600b54604051630c00007b60e41b81523060048201526101009091046001600160a01b03169063c00007b090602401600060405180830381600087803b158015611d4757600080fd5b505af1158015611d5b573d6000803e3d6000fd5b50505050565b611d69613bf0565b6001600160a01b038116611d7c57600080fd5b6002546004805460405163095ea7b360e01b81526001600160a01b0391821692810192909252600060248301529091169063095ea7b3906044016020604051808303816000875af1158015611dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df99190614693565b50600480546001600160a01b0319166001600160a01b03838116918217835560025460405163095ea7b360e01b8152938401929092526000196024840152169063095ea7b3906044016020604051808303816000875af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190614693565b506040516001600160a01b03821681527fafbb66abf8f3b719799940473a4052a3717cdd8e40fb6c8a3faadab316b1a06990602001610bc4565b6000611ec9610ce2565b611ed557506000919050565b6000611edf611968565b9050601454811115611ef45750600192915050565b611efc6114e1565b611f095750600092915050565b600b5460ff1615611f1d5750600192915050565b601354811115611f305750600192915050565b6002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e9190614536565b90506008548160a0015142611fb39190614680565b1115611fc3575060019392505050565b600a54600260009054906101000a90046001600160a01b03166001600160a01b031663112c1f9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203d91906144e9565b111561204d575060019392505050565b5060009392505050565b61205f612315565b601391909155601455565b600061207461137e565b61207c611b01565b610d6b919061483b565b61208e6125aa565b60088190556040518181527f5430e11864ad7aa9775b07d12657fe52df9aa2ba734355bd8ef8747be2c800c590602001610bc4565b6120cb613c29565b6009805460ff191660011790556002546040516339ebf82360e01b81523060048201526001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121459190614536565b60400151156121b757600260009054906101000a90046001600160a01b03166001600160a01b031663a0e4af9a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561219e57600080fd5b505af11580156121b2573d6000803e3d6000fd5b505050505b6040517f97e963041e952738788b9d4871d854d282065b8f90a464928d6528f2e9a4fd0b90600090a1565b6121ea612315565b600a8190556040518181527fe5ef7832c564a10cbe7b4f1e01ac33a406cb63fcf430a97a9af8616d150af5f390602001610bc4565b612227612244565b6001600160a01b0316336001600160a01b031614610fa457600080fd5b60025460408051635aa6e67560e01b815290516000926001600160a01b031691635aa6e6759160048083019260209291908290030181865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b919061481e565b6040516001600160a01b03831660248201526044810182905261191390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c45565b600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238c919061481e565b6001600160a01b0316336001600160a01b031614806123ae5750612227612244565b610fa457600080fd5b60606000825160016123c9919061483b565b67ffffffffffffffff8111156123e1576123e1614158565b60405190808252806020026020018201604052801561240a578160200160208202803683370190505b50905082600081518110612420576124206144a4565b6020026020010151600001518160008151811061243f5761243f6144a4565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b83518110156124cf5783818151811061247d5761247d6144a4565b60200260200101516020015182826001612497919061483b565b815181106124a7576124a76144a4565b6001600160a01b03909216602092830291909101909101526124c8816144d0565b9050612462565b5092915050565b60008060006124e3611b01565b9050808411156125995760006124f761137e565b9050801561257557600b548286039061010090046001600160a01b0316632e1a7d4d6125238484613d1a565b6040518263ffffffff1660e01b815260040161254191815260200190565b600060405180830381600087803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050505b600061257f611b01565b905061258b8682613d1a565b9450848603935050506125a4565b509192600092509050565b50915091565b6003546001600160a01b03163314806123ae5750612227612244565b6005546001600160a01b03163314806125e957506003546001600160a01b031633145b8061260c57506125f7612244565b6001600160a01b0316336001600160a01b0316145b8061269e5750600260009054906101000a90046001600160a01b03166001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612689919061481e565b6001600160a01b0316336001600160a01b0316145b806123ae5750600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612227919061481e565b60095460ff16156127295750565b6000612733611b01565b90508015610a5b57600b5460405163b6b55f2560e01b8152600481018390526101009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b505050505050565b6000806127ac61137e565b9050801561281757600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156127fe57600080fd5b505af1158015612812573d6000803e3d6000fd5b505050505b610cdc611b01565b600b54604051630c00007b60e41b81523060048201526000918291829161010090046001600160a01b03169063c00007b090602401600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b50506040516370a0823160e01b815230600482015260009250600080516020614c5483398151915291506370a0823190602401602060405180830381865afa1580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f691906144e9565b600c54600d54919250906001600160a01b0316811580159061292057506001600160a01b03811615155b156129bc5761271082840204801561294b5761294b600080516020614c5483398151915283836122b2565b6040516370a0823160e01b8152306004820152600080516020614c54833981519152906370a0823190602401602060405180830381865afa158015612994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b891906144e9565b9350505b678ac7230489e80000831115612ed55760006129d96002856147fc565b905060006129e78286614680565b601054909150600160a01b900460ff1615612ac557600e54600f5460105460405163f5ba53c760e01b81526001600160a01b039384166004820152918316602483015291909116604482015260009073cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063f5ba53c790606401602060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9691906144e9565b9050670de0b6b3a7640000612aab82886147e5565b612ab591906147fc565b9150612ac18287614680565b9250505b600e546001600160a01b0316600080516020614c5483398151915214612bf25760175460ff1615612b6857604051634466c10f60e11b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43906388cd821e90612b319085906000906011903090429060040161484e565b600060405180830381600087803b158015612b4b57600080fd5b505af1158015612b5f573d6000803e3d6000fd5b50505050612bf2565b60405163cac88ea960e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063cac88ea990612ba99085906000906011903090429060040161484e565b6000604051808303816000875af1158015612bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bf091908101906148fa565b505b600f546001600160a01b0316600080516020614c5483398151915214612d1f5760175460ff1615612c9557604051634466c10f60e11b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43906388cd821e90612c5e9084906000906012903090429060040161484e565b600060405180830381600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b50505050612d1f565b60405163cac88ea960e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063cac88ea990612cd69084906000906012903090429060040161484e565b6000604051808303816000875af1158015612cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d1d91908101906148fa565b505b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8c91906144e9565b600f546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfe91906144e9565b600e54600f54601054604051635a47ddc360e01b81526001600160a01b039384166004820152929091166024830152600160a01b900460ff16151560448201526064810184905260848101829052600060a4820181905260c48201523060e48201524261010482015290915073cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4390635a47ddc390610124016060604051808303816000875af1158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecd9190614980565b505050505050505b6000612edf61206a565b6002546040516339ebf82360e01b81523060048201529192506000916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f529190614536565b60c001519050808210612fac5780820397508895506000612f73878a61483b565b90506000612f80826124d6565b50905080821115612fa55780881115612f9f5780975060009950612fa5565b87810399505b5050612fb2565b81810396505b50505050509193909250565b6000612fc861137e565b9050801561303357600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561301a57600080fd5b505af115801561302e573d6000803e3d6000fd5b505050505b6040516370a0823160e01b8152306004820152600090600080516020614c54833981519152906370a0823190602401602060405180830381865afa15801561307f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a391906144e9565b9050801561191357611913600080516020614c5483398151915284836122b2565b6006546001600160a01b03161561311d5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064016108fe565b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015613176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319a919061481e565b600680546001600160a01b0319166001600160a01b039290921691821790556131c69085600019613d34565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801561324a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326e91906144e9565b61327990600a614a92565b61328690620f42406147e5565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156132e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133079190614693565b5050505050565b600b5461010090046001600160a01b0316156133625760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108fe565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa1580156133d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f7919061481e565b6001600160a01b0316146134435760405162461bcd60e51b81526020600482015260136024820152720cec2eaceca40e0deded840dad2e6dac2e8c6d606b1b60448201526064016108fe565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa15801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b29190614693565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352d919061481e565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b5919061481e565b600f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d919061481e565b601080546001600160a01b0319166001600160a01b039290921691909117905560005b835181101561371857601184828151811061367d5761367d6144a4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b9615159690960295909517909455606090910151600290930180549092169216919091179055613711816144d0565b9050613660565b5060005b82518110156137d4576012838281518110613739576137396144a4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556137cd816144d0565b905061371c565b50600e546001600160a01b0316600080516020614c54833981519152146138cc57600080516020614c548339815191526001600160a01b03166011600081548110613821576138216144a4565b60009182526020909120600390910201546001600160a01b031614158061388a57506011600184516138539190614680565b81548110613863576138636144a4565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b156138cc5760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108fe565b600f546001600160a01b0316600080516020614c54833981519152146139c357600080516020614c548339815191526001600160a01b03166012600081548110613918576139186144a4565b60009182526020909120600390910201546001600160a01b0316141580613981575060126001835161394a9190614680565b8154811061395a5761395a6144a4565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b156139c35760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108fe565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b03868116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015613a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a619190614693565b50600e54613a8f906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43600019613d34565b600f54613abc906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43600019613d34565b60405163095ea7b360e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360048201526000196024820152600080516020614c548339815191529063095ea7b3906044016020604051808303816000875af1158015613b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b479190614693565b50600660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015613b9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc39190810190614a9e565b604051602001613bd39190614b32565b604051602081830303815290604052601690816133079190614b77565b613bf8612244565b6001600160a01b0316336001600160a01b031614806123ae57506003546001600160a01b03163314610fa457600080fd5b6003546001600160a01b031633148061260c57506125f7612244565b6000613c9a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e499092919063ffffffff16565b9050805160001480613cbb575080806020019051810190613cbb9190614693565b6119135760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108fe565b6000818310613d295781613d2b565b825b90505b92915050565b801580613dae5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dac91906144e9565b155b613e195760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016108fe565b6040516001600160a01b03831660248201526044810182905261191390849063095ea7b360e01b906064016122de565b6060613e588484600085613e60565b949350505050565b606082471015613ec15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108fe565b600080866001600160a01b03168587604051613edd9190614c37565b60006040518083038185875af1925050503d8060008114613f1a576040519150601f19603f3d011682016040523d82523d6000602084013e613f1f565b606091505b5091509150613f3087838387613f3b565b979650505050505050565b60608315613faa578251600003613fa3576001600160a01b0385163b613fa35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108fe565b5081613e58565b613e588383815115613fbf5781518083602001fd5b8060405162461bcd60e51b81526004016108fe9190614094565b5080546000825560030290600052602060002090810190611cd391905b808211156140335780546001600160a01b031990811682556001820180546001600160a81b03191690556002820180549091169055600301613ff6565b5090565b6001600160a01b0381168114611cd357600080fd5b60006020828403121561405e57600080fd5b813561406981614037565b9392505050565b60005b8381101561408b578181015183820152602001614073565b50506000910152565b60208152600082518060208401526140b3816040850160208701614070565b601f01601f19169190910160400192915050565b8015158114611cd357600080fd5b6000602082840312156140e757600080fd5b8135614069816140c7565b6020808252825182820181905260009190848201906040850190845b818110156141335783516001600160a01b03168352928401929184019160010161410e565b50909695505050505050565b60006020828403121561415157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561419157614191614158565b60405290565b604051610120810167ffffffffffffffff8111828210171561419157614191614158565b604051601f8201601f1916810167ffffffffffffffff811182821017156141e4576141e4614158565b604052919050565b600067ffffffffffffffff82111561420657614206614158565b5060051b60200190565b600082601f83011261422157600080fd5b81356020614236614231836141ec565b6141bb565b82815260079290921b8401810191818101908684111561425557600080fd5b8286015b848110156142cc57608081890312156142725760008081fd5b61427a61416e565b813561428581614037565b81528185013561429481614037565b818601526040828101356142a7816140c7565b908201526060828101356142ba81614037565b90820152835291830191608001614259565b509695505050505050565b600080600080600080600060e0888a0312156142f257600080fd5b87356142fd81614037565b9650602088013561430d81614037565b9550604088013561431d81614037565b9450606088013561432d81614037565b9350608088013561433d81614037565b925060a088013567ffffffffffffffff8082111561435a57600080fd5b6143668b838c01614210565b935060c08a013591508082111561437c57600080fd5b506143898a828b01614210565b91505092959891949750929550565b600080602083850312156143ab57600080fd5b823567ffffffffffffffff808211156143c357600080fd5b818501915085601f8301126143d757600080fd5b8135818111156143e657600080fd5b8660208285010111156143f857600080fd5b60209290920196919550909350505050565b60008060006060848603121561441f57600080fd5b833567ffffffffffffffff8082111561443757600080fd5b61444387838801614210565b9450602086013591508082111561445957600080fd5b5061446686828701614210565b9250506040840135614477816140c7565b809150509250925092565b6000806040838503121561449557600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016144e2576144e26144ba565b5060010190565b6000602082840312156144fb57600080fd5b5051919050565b600181811c9082168061451657607f821691505b602082108103610dde57634e487b7160e01b600052602260045260246000fd5b6000610120828403121561454957600080fd5b614551614197565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600081518084526020808501945080840160005b8381101561461157815180516001600160a01b039081168952848201518116858a01526040808301511515908a01526060918201511690880152608090960195908201906001016145c5565b509495945050505050565b6001600160a01b0388811682528781166020830152868116604083015285811660608301528416608082015260e060a08201819052600090614660908301856145b1565b82810360c084015261467281856145b1565b9a9950505050505050505050565b81810381811115613d2e57613d2e6144ba565b6000602082840312156146a557600080fd5b8151614069816140c7565b601f82111561191357600081815260208120601f850160051c810160208610156146d75750805b601f850160051c820191505b81811015612799578281556001016146e3565b67ffffffffffffffff83111561470e5761470e614158565b6147228361471c8354614502565b836146b0565b6000601f841160018114614756576000851561473e5750838201355b600019600387901b1c1916600186901b178355613307565b600083815260209020601f19861690835b828110156147875786850135825560209485019460019092019101614767565b50868210156147a45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b8082028115828204841417613d2e57613d2e6144ba565b60008261481957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561483057600080fd5b815161406981614037565b80820180821115613d2e57613d2e6144ba565b600060a0808301888452602088818601526040838187015282895480855260c0880191508a60005283600020945060005b818110156148cd5785546001600160a01b03908116845260018781015480831688870152891c60ff16151586860152600288015490911660608501526003909601956080909301920161487f565b50506001600160a01b038916606088015294506148ea9350505050565b8260808301529695505050505050565b6000602080838503121561490d57600080fd5b825167ffffffffffffffff81111561492457600080fd5b8301601f8101851361493557600080fd5b8051614943614231826141ec565b81815260059190911b8201830190838101908783111561496257600080fd5b928401925b82841015613f3057835182529284019290840190614967565b60008060006060848603121561499557600080fd5b8351925060208401519150604084015190509250925092565b600181815b808511156149e95781600019048211156149cf576149cf6144ba565b808516156149dc57918102915b93841c93908002906149b3565b509250929050565b600082614a0057506001613d2e565b81614a0d57506000613d2e565b8160018114614a235760028114614a2d57614a49565b6001915050613d2e565b60ff841115614a3e57614a3e6144ba565b50506001821b613d2e565b5060208310610133831016604e8410600b8410161715614a6c575081810a613d2e565b614a7683836149ae565b8060001904821115614a8a57614a8a6144ba565b029392505050565b6000613d2b83836149f1565b600060208284031215614ab057600080fd5b815167ffffffffffffffff80821115614ac857600080fd5b818401915084601f830112614adc57600080fd5b815181811115614aee57614aee614158565b614b01601f8201601f19166020016141bb565b9150808252856020828501011115614b1857600080fd5b614b29816020840160208601614070565b50949350505050565b7f53747261746567794165726f64726f6d65466163746f72792d00000000000000815260008251614b6a816019850160208701614070565b9190910160190192915050565b815167ffffffffffffffff811115614b9157614b91614158565b614ba581614b9f8454614502565b846146b0565b602080601f831160018114614bda5760008415614bc25750858301515b600019600386901b1c1916600185901b178555612799565b600085815260208120601f198616915b82811015614c0957888601518255948401946001909101908401614bea565b5085821015614c275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614c49818460208701614070565b919091019291505056fe000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631a26469706673582212205bcf38870a34360accaf38f43da1d5d6dde472c91035a46a30e1c35f542d8f5f64736f6c63430008130033000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd986310000000000000000000000001f1969209e18f24282ce6fae9c27f6e1fe5a1d1b00000000000000000000000019b05f319ac12296cb073218e912d0816030548f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000003dd79d6bd927615787cc95f2c7a77c9ac1af26f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da0000000000000000000000003dd79d6bd927615787cc95f2c7a77c9ac1af26f40000000000000000000000002c8d2fc58b80acb3b307c165af8f3ee296e6a2710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000003dd79d6bd927615787cc95f2c7a77c9ac1af26f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da