2 txs
4.1k calls
constructor
constructor(address _pool, bool _allowToken0, bool _allowToken1, address __owner, uint32 _twapPeriod, uint256 _vaultIndex)
functions
affiliate
viewfunction affiliate() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowToken0
viewfunction allowToken0() view returns (bool)
allowToken1
viewfunction allowToken1() view returns (bool)
ammFeeRecipient
viewfunction ammFeeRecipient() view returns (address)
auxTwapPeriod
viewfunction auxTwapPeriod() view returns (uint32)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
baseLower
viewfunction baseLower() view returns (int24)
baseUpper
viewfunction baseUpper() view returns (int24)
currentTick
viewfunction currentTick() view returns (int24 tick)
decimals
viewfunction decimals() view returns (uint8)
deposit0Max
viewfunction deposit0Max() view returns (uint256)
deposit1Max
viewfunction deposit1Max() view returns (uint256)
fee
viewfunction fee() view returns (uint24 fee_)
getBasePosition
viewfunction getBasePosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getLimitPosition
viewfunction getLimitPosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getTotalAmounts
viewfunction getTotalAmounts() view returns (uint256 total0, uint256 total1)
hysteresis
viewfunction hysteresis() view returns (uint256)
ichiVaultFactory
viewfunction ichiVaultFactory() view returns (address)
limitLower
viewfunction limitLower() view returns (int24)
limitUpper
viewfunction limitUpper() view returns (int24)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
pool
viewfunction pool() view returns (address)
PRECISION
viewfunction PRECISION() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
tickSpacing
viewfunction tickSpacing() view returns (int24)
token0
viewfunction token0() view returns (address)
token1
viewfunction token1() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
twapPeriod
viewfunction twapPeriod() view returns (uint32)
algebraMintCallback
nonpayablefunction algebraMintCallback(uint256 amount0, uint256 amount1, bytes data)
algebraSwapCallback
nonpayablefunction algebraSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
collectFees
nonpayablefunction collectFees() returns (uint256 fees0, uint256 fees1)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 deposit0, uint256 deposit1, address to) returns (uint256 shares)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
rebalance
nonpayablefunction rebalance(int24 _baseLower, int24 _baseUpper, int24 _limitLower, int24 _limitUpper, int256 swapQuantity)
renounceOwnership
nonpayablefunction renounceOwnership()
setAffiliate
nonpayablefunction setAffiliate(address _affiliate)
setAmmFeeRecipient
nonpayablefunction setAmmFeeRecipient(address _ammFeeRecipient)
setAuxTwapPeriod
nonpayablefunction setAuxTwapPeriod(uint32 newAuxTwapPeriod)
setDepositMax
nonpayablefunction setDepositMax(uint256 _deposit0Max, uint256 _deposit1Max)
setHysteresis
nonpayablefunction setHysteresis(uint256 _hysteresis)
setTwapPeriod
nonpayablefunction setTwapPeriod(uint32 newTwapPeriod)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(uint256 shares, address to) returns (uint256 amount0, uint256 amount1)
events
Affiliate
event Affiliate(address indexed sender, address affiliate)
AmmFeeRecipient
event AmmFeeRecipient(address indexed sender, address ammFeeRecipient)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CollectFees
event CollectFees(address indexed sender, uint256 feeAmount0, uint256 feeAmount1)
DeployICHIVault
event DeployICHIVault(address indexed sender, address indexed pool, bool allowToken0, bool allowToken1, address owner, uint256 twapPeriod)
Deposit
event Deposit(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
DepositMax
event DepositMax(address indexed sender, uint256 deposit0Max, uint256 deposit1Max)
Hysteresis
event Hysteresis(address indexed sender, uint256 hysteresis)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Rebalance
event Rebalance(int24 tick, uint256 totalAmount0, uint256 totalAmount1, uint256 feeAmount0, uint256 feeAmount1, uint256 totalSupply)
SetAuxTwapPeriod
event SetAuxTwapPeriod(address sender, uint32 newAuxTwapPeriod)
SetTwapPeriod
event SetTwapPeriod(address sender, uint32 newTwapPeriod)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
errors
No errors.
creation bytecode
0x6101406040523480156200001257600080fd5b50604051620058f5380380620058f5833981016040819052620000359162000570565b604080518082018252601481527f49434849205661756c74204c697175696469747900000000000000000000000060208201529051633afd2b7960e11b8152600481018390526001600160a01b0388166024820152861515604482015273de329a4f56abc17b8e069bae95ca69d385b0b5a9906375fa56f290606401600060405180830381865af4158015620000cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000f991908101906200060a565b60036200010783826200076e565b5060046200011682826200076e565b50506001600555506200012933620003fe565b6001600160a01b038616620001855760405162461bcd60e51b815260206004820152601c60248201527f49562e636f6e7374727563746f723a207a65726f20616464726573730000000060448201526064015b60405180910390fd5b84806200018f5750835b620001e75760405162461bcd60e51b815260206004820152602160248201527f49562e636f6e7374727563746f723a206e6f20616c6c6f77656420746f6b656e6044820152607360f81b60648201526084016200017c565b336080526001600160a01b03861660a081905260408051630dfe168160e01b81529051630dfe1681916004808201926020929091908290030181865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c91906200083a565b6001600160a01b031660c0816001600160a01b031681525050856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da91906200083a565b6001600160a01b031660e0528415156101005283151561012052600c805463ffffffff191663ffffffff8416179055620003166004836200086e565b600c805463ffffffff929092166401000000000263ffffffff60201b19909216919091179055620003478362000450565b62000369600262000362670de0b6b3a76400006064620004cf565b90620004cf565b600b556000196009819055600a55600780546001600160a01b031990811690915560088054909116905560408051861515815285151560208201526001600160a01b038581168284015263ffffffff8516606083015291519188169133917f3e708ccf7d0e6de8558e020ea36189511cb3435bbfec54e721a48ee4df0d4f8c919081900360800190a3505050505050620008ab565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200045a620004e4565b6001600160a01b038116620004c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200017c565b620004cc81620003fe565b50565b6000620004dd828462000894565b9392505050565b6006546001600160a01b03163314620005405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200017c565b565b80516001600160a01b03811681146200055a57600080fd5b919050565b805180151581146200055a57600080fd5b60008060008060008060c087890312156200058a57600080fd5b620005958762000542565b9550620005a5602088016200055f565b9450620005b5604088016200055f565b9350620005c56060880162000542565b9250608087015163ffffffff81168114620005df57600080fd5b8092505060a087015190509295509295509295565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200061e57600080fd5b82516001600160401b03808211156200063657600080fd5b818501915085601f8301126200064b57600080fd5b815181811115620006605762000660620005f4565b604051601f8201601f19908116603f011681019083821181831017156200068b576200068b620005f4565b816040528281528886848701011115620006a457600080fd5b600093505b82841015620006c85784840186015181850187015292850192620006a9565b600086848301015280965050505050505092915050565b600181811c90821680620006f457607f821691505b6020821081036200071557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076957600081815260208120601f850160051c81016020861015620007445750805b601f850160051c820191505b81811015620007655782815560010162000750565b5050505b505050565b81516001600160401b038111156200078a576200078a620005f4565b620007a2816200079b8454620006df565b846200071b565b602080601f831160018114620007da5760008415620007c15750858301515b600019600386901b1c1916600185901b17855562000765565b600085815260208120601f198616915b828110156200080b57888601518255948401946001909101908401620007ea565b50858210156200082a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084d57600080fd5b620004dd8262000542565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168062000888576200088862000858565b92169190910492915050565b600082620008a657620008a662000858565b500490565b60805160a05160c05160e0516101005161012051614e5662000a9f600039600081816104350152612c8801526000818161052e0152612c120152600081816106620152818161099601528181610a1401528181610e0a01528181610e3e01528181610f5a01528181610fcf0152818161119c01528181611224015281816112c001528181611395015281816116c301528181611f0f015281816121e401528181613c6701528181613ed60152613f1401526000818161035f015281816108ef015281816109da01528181610d8301528181610dbc01528181610f2001528181610f940152818161117b015281816112020152818161129f0152818161135a0152818161162b01528181611e8701528181612135015281816122ed01528181613c0a01528181613e160152613e540152600081816103b201528181610ad801528181610cfa01528181610e9a015281816111e00152818161127e0152818161187c0152818161197101528181611bdf01528181611cd001528181611fd2015281816123b001528181612e7801528181612fcd015281816135fa015281816136af015281816138cb01528181613a1e01528181613f4e0152818161419b0152818161435201526143f10152600081816106b701528181613aad01528181613b3301528181613caa0152613d3f0152614e566000f3fe608060405234801561001057600080fd5b50600436106102d55760003560e01c80637f7a1eec11610182578063c4a7761e116100e9578063dd62ed3e116100a2578063f2fde38b1161007c578063f2fde38b146106f5578063f620732614610708578063f9c95d4614610718578063fa0827431461072b57600080fd5b8063dd62ed3e1461069f578063dd81fa63146106b2578063ddca3f43146106d957600080fd5b8063c4a7761e14610645578063c87965721461064d578063d0c93a7c14610655578063d21220a71461065d578063d2eabcfc14610684578063d87346aa1461068c57600080fd5b806391563d321161013b57806391563d32146105ae57806395d89b41146105db578063a049de6b146105e3578063a457c2d714610610578063a9059cbb14610623578063aaf5eb681461063657600080fd5b80637f7a1eec1461052957806381de128b14610550578063888a913414610563578063897f078c146105775780638da5cb5b1461058a5780638dbdbe6d1461059b57600080fd5b806337e41b40116102415780634d461fbb116101fa578063648cab85116101d4578063648cab85146104e657806370a08231146104ef578063715018a6146105185780637aea53091461052057600080fd5b80634d461fbb146104b657806351e87af7146104bf5780635ffc1ff7146104d357600080fd5b806337e41b401461043057806339509351146104575780633dd657c51461046a5780633e091ee91461047d578063400f0ceb1461049057806345e05f43146104a357600080fd5b806316f0115b1161029357806316f0115b146103ad57806318160ddd146103d457806323b872dd146103e65780632bbb56d9146103f95780632c8958f61461040e578063313ce5671461042157600080fd5b8062f714ce146102da578063065e53601461030757806306fdde0314610322578063095ea7b3146103375780630dfe16811461035a5780630f35bcac14610399575b600080fd5b6102ed6102e83660046146c0565b61073f565b604080519283526020830191909152015b60405180910390f35b61030f610ad1565b60405160029190910b81526020016102fe565b61032a610bbe565b6040516102fe9190614740565b61034a610345366004614753565b610c50565b60405190151581526020016102fe565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102fe565b60085461030f90600160e81b900460020b81565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6002545b6040519081526020016102fe565b61034a6103f436600461477f565b610c6a565b61040c6104073660046147c0565b610c90565b005b61040c61041c36600461481f565b610cef565b604051601281526020016102fe565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b61034a610465366004614753565b610e6d565b61040c61047836600461481f565b610e8f565b61040c61048b366004614872565b610ff7565b61040c61049e3660046148a6565b611048565b600854610381906001600160a01b031681565b6103d8600a5481565b60085461030f90600160d01b900460020b81565b61040c6104e13660046148c3565b6110b4565b6103d860095481565b6103d86104fd3660046147c0565b6001600160a01b031660009081526020819052604090205490565b61040c6110f3565b6103d8600b5481565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b61040c61055e3660046147c0565b611107565b60085461030f90600160b81b900460020b81565b600754610381906001600160a01b031681565b6006546001600160a01b0316610381565b6103d86105a93660046148dc565b61115f565b600c546105c690640100000000900463ffffffff1681565b60405163ffffffff90911681526020016102fe565b61032a6114a3565b6105eb6114b2565b604080516001600160801b0390941684526020840192909252908201526060016102fe565b61034a61061e366004614753565b61154a565b61034a610631366004614753565b6115d0565b6103d8670de0b6b3a764000081565b6102ed6115de565b6102ed6116fc565b61030f611878565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6105eb611901565b61040c61069a366004614924565b61195d565b6103d86106ad366004614988565b612381565b6103817f000000000000000000000000000000000000000000000000000000000000000081565b6106e16123ac565b60405162ffffff90911681526020016102fe565b61040c6107033660046147c0565b61243e565b600c546105c69063ffffffff1681565b61040c6107263660046148a6565b6124b7565b60085461030f90600160a01b900460020b81565b60008061074a612564565b600084116107955760405162461bcd60e51b815260206004820152601360248201527249562e77697468647261773a2073686172657360681b60448201526064015b60405180910390fd5b6001600160a01b0383166107dd5760405162461bcd60e51b815260206004820152600f60248201526e49562e77697468647261773a20746f60881b604482015260640161078c565b60006107e860025490565b90508085148061080357506107ff856103e86125bd565b8110155b61084f5760405162461bcd60e51b815260206004820152601760248201527f49562e77697468647261773a206d696e20736861726573000000000000000000604482015260640161078c565b600854600090819061088490600160a01b8104600290810b91600160b81b9004900b61087c82828c6125c9565b89600061260a565b600854919350915060009081906108be90600160d01b8104600290810b91600160e81b9004900b6108b682828e6125c9565b8b600061260a565b6040516370a0823160e01b81523060048201529193509150600090610967908790610961908d906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b91906149b6565b90612638565b90612644565b6040516370a0823160e01b81523060048201529091506000906109c5908890610961908e906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240161091a565b90508115610a0157610a016001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b84612650565b8015610a3b57610a3b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b83612650565b610a4f82610a4988876125bd565b906125bd565b9850610a5f81610a4987866125bd565b9750610a6b338c6126b8565b604080518c8152602081018b90529081018990526001600160a01b038b169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9060600160405180910390a350505050505050610aca6001600555565b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906149f6565b955050505092505080610bb85760405162461bcd60e51b815260206004820152602260248201527f49562e63757272656e745469636b3a2074686520706f6f6c206973206c6f636b604482015261195960f21b606482015260840161078c565b50919050565b606060038054610bcd90614a77565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf990614a77565b8015610c465780601f10610c1b57610100808354040283529160200191610c46565b820191906000526020600020905b815481529060010190602001808311610c2957829003601f168201915b5050505050905090565b600033610c5e8185856127ea565b60019150505b92915050565b600033610c7885828561290e565b610c83858585612988565b60019150505b9392505050565b610c98612b2c565b600880546001600160a01b0319166001600160a01b03831690811790915560405190815233907f3066ef5dd340e8b2ea28d62f5a8391eb7a82d3ee87532724a1ca4386d34f7523906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d4d5760405162461bcd60e51b815260206004820152600360248201526231b11960e91b604482015260640161078c565b6000610d5b828401846147c0565b90506000851315610de457306001600160a01b03821603610daf57610daa6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163387612650565b610e66565b610daa6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016823388612b86565b6000841315610e6657306001600160a01b03821603610e3157610daa6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163386612650565b610e666001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016823387612b86565b5050505050565b600033610c5e818585610e808383612381565b610e8a9190614ac1565b6127ea565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eed5760405162461bcd60e51b815260206004820152600360248201526263623160e81b604482015260640161078c565b6000610efb828401846147c0565b9050306001600160a01b03821603610f81578415610f4757610f476001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163387612650565b8315610daa57610daa6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163386612650565b8415610fbc57610fbc6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016823388612b86565b8315610e6657610e666001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016823387612b86565b610fff612b2c565b6009829055600a819055604080518381526020810183905233917fafd3b05a4086b378b6f291200a528d8aed8c5e0317af77436b001f1bec28821a910160405180910390a25050565b611050612b2c565b600c805467ffffffff00000000191664010000000063ffffffff8416908102919091179091556040805133815260208101929092527f39da19f5960a3f182ced1ff1853b7be54f37150799b3003a40bf4e0d4c740c8591015b60405180910390a150565b6110bc612b2c565b600b81905560405181815233907f529698f34660760dcb172def5c99d62e1b5b74b444df322e8f7da31f2bd0a86b90602001610ce4565b6110fb612b2c565b6111056000612bbe565b565b61110f612b2c565b600780546001600160a01b0319166001600160a01b03831690811790915560405190815233907fbb78b7c13893a913fa8c9ecb9fdaf97597aa412a39c778bf976790555f0942f790602001610ce4565b6000611169612564565b611174848484612c10565b60006111d17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111c3610ad1565b670de0b6b3a76400006130c3565b600c54909150600090611258907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009063ffffffff16670de0b6b3a76400006131c7565b600c54909150600090640100000000900463ffffffff166112795781611300565b6113007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600c60049054906101000a900463ffffffff16670de0b6b3a76400006131c7565b905061130d838383613368565b6000806113186115de565b91509150600061132b86868660006134a1565b90506000611345670de0b6b3a76400006109618d85612638565b90508a15611382576113826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308e612b86565b89156113bd576113bd6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308d612b86565b6113c78a826125bd565b97506113d260025490565b1561142b5760006113e688888860016134a1565b90506000611400670de0b6b3a76400006109618885612638565b905061142261140f82876125bd565b61096161141b60025490565b8d90612638565b9950505061143a565b611437886103e8612638565b97505b6114448989613516565b60408051898152602081018d90529081018b90526001600160a01b038a169033907f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69060600160405180910390a350505050505050610c896001600555565b606060048054610bcd90614a77565b6000806000806000806114e36008601a9054906101000a900460020b6008601d9054906101000a900460020b6135d5565b600854929550909350915061150e90600160d01b8104600290810b91600160e81b9004900b856136a8565b9396509450919250849161152b856001600160801b0384166125bd565b9450611540846001600160801b0383166125bd565b9350505050909192565b600033816115588286612381565b9050838110156115b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078c565b6115c582868684036127ea565b506001949350505050565b600033610c5e818585612988565b6000806000806115ec611901565b92509250506000806115fc6114b2565b6040516370a0823160e01b8152306004820152919450925061169791508390610a499087906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4991906149b6565b6040516370a0823160e01b81523060048201529096506116f2908290610a499086906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401611656565b9450505050509091565b600080611707612564565b60085460009061172c90600160a01b8104600290810b91600160b81b9004900b6135d5565b50909150506001600160801b0381161561178b57600854600090819061176b90600160a01b8104600290810b91600160b81b9004900b833060016138c3565b909250905061177a85836125bd565b945061178684826125bd565b935050505b6008546000906117b090600160d01b8104600290810b91600160e81b9004900b6135d5565b50909150506001600160801b0381161561180f5760085460009081906117ef90600160d01b8104600290810b91600160e81b9004900b833060016138c3565b90925090506117fe86836125bd565b955061180a85826125bd565b945050505b604080518581526020810185905233917fec8208dd791fa8ffdc0d7427f3ba9c0ed06f1bce9a86254e6940c10cc1802fef910160405180910390a260008411806118595750600083115b15611868576118688484613aa9565b50506118746001600555565b9091565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc9190614ad4565b905090565b600080600080600080611932600860149054906101000a900460020b600860179054906101000a900460020b6135d5565b600854929550909350915061150e90600160a01b8104600290810b91600160b81b9004900b856136a8565b611965612564565b61196d612b2c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190614ad4565b90508460020b8660020b128015611a125750611a0d8187614b07565b60020b155b8015611a285750611a238186614b07565b60020b155b611a805760405162461bcd60e51b815260206004820152602360248201527f49562e726562616c616e63653a206261736520706f736974696f6e20696e76616044820152621b1a5960ea1b606482015260840161078c565b8260020b8460020b128015611a9f5750611a9a8185614b07565b60020b155b8015611ab55750611ab08184614b07565b60020b155b611b0d5760405162461bcd60e51b8152602060048201526024808201527f49562e726562616c616e63653a206c696d697420706f736974696f6e20696e76604482015263185b1a5960e21b606482015260840161078c565b8360020b8660020b141580611b2857508260020b8560020b14155b611b7e5760405162461bcd60e51b815260206004820152602160248201527f49562e726562616c616e63653a206964656e746963616c20706f736974696f6e6044820152607360f81b606482015260840161078c565b600854600090611ba390600160a01b8104600290810b91600160b81b9004900b6135d5565b50909150506001600160801b03811615611c6f576008546040805160208101825260008082529151631d9de38760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693633b3bc70e93611c2a93600160a01b8304600290810b94600160b81b909404900b92600401614b29565b60408051808303816000875af1158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c9190614b5d565b50505b600854600090611c9490600160d01b8104600290810b91600160e81b9004900b6135d5565b50909150506001600160801b03811615611d60576008546040805160208101825260008082529151631d9de38760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693633b3bc70e93611d1b93600160d01b8304600290810b94600160e81b909404900b92600401614b29565b60408051808303816000875af1158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5d9190614b5d565b50505b6008546000908190611d8790600160a01b8104600290810b91600160b81b9004900b6135d5565b6008546001600160801b03928316955091169250600091508190611dc090600160d01b8104600290810b91600160e81b9004900b6135d5565b6001600160801b03918216945016915060009050611dde85846125bd565b90506000611dec85846125bd565b600854909150611e1590600160a01b8104600290810b91600160b81b9004900b8a30600161260a565b5050600854611e3d90600160d01b8104600290810b91600160e81b9004900b8930600161260a565b5050611e498282613aa9565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611e72610ad1565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa91906149b6565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906149b6565b8585611f8d60025490565b6040805160029790970b87526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a189156120cc576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663128acb083060008d138061200f5761200a8e614b81565b612011565b8d5b60008f1361203d57612038600173fffd8963efd1fc6a506488495d951d5263988d26614b9d565b61204d565b61204d6401000276a36001614bc4565b60408051306020820152016040516020818303038152906040526040518663ffffffff1660e01b8152600401612087959493929190614be4565b60408051808303816000875af11580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190614b5d565b50505b8d600860146101000a81548162ffffff021916908360020b62ffffff1602179055508c600860176101000a81548162ffffff021916908360020b62ffffff16021790555061225c600860149054906101000a900460020b600860179054906101000a900460020b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161218e91906001600160a01b0391909116815260200190565b602060405180830381865afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cf91906149b6565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225791906149b6565b613f49565b60085490985061228290600160a01b8104600290810b91600160b81b9004900b8a61415e565b50508b6008601a6101000a81548162ffffff021916908360020b62ffffff1602179055508a6008601d6101000a81548162ffffff021916908360020b62ffffff1602179055506123466008601a9054906101000a900460020b6008601d9054906101000a900460020b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161218e91906001600160a01b0391909116815260200190565b60085490975061236c90600160d01b8104600290810b91600160e81b9004900b8961415e565b5050505050505050505050610e666001600555565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243091906149f6565b50505061ffff169392505050565b612446612b2c565b6001600160a01b0381166124ab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078c565b6124b481612bbe565b50565b6124bf612b2c565b60008163ffffffff16116125155760405162461bcd60e51b815260206004820181905260248201527f49562e73657454776170506572696f643a206d697373696e6720706572696f64604482015260640161078c565b600c805463ffffffff191663ffffffff83169081179091556040805133815260208101929092527fe4c60f4984caeb7f45b0cfe6d4233c115601ab11d141bc2cbf68b48346cdef3891016110a9565b6002600554036125b65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161078c565b6002600555565b6000610c898284614ac1565b6000806125d685856135d5565b505090506126016125fc6125e960025490565b6109616001600160801b03851687612638565b614230565b95945050505050565b6000806001600160801b0385161561262e5761262987878787876138c3565b915091505b9550959350505050565b6000610c898284614c1f565b6000610c898284614c36565b6040516001600160a01b0383166024820152604481018290526126b390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614279565b505050565b6001600160a01b0382166127185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078c565b6001600160a01b0382166000908152602081905260409020548181101561278c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078c565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03831661284c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078c565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061291a8484612381565b9050600019811461298257818110156129755760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078c565b61298284848484036127ea565b50505050565b6001600160a01b0383166129ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078c565b6001600160a01b038216612a4e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078c565b6001600160a01b03831660009081526020819052604090205481811015612ac65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078c565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612982565b6006546001600160a01b031633146111055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161078c565b6040516001600160a01b03808516602483015283166044820152606481018290526129829085906323b872dd60e01b9060840161267c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000080612c3a575082155b612c865760405162461bcd60e51b815260206004820152601e60248201527f49562e6465706f7369743a20746f6b656e30206e6f7420616c6c6f7765640000604482015260640161078c565b7f000000000000000000000000000000000000000000000000000000000000000080612cb0575081155b612cfc5760405162461bcd60e51b815260206004820152601e60248201527f49562e6465706f7369743a20746f6b656e31206e6f7420616c6c6f7765640000604482015260640161078c565b6000831180612d0b5750600082115b612d575760405162461bcd60e51b815260206004820181905260248201527f49562e6465706f7369743a206465706f73697473206d757374206265203e2030604482015260640161078c565b60095483108015612d695750600a5482105b612db55760405162461bcd60e51b815260206004820152601e60248201527f49562e6465706f7369743a206465706f7369747320746f6f206c617267650000604482015260640161078c565b6001600160a01b03811615801590612dd657506001600160a01b0381163014155b612e135760405162461bcd60e51b815260206004820152600e60248201526d49562e6465706f7369743a20746f60901b604482015260640161078c565b600854600090612e3890600160a01b8104600290810b91600160b81b9004900b6135d5565b50909150506001600160801b03811615612f68576008546040805160208101825260008082529151631d9de38760e11b8152919283926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692633b3bc70e92612ec592600160a01b8204600290810b93600160b81b909304900b918791600401614b29565b60408051808303816000875af1158015612ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f079190614b5d565b91509150816000148015612f19575080155b612f655760405162461bcd60e51b815260206004820152601f60248201527f49562e6465706f7369743a20756e6578706563746564206275726e2028312900604482015260640161078c565b50505b600854600090612f8d90600160d01b8104600290810b91600160e81b9004900b6135d5565b50909150506001600160801b03811615610e66576008546040805160208101825260008082529151631d9de38760e11b8152919283926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692633b3bc70e9261301a92600160d01b8204600290810b93600160e81b909304900b918791600401614b29565b60408051808303816000875af1158015613038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305c9190614b5d565b9150915081600014801561306e575080155b6130ba5760405162461bcd60e51b815260206004820152601f60248201527f49562e6465706f7369743a20756e6578706563746564206275726e2028322900604482015260640161078c565b50505050505050565b600073de329a4f56abc17b8e069bae95ca69d385b0b5a96343c57a278473de329a4f56abc17b8e069bae95ca69d385b0b5a963809fdd33866040518263ffffffff1660e01b815260040161311991815260200190565b602060405180830381865af4158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190614c61565b88886040518563ffffffff1660e01b815260040161317b9493929190614c7c565b602060405180830381865af4158015613198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bc91906149b6565b90505b949350505050565b6000806131d261434e565b604051638241348960e01b81526001600160a01b038216600482015263ffffffff8616602482015290915060009073de329a4f56abc17b8e069bae95ca69d385b0b5a990638241348990604401602060405180830381865af415801561323c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132609190614ad4565b60020b905073de329a4f56abc17b8e069bae95ca69d385b0b5a96343c57a278273de329a4f56abc17b8e069bae95ca69d385b0b5a963809fdd33886040518263ffffffff1660e01b81526004016132b991815260200190565b602060405180830381865af41580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614c61565b8a8a6040518563ffffffff1660e01b815260040161331b9493929190614c7c565b602060405180830381865af4158015613338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335c91906149b6565b98975050505050505050565b60008284116133905761338b83610961670de0b6b3a764000061095b83896144c1565b6133aa565b6133aa84610961670de0b6b3a764000061095b83886144c1565b600c54909150640100000000900463ffffffff161561345d5760008285116133eb576133e683610961670de0b6b3a764000061095b838a6144c1565b613405565b61340585610961670de0b6b3a764000061095b83886144c1565b9050600b548211806134185750600b5481115b15613457576134256144cd565b6134575760405162461bcd60e51b815260206004820152600360248201526211151360ea1b604482015260640161078c565b50612982565b600b548111156129825761346f6144cd565b6129825760405162461bcd60e51b815260206004820152600360248201526211151360ea1b604482015260640161078c565b600081156134e357600c54640100000000900463ffffffff16156134d9576134d26134cc868661456a565b8461456a565b90506131bf565b6134d2858561456a565b600c54640100000000900463ffffffff161561350c576134d26135068686614579565b84614579565b6134d28585614579565b6001600160a01b03821661356c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161078c565b806002600082825461357e9190614ac1565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008060008060008030905062ffffff871662ffffff89168260181b1760181b1792507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf846040518263ffffffff1660e01b815260040161364691815260200190565b60a060405180830381865afa158015613663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136879190614cb1565b909850965091935061369c9150839050614230565b95505050509250925092565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa15801561370b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372f91906149f6565b505060405163986cfba360e01b815260028b900b600482015293945073de329a4f56abc17b8e069bae95ca69d385b0b5a99363c72e160b935085925084915063986cfba390602401602060405180830381865af4158015613794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b89190614d01565b60405163986cfba360e01b815260028a900b600482015273de329a4f56abc17b8e069bae95ca69d385b0b5a99063986cfba390602401602060405180830381865af415801561380b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382f9190614d01565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526001600160801b03871660648201526084016040805180830381865af4158015613891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b59190614b5d565b92509250505b935093915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633b3bc70e8a8a8a604051806020016040528060008152506040518563ffffffff1660e01b815260040161392a9493929190614b29565b60408051808303816000875af1158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c9190614b5d565b915091506000856139855761398083614230565b61398e565b6001600160801b035b90506000866139a5576139a083614230565b6139ae565b6001600160801b035b90506000826001600160801b031611806139d157506000816001600160801b0316115b15613a9b576040516309e3d67b60e31b81526001600160a01b03898116600483015260028d810b60248401528c900b60448301526001600160801b038085166064840152831660848301527f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d89060a40160408051808303816000875af1158015613a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8a9190614d1e565b6001600160801b0391821697501694505b505050509550959350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663665a17c56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d91906149b6565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb391906149b6565b9050600082118015613bcf57506007546001600160a01b031615155b15613c8e578315613c3157600754613c31906001600160a01b0316613c00670de0b6b3a76400006109618887612638565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612650565b8215613c8e57600754613c8e906001600160a01b0316613c5d670de0b6b3a76400006109618787612638565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612650565b8015612982576008546000906001600160a01b031615613d2f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663acc8247d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2a91906149b6565b613d39565b670de0b6b3a76400005b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dbf9190614d01565b90508515613e81576000613ddf670de0b6b3a76400006109618987612638565b90506000613df9670de0b6b3a76400006109618487612638565b90506000613e0783836144c1565b9050613e3d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168584612650565b8015613e7d57600854613e7d906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612650565b5050505b8415613f41576000613e9f670de0b6b3a76400006109618887612638565b90506000613eb9670de0b6b3a76400006109618487612638565b90506000613ec783836144c1565b9050613efd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168584612650565b8015613f3d57600854613f3d906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612650565b5050505b505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa158015613faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fce91906149f6565b505060405163986cfba360e01b815260028b900b600482015293945073de329a4f56abc17b8e069bae95ca69d385b0b5a993636098fd4a935085925084915063986cfba390602401602060405180830381865af4158015614033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140579190614d01565b60405163986cfba360e01b815260028a900b600482015273de329a4f56abc17b8e069bae95ca69d385b0b5a99063986cfba390602401602060405180830381865af41580156140aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ce9190614d01565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018790526084810186905260a401602060405180830381865af4158015614130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141549190614c61565b9695505050505050565b6000806001600160801b038316156138bb576040805130602080830182905283518084039091018152828401938490526302abf8a760e61b9093527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263aafe29c0926141e0929182918b918b918b9190604401614d51565b6060604051808303816000875af11580156141ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142239190614d9e565b5090969095509350505050565b60006001600160801b038211156142755760405162461bcd60e51b815260206004820152600960248201526824ab1718991c2fa7a360b91b604482015260640161078c565b5090565b60006142ce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145889092919063ffffffff16565b90508051600014806142ef5750808060200190518101906142ef9190614dd3565b6126b35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161078c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef01df4f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d29190614d01565b6040516330ea6ca760e11b81526001600160a01b0380831660048301527f000000000000000000000000000000000000000000000000000000000000000016602482015290915073de329a4f56abc17b8e069bae95ca69d385b0b5a9906361d4d94e90604401602060405180830381865af4158015614455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144799190614dd3565b6144be5760405162461bcd60e51b815260206004820152601660248201527524ab1d103234b1b7b73732b1ba32b21038363ab3b4b760511b604482015260640161078c565b90565b6000610c898284614dee565b6000806144d861434e565b604051634c3e6e1160e11b81526001600160a01b038216600482015290915060009073de329a4f56abc17b8e069bae95ca69d385b0b5a99063987cdc22906024016040805180830381865af4158015614535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145599190614e01565b63ffffffff16421415949350505050565b6000818310610bb85782610c89565b6000818311610bb85782610c89565b60606131bf848460008585600080866001600160a01b031685876040516145af9190614e2d565b60006040518083038185875af1925050503d80600081146145ec576040519150601f19603f3d011682016040523d82523d6000602084013e6145f1565b606091505b50915091506146028783838761460d565b979650505050505050565b6060831561467c578251600003614675576001600160a01b0385163b6146755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161078c565b50816131bf565b6131bf83838151156146915781518083602001fd5b8060405162461bcd60e51b815260040161078c9190614740565b6001600160a01b03811681146124b457600080fd5b600080604083850312156146d357600080fd5b8235915060208301356146e5816146ab565b809150509250929050565b60005b8381101561470b5781810151838201526020016146f3565b50506000910152565b6000815180845261472c8160208601602086016146f0565b601f01601f19169290920160200192915050565b602081526000610c896020830184614714565b6000806040838503121561476657600080fd5b8235614771816146ab565b946020939093013593505050565b60008060006060848603121561479457600080fd5b833561479f816146ab565b925060208401356147af816146ab565b929592945050506040919091013590565b6000602082840312156147d257600080fd5b8135610c89816146ab565b60008083601f8401126147ef57600080fd5b50813567ffffffffffffffff81111561480757600080fd5b602083019150836020828501011115610aca57600080fd5b6000806000806060858703121561483557600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561485a57600080fd5b614866878288016147dd565b95989497509550505050565b6000806040838503121561488557600080fd5b50508035926020909101359150565b63ffffffff811681146124b457600080fd5b6000602082840312156148b857600080fd5b8135610c8981614894565b6000602082840312156148d557600080fd5b5035919050565b6000806000606084860312156148f157600080fd5b8335925060208401359150604084013561490a816146ab565b809150509250925092565b8060020b81146124b457600080fd5b600080600080600060a0868803121561493c57600080fd5b853561494781614915565b9450602086013561495781614915565b9350604086013561496781614915565b9250606086013561497781614915565b949793965091946080013592915050565b6000806040838503121561499b57600080fd5b82356149a6816146ab565b915060208301356146e5816146ab565b6000602082840312156149c857600080fd5b5051919050565b805161ffff811681146149e157600080fd5b919050565b805180151581146149e157600080fd5b60008060008060008060c08789031215614a0f57600080fd5b8651614a1a816146ab565b6020880151909650614a2b81614915565b9450614a39604088016149cf565b9350606087015160ff81168114614a4f57600080fd5b9250614a5d608088016149cf565b9150614a6b60a088016149e6565b90509295509295509295565b600181811c90821680614a8b57607f821691505b602082108103610bb857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6457610c64614aab565b600060208284031215614ae657600080fd5b8151610c8981614915565b634e487b7160e01b600052601260045260246000fd5b60008260020b80614b1a57614b1a614af1565b808360020b0791505092915050565b8460020b81528360020b60208201526001600160801b03831660408201526080606082015260006141546080830184614714565b60008060408385031215614b7057600080fd5b505080516020909101519092909150565b6000600160ff1b8201614b9657614b96614aab565b5060000390565b6001600160a01b03828116828216039080821115614bbd57614bbd614aab565b5092915050565b6001600160a01b03818116838216019080821115614bbd57614bbd614aab565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061460290830184614714565b8082028115828204841417610c6457610c64614aab565b600082614c4557614c45614af1565b500490565b80516001600160801b03811681146149e157600080fd5b600060208284031215614c7357600080fd5b610c8982614c4a565b60029490940b84526001600160801b039290921660208401526001600160a01b03908116604084015216606082015260800190565b600080600080600060a08688031215614cc957600080fd5b855194506020860151935060408601519250614ce760608701614c4a565b9150614cf560808701614c4a565b90509295509295909350565b600060208284031215614d1357600080fd5b8151610c89816146ab565b60008060408385031215614d3157600080fd5b614d3a83614c4a565b9150614d4860208401614c4a565b90509250929050565b6001600160a01b03878116825286166020820152600285810b604083015284900b60608201526001600160801b038316608082015260c060a0820181905260009061335c90830184614714565b600080600060608486031215614db357600080fd5b8351925060208401519150614dca60408501614c4a565b90509250925092565b600060208284031215614de557600080fd5b610c89826149e6565b81810381811115610c6457610c64614aab565b60008060408385031215614e1457600080fd5b614e1d836149cf565b915060208301516146e581614894565b60008251614e3f8184602087016146f0565b919091019291505056fea164736f6c6343000814000a0000000000000000000000009ea0f51fd2133d995cf00229bc523737415ad3180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000005cc3ca6e768a68a7f86b09e3cee754437bd5f120000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000000000