0 txs
0 calls
constructor
No constructor.
functions
factory
viewfunction factory() view returns (address)
factoryRegistry
viewfunction factoryRegistry() view returns (address)
fee
viewfunction fee() view returns (uint24)
feeGrowthGlobal0X128
viewfunction feeGrowthGlobal0X128() view returns (uint256)
feeGrowthGlobal1X128
viewfunction feeGrowthGlobal1X128() view returns (uint256)
gauge
viewfunction gauge() view returns (address)
gaugeFees
viewfunction gaugeFees() view returns (uint128 token0, uint128 token1)
getRewardGrowthInside
viewfunction getRewardGrowthInside(int24 tickLower, int24 tickUpper, uint256 _rewardGrowthGlobalX128) view returns (uint256 rewardGrowthInside)
lastUpdated
viewfunction lastUpdated() view returns (uint32)
liquidity
viewfunction liquidity() view returns (uint128)
maxLiquidityPerTick
viewfunction maxLiquidityPerTick() view returns (uint128)
nft
viewfunction nft() view returns (address)
observations
viewfunction observations(uint256) view returns (uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized)
observe
viewfunction observe(uint32[] secondsAgos) view returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
periodFinish
viewfunction periodFinish() view returns (uint256)
positions
viewfunction positions(bytes32) view returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
rewardGrowthGlobalX128
viewfunction rewardGrowthGlobalX128() view returns (uint256)
rewardRate
viewfunction rewardRate() view returns (uint256)
rewardReserve
viewfunction rewardReserve() view returns (uint256)
rollover
viewfunction rollover() view returns (uint256)
slot0
viewfunction slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)
stakedLiquidity
viewfunction stakedLiquidity() view returns (uint128)
tickBitmap
viewfunction tickBitmap(int16) view returns (uint256)
ticks
viewfunction ticks(int24) view returns (uint128 liquidityGross, int128 liquidityNet, int128 stakedLiquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, uint256 rewardGrowthOutsideX128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized)
tickSpacing
viewfunction tickSpacing() view returns (int24)
token0
viewfunction token0() view returns (address)
token1
viewfunction token1() view returns (address)
unstakedFee
viewfunction unstakedFee() view returns (uint24)
burn
nonpayablefunction burn(int24 tickLower, int24 tickUpper, uint128 amount, address owner) returns (uint256 amount0, uint256 amount1)
burn
nonpayablefunction burn(int24 tickLower, int24 tickUpper, uint128 amount) returns (uint256 amount0, uint256 amount1)
collect
nonpayablefunction collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested, address owner) returns (uint128 amount0, uint128 amount1)
collect
nonpayablefunction collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns (uint128 amount0, uint128 amount1)
collectFees
nonpayablefunction collectFees() returns (uint128 amount0, uint128 amount1)
flash
nonpayablefunction flash(address recipient, uint256 amount0, uint256 amount1, bytes data)
increaseObservationCardinalityNext
nonpayablefunction increaseObservationCardinalityNext(uint16 observationCardinalityNext)
initialize
nonpayablefunction initialize(address _factory, address _token0, address _token1, int24 _tickSpacing, address _factoryRegistry, uint160 _sqrtPriceX96)
mint
nonpayablefunction mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns (uint256 amount0, uint256 amount1)
setGaugeAndPositionManager
nonpayablefunction setGaugeAndPositionManager(address _gauge, address _nft)
stake
nonpayablefunction stake(int128 stakedLiquidityDelta, int24 tickLower, int24 tickUpper, bool positionUpdate)
swap
nonpayablefunction swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns (int256 amount0, int256 amount1)
syncReward
nonpayablefunction syncReward(uint256 _rewardRate, uint256 _rewardReserve, uint256 _periodFinish)
updateRewardsGrowthGlobal
nonpayablefunction updateRewardsGrowthGlobal()
events
Burn
event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
Collect
event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1)
CollectFees
event CollectFees(address indexed recipient, uint128 amount0, uint128 amount1)
Flash
event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1)
IncreaseObservationCardinalityNext
event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew)
Initialize
event Initialize(uint160 sqrtPriceX96, int24 tick)
Mint
event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1)
SetFeeProtocol
event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New)
Swap
event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50615c9f80620000216000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806357806ada11610146578063b64cc67b116100c3578063d0c93a7c11610087578063d0c93a7c14610a00578063d21220a714610a1f578063ddca3f4314610a27578063ebe2b12b14610a2f578063f305839914610a37578063f30dba9314610a3f5761025e565b8063b64cc67b146109a7578063c45a0155146109c7578063c8796572146109cf578063cab64bcd146109d7578063d0b06f5d146109df5761025e565b8063883bdbfd1161010a578063883bdbfd14610825578063a16368c91461092c578063a34123a71461095d578063a6f19c8414610997578063b056b49a1461099f5761025e565b806357806ada1461079b57806360a73f9b146107a35780636f89244c146107cc57806370cf754a146108155780637b0a47ee1461081d5761025e565b80633850c7bd116101df57806347ccca02116101a357806347ccca0214610603578063490e6cbc1461060b5780634ed6210f146106955780634f1eb3d8146106d1578063514ea4bf146107225780635339c2961461077b5761025e565b80633850c7bd146104e95780633ab04b20146105395780633bf0c9fb146105415780633c8a7d8d1461054957806346141319146105e95761025e565b80632071d884116102265780632071d88414610390578063252c09d7146103df578063293833ba14610436578063313383741461046d57806332148f67146104c85761025e565b80630dfe168114610263578063128acb08146102875780631a686502146103345780631b410960146103585780631f7c356814610362575b600080fd5b61026b610ad1565b604080516001600160a01b039092168252519081900360200190f35b61031b600480360360a081101561029d57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b8111156102dd57600080fd5b8201836020820111156102ef57600080fd5b803590602001918460018302840111600160201b8311171561031057600080fd5b509092509050610ae0565b6040805192835260208301919091528051918290030190f35b61033c611697565b604080516001600160801b039092168252519081900360200190f35b6103606116a6565b005b6103606004803603604081101561037857600080fd5b506001600160a01b0381358116916020013516611758565b610360600480360360c08110156103a657600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013560020b91608082013581169160a00135166118c6565b6103fc600480360360208110156103f557600080fd5b5035611aab565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b61043e611af0565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b61043e600480360360c081101561048357600080fd5b506001600160a01b0381358116916020810135600290810b92604083013590910b916001600160801b03606082013581169260808301359091169160a0013516611b0a565b610360600480360360208110156104de57600080fd5b503561ffff16611bd8565b6104f1611cc9565b604080516001600160a01b03909716875260029590950b602087015261ffff9384168686015291831660608601529091166080840152151560a0830152519081900360c00190f35b61033c611d10565b61026b611d1f565b61031b600480360360a081101561055f57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156105ab57600080fd5b8201836020820111156105bd57600080fd5b803590602001918460018302840111600160201b831117156105de57600080fd5b509092509050611d2e565b6105f1611fec565b60408051918252519081900360200190f35b61026b611ff2565b6103606004803603608081101561062157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561065757600080fd5b82018360208201111561066957600080fd5b803590602001918460018302840111600160201b8311171561068a57600080fd5b509092509050612001565b610360600480360360808110156106ab57600080fd5b508035600f0b906020810135600290810b91604081013590910b906060013515156123af565b61043e600480360360a08110156106e757600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b03606082013581169160800135166125cb565b61073f6004803603602081101561073857600080fd5b5035612650565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b6105f16004803603602081101561079157600080fd5b503560010b61268d565b6105f161269f565b610360600480360360608110156107b957600080fd5b50803590602081013590604001356126a5565b61031b600480360360808110156107e257600080fd5b508035600290810b91602081013590910b9060408101356001600160801b031690606001356001600160a01b0316612760565b61033c61282a565b6105f1612840565b6108936004803603602081101561083b57600080fd5b810190602081018135600160201b81111561085557600080fd5b82018360208201111561086757600080fd5b803590602001918460208302840111600160201b8311171561088857600080fd5b509092509050612846565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156108d75781810151838201526020016108bf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109165781810151838201526020016108fe565b5050505090500194505050505060405180910390f35b6105f16004803603606081101561094257600080fd5b508035600290810b91602081013590910b90604001356128ce565b61031b6004803603606081101561097357600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661290d565b61026b61298e565b6105f161299d565b6109af6129a3565b6040805162ffffff9092168252519081900360200190f35b61026b612a20565b61043e612a2f565b6105f1612bce565b6109e7612bd4565b6040805163ffffffff9092168252519081900360200190f35b610a08612be7565b6040805160029290920b8252519081900360200190f35b61026b612bf7565b6109af612c06565b6105f1612c52565b6105f1612c58565b610a5f60048036036020811015610a5557600080fd5b503560020b612c5e565b604080516001600160801b03909b168b52600f998a0b60208c01529790980b898801526060890195909552608088019390935260a087019190915260060b60c08601526001600160a01b031660e085015263ffffffff1661010084015290151561012083015251908190036101400190f35b6001546001600160a01b031681565b60008085610b1a576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160c0810182526006546001600160a01b0381168252600160a01b8104600290810b810b900b6020830152600160b81b810461ffff90811693830193909352600160c81b810483166060830152600160d81b81049092166080820152600160e81b90910460ff16151560a08201819052610bc4576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610c0f5780600001516001600160a01b0316866001600160a01b0316118015610c0a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610c41565b80600001516001600160a01b0316866001600160a01b0316108015610c4157506401000276a36001600160a01b038716115b610c78576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6006805460ff60e81b191690556040805160c0810182526010546001600160801b039081168252600f541660208201526000918101610cb5612cd8565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518061014001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b8152602001610d2d612c06565b62ffffff168152600060208201526040018c610d4b57600854610d4f565b6007545b815260200160006001600160801b0316815260200184600001516001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610db15750886001600160a01b031681604001516001600160a01b031614155b1561117e57610dbe615bef565b60408201516001600160a01b031681526060820151600f54610ded91601291600160a01b900460020b8f612cdc565b15156040830152600290810b810b60208301819052620d89e719910b1215610e1e57620d89e7196020820152610e3d565b6020810151620d89e860029190910b1315610e3d57620d89e860208201525b610e4a8160200151612e1e565b6001600160a01b031660608201526040820151610ec0908d610e84578b6001600160a01b031683606001516001600160a01b031611610e9e565b8b6001600160a01b031683606001516001600160a01b0316105b610eac578260600151610eae565b8b5b6101008501518551608087015161314f565b60c085015260a084015260808301526001600160a01b031660408301528215610f2257610ef68160c00151826080015101613341565b825103825260a0810151610f1890610f0d90613341565b602084015190613357565b6020830152610f5d565b610f2f8160a00151613341565b825101825260c08101516080820151610f5791610f4c9101613341565b602084015190613373565b60208301525b6101008201516001600160801b031615610fb157600080610f8d8360c00151856101000151866101200151613389565b60c0860180519290920190915260e0850180519091016001600160801b0316905250505b80606001516001600160a01b031682604001516001600160a01b0316141561113d57806040015115611114578360a0015161103b57611019846040015160008760200151886040015188600001518a60600151601461342a909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b8160a001516110545761104c6135bc565b600160a08301525b60006110a482602001518e61106b57600754611071565b8460c001515b8f611080578560c00151611084565b6008545b608089015160608a015160408b0151600954601196959493929190613679565b90508c156110cc5780516000908103600f90810b810b8352602083018051909203810b900b90525b6110df8361010001518260000151613764565b6001600160801b031661010084015261012083015160208201516111039190613764565b6001600160801b0316610120840152505b8b61112357806020015161112c565b60018160200151035b600290810b900b6060830152611178565b80600001516001600160a01b031682604001516001600160a01b0316146111785761116b826040015161381a565b600290810b900b60608301525b50610d8b565b836020015160020b816060015160020b1461124c576000806111cc86604001518660400151886020015188600001518a606001518b608001516014613b35909695949392919063ffffffff16565b604085015160608601516006805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506112719050565b6040810151600680546001600160a01b0319166001600160a01b039092169190911790555b8061010001516001600160801b031683600001516001600160801b0316146112b957610100810151601080546001600160801b0319166001600160801b039092169190911790555b8061012001516001600160801b031683602001516001600160801b03161461130157610120810151600f80546001600160801b0319166001600160801b039092169190911790555b8a156113515760c081015160075560e08101516001600160801b03161561134c5760e0810151600a80546001600160801b031981166001600160801b03918216909301169190911790555b611397565b60c081015160085560e08101516001600160801b0316156113975760e0810151600a80546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146113b057602081015181518b036113bd565b80600001518a0381602001515b90965094508a156114e35760008512156113ec576002546113ec906001600160a01b03168d6000889003613cd6565b60006113f6613e24565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b5050505061149a613e24565b6114a48289613f3f565b11156114dd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506115fa565b600086121561150757600154611507906001600160a01b03168d6000899003613cd6565b6000611511613f4f565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561159557600080fd5b505af11580156115a9573d6000803e3d6000fd5b505050506115b5613f4f565b6115bf8288613f3f565b11156115f8576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015161010083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506006805460ff60e81b1916600160e81b17905550919890975095505050505050565b6010546001600160801b031681565b600654600160e81b900460ff166116ea576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556003546001600160a01b0316331461173b576040805162461bcd60e51b81526020600482015260026024820152614e4760f01b604482015290519081900360640190fd5b6117436135bc565b6006805460ff60e81b1916600160e81b179055565b600654600160e81b900460ff1661179c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556005546000805460408051631217afdb60e01b81526001600160a01b039283166004820152815193949290921692631217afdb92602480820193929182900301818787803b1580156117fa57600080fd5b505af115801561180e573d6000803e3d6000fd5b505050506040513d604081101561182457600080fd5b50602001519050336001600160a01b0382161461186e576040805162461bcd60e51b81526020600482015260036024820152622723a360e91b604482015290519081900360640190fd5b6003546001600160a01b03161561188457600080fd5b50600380546001600160a01b039384166001600160a01b031991821617909155600480549290931691161790556006805460ff60e81b1916600160e81b179055565b6000546001600160a01b03161580156118e757506001600160a01b03861615155b6118f057600080fd5b600080546001600160a01b038089166001600160a01b0319928316179092556001805488841690831617905560028054878416908316178155600f80549187900b62ffffff16600160a01b0262ffffff60a01b19909216919091179055600580549285169290911691909117905561196783613fc9565b601080546001600160801b03928316600160801b029216919091179055600061198f8261381a565b90506000806119a761199f612cd8565b601490614035565b6040805160c0810182526001600160a01b038816808252600288810b602080850182905260008587015261ffff8881166060870181905290881660808701819052600160a09097019690965260068054600160e81b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9092029190911761ffff60d81b1916600160d81b9096029590951760ff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a1505050505050505050565b60148161ffff8110611abc57600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600a546001600160801b0380821691600160801b90041682565b6006546000908190600160e81b900460ff16611b53576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556004546001600160a01b03163314611ba8576040805162461bcd60e51b815260206004808301919091526024820152631393919560e21b604482015290519081900360640190fd5b611bb6888888888888614081565b6006805460ff60e81b1916600160e81b17905590999098509650505050505050565b600654600160e81b900460ff16611c1c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690819055600160d81b900461ffff166000611c4460148385614213565b6006805461ffff808416600160d81b810261ffff60d81b1990931692909217909255919250831614611cb1576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506006805460ff60e81b1916600160e81b17905550565b6006546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b9091041686565b600f546001600160801b031681565b6005546001600160a01b031681565b6006546000908190600160e81b900460ff16611d77576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556001600160801b038516611d9757600080fd5b600080611de560405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b8152602001611ddb8a6001600160801b03166142b6565b600f0b90526142c7565b92509250508193508092506000806000861115611e0757611e04613e24565b91505b8415611e1857611e15613f4f565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611e9a57600080fd5b505af1158015611eae573d6000803e3d6000fd5b505050506000861115611f0557611ec3613e24565b611ecd8388613f3f565b1115611f05576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8415611f5557611f13613f4f565b611f1d8287613f3f565b1115611f55576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506006805460ff60e81b1916600160e81b17905550919890975095505050505050565b60085481565b6004546001600160a01b031681565b600654600160e81b900460ff16612045576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556010546001600160801b031680612094576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006120b0866120a2612c06565b62ffffff16620f42406144f0565b905060006120c0866120a2612c06565b905060006120cc613e24565b905060006120d8613f4f565b905088156120f7576001546120f7906001600160a01b03168b8b613cd6565b871561211457600254612114906001600160a01b03168b8a613cd6565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561219657600080fd5b505af11580156121aa573d6000803e3d6000fd5b5050505060006121b8613e24565b905060006121c4613f4f565b9050816121d18588613f3f565b1115612209576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b806122148487613f3f565b111561224c576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b83820383820381156122be57600f5460009081906122769085908d906001600160801b0316613389565b9092509050811561228a5760078054830190555b6001600160801b038116156122bb57600a80546001600160801b038082168401166001600160801b03199091161790555b50505b801561232957600f5460009081906122e29084908d906001600160801b0316613389565b909250905081156122f65760088054830190555b6001600160801b0381161561232657600a80546001600160801b03600160801b8083048216850182160291161790555b50505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506006805460ff60e81b1916600160e81b179055505050505050505050505050565b600654600160e81b900460ff166123f3576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556003546001600160a01b03163314612444576040805162461bcd60e51b81526020600482015260026024820152614e4760f01b604482015290519081900360640190fd5b600654600160a01b9004600290810b9084810b9082900b1280159061246e57508260020b8160020b125b156124b25761247b6135bc565b600f54612491906001600160801b031686613764565b600f80546001600160801b0319166001600160801b03929092169190911790555b8115612545576004546000906124d5906013906001600160a01b0316878761452a565b6003549091506000906124f5906013906001600160a01b0316888861452a565b905060008061251a888887600754600854601161458e9095949392919063ffffffff16565b90925090506125328460008b8103908590859061463a565b612540838a8484600161463a565b505050505b600284810b900b600090815260116020526040902060050154600160f81b900460ff161561257b5761257b6011858760006147d5565b600283810b900b600090815260116020526040902060050154600160f81b900460ff16156125b1576125b16011848760016147d5565b50506006805460ff60e81b1916600160e81b179055505050565b6006546000908190600160e81b900460ff16612614576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b1916905561262f878787878733614081565b6006805460ff60e81b1916600160e81b179055909890975095505050505050565b60136020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60126020526000908152604090205481565b60095481565b600654600160e81b900460ff166126e9576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556003546001600160a01b0316331461273a576040805162461bcd60e51b81526020600482015260026024820152614e4760f01b604482015290519081900360640190fd5b600b92909255600c55600d556000600e556006805460ff60e81b1916600160e81b179055565b6006546000908190600160e81b900460ff166127a9576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556004546001600160a01b031633146127fe576040805162461bcd60e51b815260206004808301919091526024820152631393919560e21b604482015290519081900360640190fd5b61280a86868686614861565b6006805460ff60e81b1916600160e81b1790559097909650945050505050565b601054600160801b90046001600160801b031681565b600b5481565b6060806128c3612854612cd8565b85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600654601054601495949350600160a01b820460020b925061ffff600160b81b83048116926001600160801b0390921691600160c81b900416614985565b915091509250929050565b60006128da8484614adf565b816128e55760095491505b6006546129039060119086908690600160a01b900460020b86614ba8565b90505b9392505050565b6006546000908190600160e81b900460ff16612956576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b1916905561296f85858533614861565b6006805460ff60e81b1916600160e81b17905590969095509350505050565b6003546001600160a01b031681565b600e5481565b60008054604080516348cf7a4360e01b815230600482015290516001600160a01b03909216916348cf7a4391602480820192602092909190829003018186803b1580156129ef57600080fd5b505afa158015612a03573d6000803e3d6000fd5b505050506040513d6020811015612a1957600080fd5b5051905090565b6000546001600160a01b031681565b6006546000908190600160e81b900460ff16612a78576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6006805460ff60e81b191690556003546001600160a01b03163314612ac9576040805162461bcd60e51b81526020600482015260026024820152614e4760f01b604482015290519081900360640190fd5b5050600a546001600160801b0380821691600160801b9004166001821115612b2657600a80546001600160801b03191660019081179091555460001990920191612b26906001600160a01b0316336001600160801b038516613cd6565b6001816001600160801b03161115612b7357600a80546001600160801b03908116600160801b1790915560025460001990920191612b73916001600160a01b039091169033908416613cd6565b604080516001600160801b03808516825283166020820152815133927f205860e66845f2bbc0966bfab80db9bf93fca93862ea2b9fcf6945748352b4a3928290030190a26006805460ff60e81b1916600160e81b1790559091565b600c5481565b600f54600160801b900463ffffffff1681565b600f54600160a01b900460020b81565b6002546001600160a01b031681565b6000805460408051630d51637360e21b815230600482015290516001600160a01b03909216916335458dcc91602480820192602092909190829003018186803b1580156129ef57600080fd5b600d5481565b60075481565b6011602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160801b03851695600160801b909504600f90810b9594900b9390600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff168a565b4290565b60008060008460020b8660020b81612cf057fe5b05905060008660020b128015612d1757508460020b8660020b81612d1057fe5b0760020b15155b15612d2157600019015b8315612d9657600080612d3383614c20565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612d7857888360ff16860302612d8b565b88612d8282614c32565b840360ff168603025b965050505050612e14565b600080612da583600101614c20565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612df757888360ff0360ff16866001010102612e0d565b8883612e0283614cd1565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612e35578260020b612e3d565b8260020b6000035b9050620d89e8811115612e7b576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612e8f57600160801b612ea1565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612ed5576ffff97272373d413259a46990580e213a0260801c5b6004821615612ef4576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612f13576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612f32576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612f51576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612f70576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612f8f576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612faf576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612fcf576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612fef576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561300f576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561302f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561304f576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561306f576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561308f576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156130b0576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156130d0576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156130ef576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561310c576b048a170391f7dc42444e8fa20260801c5b60008460020b131561312757806000198161312357fe5b0490505b600160201b81061561313a57600161313d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131d45760006131888989620f42400362ffffff16620f4240614dbb565b9050826131a15761319c8c8c8c6001614e6a565b6131ae565b6131ae8b8d8c6001614ee5565b95508581106131bf578a96506131ce565b6131cb8c8b8386614f90565b96505b5061321e565b816131eb576131e68b8b8b6000614ee5565b6131f8565b6131f88a8c8b6000614e6a565b935083886000031061320c5789955061321e565b61321b8b8a8a60000385614fdc565b95505b6001600160a01b038a81169087161482156132815780801561323d5750815b6132535761324e878d8c6001614ee5565b613255565b855b9550808015613262575081155b61327857613273878d8c6000614e6a565b61327a565b845b94506132cb565b80801561328b5750815b6132a15761329c8c888c6001614e6a565b6132a3565b855b95508080156132b0575081155b6132c6576132c18c888c6000614ee5565b6132c8565b845b94505b811580156132db57508860000385115b156132e7578860000394505b81801561330657508a6001600160a01b0316876001600160a01b031614155b15613315578589039350613332565b61332f868962ffffff168a620f42400362ffffff166144f0565b93505b50505095509550955095915050565b6000600160ff1b821061335357600080fd5b5090565b8082038281131560008312151461336d57600080fd5b92915050565b8181018281121560008312151461336d57600080fd5b600080826001600160801b0316846001600160801b031614156133ad575083613422565b6001600160801b0383166133f0576000806133c9876000615028565b915091506133e582600160801b886001600160801b0316614dbb565b935091506134229050565b6000806133fe878787615048565b9150915061341c82600160801b8789036001600160801b0316614dbb565b93509150505b935093915050565b60008063ffffffff87166134d0576000898661ffff1661ffff811061344b57fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146134bc576134b9818a8988615082565b90505b8060200151816040015192509250506135b0565b8688036000806134e58c8c858c8c8c8c615125565b91509150816000015163ffffffff168363ffffffff1614156135175781602001518260400151945094505050506135b0565b805163ffffffff8481169116141561353f5780602001518160400151945094505050506135b0565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161356d57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161359f57fe5b048560400151019650965050505050505b97509795505050505050565b60006135c6612cd8565b600f5490915063ffffffff600160801b9091048116908216819003801561367457600c541561365557600b54600c54908202908111156136055750600c545b600c80548290039055600f546001600160801b03161561364a57600f5461363c908290600160801b906001600160801b0316614dbb565b600980549091019055613653565b600e8054820190555b505b600f805463ffffffff60801b1916600160801b63ffffffff8616021790555b505050565b613681615c2b565b600297880b880b60009081526020998a5260409020978801805490970390965560038701805490950390945560048601805490940390935560058501805463ffffffff600160d81b6001600160a01b03600160381b808504821690970316909502600160381b600160d81b031990921691909117600681810b90940390930b66ffffffffffffff1666ffffffffffffff1990931692909217838104831690940390911690910263ffffffff60d81b199092169190911790558154600160801b9004600f90810b810b810b8252600190920154820b820b90910b9181019190915290565b60008082600f0b12156137c957826001600160801b03168260000384039150816001600160801b0316106137c4576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b61336d565b826001600160801b03168284019150816001600160801b0316101561336d576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613856575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61388b576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061391f57607f810383901c9150613929565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613b2657886001600160a01b0316613b0a82612e1e565b6001600160a01b03161115613b1f5781613b21565b805b613b28565b815b9998505050505050505050565b6000806000898961ffff1661ffff8110613b4b57fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250898116600e9092011610613bc057888592509250506135b0565b8461ffff168461ffff16118015613be157506001850361ffff168961ffff16145b15613bee57839150613bf2565b8491505b8161ffff168960010161ffff1681613c0657fe5b069250613c1581898989615082565b8a8461ffff1661ffff8110613c2657fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613d525780518252601f199092019160209182019101613d33565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613db4576040519150601f19603f3d011682016040523d82523d6000602084013e613db9565b606091505b5091509150818015613de7575080511580613de75750808060200190516020811015613de457600080fd5b50515b613e1d576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b600154604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600094859485946001600160a01b039092169391928291908083835b60208310613e9f5780518252601f199092019160209182019101613e80565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613eff576040519150601f19603f3d011682016040523d82523d6000602084013e613f04565b606091505b5091509150818015613f1857506020815110155b613f2157600080fd5b808060200190516020811015613f3657600080fd5b50519250505090565b8082018281101561336d57600080fd5b600254604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600094859485946001600160a01b0390921693919282919080838360208310613e9f5780518252601f199092019160209182019101613e80565b60008082600281900b620d89e71981613fde57fe5b05029050600083600281900b620d89e881613ff557fe5b0502905060008460020b83830360020b8161400c57fe5b0560010190508062ffffff166001600160801b0380168161402957fe5b0493505050505b919050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b600080806140926013858a8a61452a565b60038101549091506001600160801b03908116908716116140b357856140c2565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b9091048116908616116140ea5784614100565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615614152576003810180546001600160801b031981166001600160801b03918216869003821617909155600154614152916001600160a01b03909116908b908616613cd6565b6001600160801b038216156141a5576003810180546001600160801b03600160801b8083048216869003821602918116919091179091556002546141a5916001600160a01b03909116908b908516613cd6565b604080516001600160a01b038b811682526001600160801b038087166020840152851682840152915160028a810b93908c900b92908816917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c09181900360600190a450965096945050505050565b6000808361ffff1611614251576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611614267575081612906565b825b8261ffff168161ffff1610156142ad576001858261ffff1661ffff811061428c57fe5b01805463ffffffff191663ffffffff92909216919091179055600101614269565b50909392505050565b80600f81900b811461403057600080fd5b60008060006142de84602001518560400151614adf565b6040805160c0810182526006546001600160a01b0381168252600160a01b8104600290810b810b900b6020808401829052600160b81b830461ffff90811685870152600160c81b84048116606080870191909152600160d81b85049091166080860152600160e81b90930460ff16151560a085015288519089015194890151928901519394614373949193909290919061531f565b93508460600151600f0b6000146144e857846020015160020b816020015160020b12156143c8576143c16143aa8660200151612e1e565b6143b78760400151612e1e565b87606001516154d9565b92506144e8565b846040015160020b816020015160020b12156144be5760105460408201516001600160801b039091169061441a906143fe612cd8565b6020850151606086015160808701516014949392918791613b35565b6006805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790558151604087015161446a919061446090612e1e565b88606001516154d9565b935061448861447c8760200151612e1e565b8351606089015161551d565b9250614498818760600151613764565b601080546001600160801b0319166001600160801b0392909216919091179055506144e8565b6144e56144ce8660200151612e1e565b6144db8760400151612e1e565b876060015161551d565b91505b509193909250565b60006144fd848484614dbb565b90506000828061450957fe5b848609111561290657600019811061452057600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126145d4575050600282015460038301546145e7565b8360020154880391508360030154870390505b6000808b60020b8b60020b12156146095750506002830154600384015461461c565b84600201548a0391508460030154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825286546001600160801b0390811682526001880154602083015260028801549282019290925260038701548083166060830152600160801b900490911660808201526000600f86900b6146d95781516001600160801b03166146d1576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516146e8565b81516146e59087613764565b90505b60008084614739576147128460200151880385600001516001600160801b0316600160801b614dbb565b91506147368460400151870385600001516001600160801b0316600160801b614dbb565b90505b87600f0b60001461475e5788546001600160801b0319166001600160801b0384161789555b60018901879055600289018690556001600160801b03821615158061478c57506000816001600160801b0316115b156147ca576003890180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b505050505050505050565b600283810b900b6000908152602085905260409020816148165760018101546148119061480c90600f90810b810b9086900b613373565b6142b6565b614833565b60018101546148339061480c90600f90810b810b9086900b613357565b60019091018054600f9290920b6001600160801b03166001600160801b031990921691909117905550505050565b60008060008060006148b76040518060800160405280886001600160a01b031681526020018b60020b81526020018a60020b81526020016148aa8a6001600160801b03166142b6565b600003600f0b90526142c7565b92509250925081600003945080600003935060008511806148d85750600084115b15614917576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b8760020b8960020b876001600160a01b03167f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c8a898960405180846001600160801b03168152602001838152602001828152602001935050505060405180910390a450505094509492505050565b60608060008361ffff16116149c5576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156149dd57600080fd5b50604051908082528060200260200182016040528015614a07578160200160208202803683370190505b509150865167ffffffffffffffff81118015614a2257600080fd5b50604051908082528060200260200182016040528015614a4c578160200160208202803683370190505b50905060005b8751811015614ad257614a7d8a8a8a8481518110614a6c57fe5b60200260200101518a8a8a8a61342a565b848381518110614a8957fe5b60200260200101848481518110614a9c57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614a52565b5097509795505050505050565b8060020b8260020b12614b1f576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614b62576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614ba4576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b600284810b80820b60009081526020889052604080822087850b850b835290822091939092849187900b12614be257506004820154614beb565b50600482015484035b60008760020b8760020b1215614c0657506004820154614c0f565b50600482015485035b940393909303979650505050505050565b60020b600881901d9161010090910790565b6000808211614c4057600080fd5b600160801b8210614c5357608091821c91015b680100000000000000008210614c6b57604091821c91015b600160201b8210614c7e57602091821c91015b620100008210614c9057601091821c91015b6101008210614ca157600891821c91015b60108210614cb157600491821c91015b60048210614cc157600291821c91015b6002821061403057600101919050565b6000808211614cdf57600080fd5b5060ff6001600160801b03821615614cfa57607f1901614d02565b608082901c91505b67ffffffffffffffff821615614d1b57603f1901614d23565b604082901c91505b63ffffffff821615614d3857601f1901614d40565b602082901c91505b61ffff821615614d5357600f1901614d5b565b601082901c91505b60ff821615614d6d5760071901614d75565b600882901c91505b600f821615614d875760031901614d8f565b600482901c91505b6003821615614da15760011901614da9565b600282901c91505b60018216156140305760001901919050565b6000808060001985870986860292508281109083900303905080614df15760008411614de657600080fd5b508290049050612906565b808411614dfd57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000836001600160a01b0316856001600160a01b03161115614e8a579293925b81614eb757614eb2836001600160801b03168686036001600160a01b0316600160601b614dbb565b614eda565b614eda836001600160801b03168686036001600160a01b0316600160601b6144f0565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614f05579293925b600160601b600160e01b03606084901b166001600160a01b038686038116908716614f2f57600080fd5b83614f5f57866001600160a01b0316614f528383896001600160a01b0316614dbb565b81614f5957fe5b04614f85565b614f85614f768383896001600160a01b03166144f0565b886001600160a01b031661554c565b979650505050505050565b600080856001600160a01b031611614fa757600080fd5b6000846001600160801b031611614fbd57600080fd5b81614fcf57614eb28585856001615557565b614eda8585856001615638565b600080856001600160a01b031611614ff357600080fd5b6000846001600160801b03161161500957600080fd5b8161501b57614eb28585856000615638565b614eda8585856000615557565b6000806000615039856120a26129a3565b94859003959390940193505050565b60008061506885846001600160801b0316866001600160801b03166144f0565b905061507681860382615028565b90969095509350505050565b61508a615c42565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b0316116150de5760016150e0565b845b6001600160801b031663ffffffff60801b608085901b16816150fe57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b61512d615c42565b615135615c42565b888561ffff1661ffff811061514657fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff161515606082015292506151aa9089908961571b565b156151e2578663ffffffff16826000015163ffffffff1614156151cc576135b0565b816151d983898988615082565b915091506135b0565b888361ffff168660010161ffff16816151f757fe5b0661ffff1661ffff811061520757fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529092506152bc57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b6152cb8883600001518961571b565b615302576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b61530f89898988876157dc565b9150915097509795505050505050565b600061532e601387878761452a565b60075460085491925090600080600f87900b1561544d57600061534f612cd8565b60065460105491925060009182916153999160149186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b90041661342a565b60105491935091506153d0906011908e908c908e908c908c9088908a908c90600090600160801b90046001600160801b031661597a565b601054909550615405906011908d908c908e908c908c9088908a908c90600190600160801b90046001600160801b031661597a565b9350841561542857600f54615428906012908e90600160a01b900460020b615b2e565b831561544957600f54615449906012908d90600160a01b900460020b615b2e565b5050505b60008061545f60118c8c8b8a8a61458e565b60035491935091506000906001600160a01b038e8116911614801561548c57506001600160a01b038d1615155b905061549b888b85858561463a565b60008a600f0b12156154c95784156154b8576154b860118d615b94565b83156154c9576154c960118c615b94565b5050505050505095945050505050565b60008082600f0b126154ff576154fa6154f58585856001614ee5565b613341565b612903565b6155126154f58585856000036000614ee5565b600003949350505050565b60008082600f0b12615539576154fa6154f58585856001614e6a565b6155126154f58585856000036000614e6a565b808204910615150190565b600081156155ca5760006001600160a01b0384111561558d5761558884600160601b876001600160801b0316614dbb565b6155a5565b6001600160801b038516606085901b816155a357fe5b045b90506155c26155bd6001600160a01b03881683613f3f565b615bd9565b915050614edd565b60006001600160a01b038411156155f8576155f384600160601b876001600160801b03166144f0565b61560f565b61560f606085901b6001600160801b03871661554c565b905080866001600160a01b03161161562657600080fd5b6001600160a01b038616039050614edd565b600082615646575083614edd565b600160601b600160e01b03606085901b1682156156d4576001600160a01b0386168481029085828161567457fe5b0414156156a5578181018281106156a35761569983896001600160a01b0316836144f0565b9350505050614edd565b505b6156cb826156c6878a6001600160a01b031686816156bf57fe5b0490613f3f565b61554c565b92505050614edd565b6001600160a01b038616848102908582816156eb57fe5b041480156156f857508082115b61570157600080fd5b8082036156996155bd846001600160a01b038b16846144f0565b60008363ffffffff168363ffffffff161115801561574557508363ffffffff168263ffffffff1611155b15615761578163ffffffff168363ffffffff1611159050612906565b60008463ffffffff168463ffffffff1611615788578363ffffffff16600160201b01615790565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116157c0578363ffffffff16600160201b016157c8565b8363ffffffff165b64ffffffffff169091111595945050505050565b6157e4615c42565b6157ec615c42565b60008361ffff168560010161ffff168161580257fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161582f57fe5b0661ffff811061583b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506158a55780600101925061581a565b898661ffff1682600101816158b657fe5b0661ffff81106158c257fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820152855190945060009061592c908b908b61571b565b905080801561594557506159458a8a876000015161571b565b15615950575061596d565b8061596057600182039250615967565b8160010193505b5061581a565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b0316826159a5828d613764565b9050846001600160801b0316816001600160801b031611156159f3576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615a98578c60020b8e60020b13615a8057600283018b9055600383018a9055600583018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6005830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b03821617835585615adc578254615ad79061480c90600160801b9004600f90810b810b908f900b613373565b615afd565b8254615afd9061480c90600160801b9004600f90810b810b908f900b613357565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b81615b3d57fe5b0760020b15615b4b57600080fd5b600080615b668360020b8560020b81615b6057fe5b05614c20565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600290810b810b6000908152602092909252604082208281556001810180546001600160801b0319169055908101829055600381018290556004810182905560050155565b806001600160a01b038116811461403057600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b604080518082019091526000808252602082015290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea2646970667358221220d6459e52c21b3e950a8eecb1578b83f34f9c2c5d0bd9051ca4073b3034ad83c164736f6c63430007060033