avantis-trader-sdk 0.7.0__py3-none-any.whl → 0.8.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- avantis_trader_sdk/__init__.py +1 -22
- avantis_trader_sdk/abis/PairInfos.sol/PairInfos.json +1 -1
- avantis_trader_sdk/abis/PriceAggregator.sol/PriceAggregator.json +1 -1
- avantis_trader_sdk/abis/Referral.sol/Referral.json +1 -1
- avantis_trader_sdk/abis/Trading.sol/Trading.json +1 -1
- avantis_trader_sdk/abis/TradingCallbacks.sol/TradingCallbacks.json +1 -1
- avantis_trader_sdk/abis/TradingStorage.sol/TradingStorage.json +1 -1
- avantis_trader_sdk/config.py +3 -3
- avantis_trader_sdk/rpc/asset_parameters.py +15 -15
- avantis_trader_sdk/rpc/trade.py +320 -4
- avantis_trader_sdk/rpc/trading_parameters.py +7 -4
- avantis_trader_sdk/types.py +1 -0
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.2.dist-info}/METADATA +1 -1
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.2.dist-info}/RECORD +16 -16
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.2.dist-info}/WHEEL +0 -0
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.2.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAccRolloverFeesLong","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAccRolloverFeesShort","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAccRolloverFeesUpdateBlock","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlendedSkew","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_long","type":"bool","internalType":"bool"},{"name":"_longOI","type":"uint256","internalType":"uint256"},{"name":"_shortOI","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlendedUtilizationRatio","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_longOI","type":"uint256","internalType":"uint256"},{"name":"_shortOI","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnePercentDepthAbove","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnePercentDepthBelow","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPairInfos","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IPairInfos.PairParams[]","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]},{"name":"","type":"tuple[]","internalType":"struct IPairInfos.PairRolloverFees[]","components":[{"name":"accPerOiLong","type":"uint256","internalType":"uint256"},{"name":"accPerOiShort","type":"uint256","internalType":"uint256"},{"name":"lastUpdateBlock","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingAccRolloverFees","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"valueLong","type":"uint256","internalType":"uint256"},{"name":"valueShort","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPriceImpactSpread","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isBuy","type":"bool","internalType":"bool"},{"name":"_leveragePosition","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"spread","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getRolloverFeePerBlockP","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSkewImpactSpread","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isBuy","type":"bool","internalType":"bool"},{"name":"_leveragePosition","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"spread","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getTradeInitialAccRolloverFeesPerCollateral","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeLiquidationPrice","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeLiquidationPricePure","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"rolloverFee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradePriceImpact","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"tradeOpenInterest","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"priceAfterImpact","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeRolloverFee","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeRolloverFeePure","inputs":[{"name":"accRolloverFeesPerOi","type":"uint256","internalType":"uint256"},{"name":"endAccRolloverFeesPerOi","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getTradeValue","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"percentProfit","type":"int256","internalType":"int256"},{"name":"closingFee","type":"uint256","internalType":"uint256"},{"name":"_tier","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"pnl","type":"int256","internalType":"int256"},{"name":"fees","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTradeValuePure","inputs":[{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"percentProfit","type":"int256","internalType":"int256"},{"name":"rolloverFee","type":"uint256","internalType":"uint256"},{"name":"closingFee","type":"uint256","internalType":"uint256"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairsStorage","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"keeper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"liqThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"longSkewConfig","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionNumTiers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionTier","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairParams","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairRolloverFees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"accPerOiLong","type":"uint256","internalType":"uint256"},{"name":"accPerOiShort","type":"uint256","internalType":"uint256"},{"name":"lastUpdateBlock","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairsStorage","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairStorage"}],"stateMutability":"view"},{"type":"function","name":"setKeeper","inputs":[{"name":"_keeper","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLossProtectionConfig","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_longSkewConfig","type":"uint256[]","internalType":"uint256[]"},{"name":"_shortSkewConfig","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","inputs":[{"name":"_manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOnePercentDepth","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"valueAbove","type":"uint256","internalType":"uint256"},{"name":"valueBelow","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOnePercentDepthArray","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"},{"name":"valuesAbove","type":"uint256[]","internalType":"uint256[]"},{"name":"valuesBelow","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairParams","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"value","type":"tuple","internalType":"struct IPairInfos.PairParams","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairParamsArray","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"tuple[]","internalType":"struct IPairInfos.PairParams[]","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRolloverFeePerBlockP","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shortSkewConfig","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"storeTradeInitialAccFees","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tradeInitialAccFees","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"rollover","type":"uint256","internalType":"uint256"},{"name":"openedAfterUpdate","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"udpateLiquidationThreshold","inputs":[{"name":"_newThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AccRolloverFeesStored","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueLong","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueShort","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CoeffUpdated","inputs":[{"name":"multiplierCoeffMax","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DenomUpdated","inputs":[{"name":"multiplierDenom","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeesCharged","inputs":[{"name":"buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"leverage","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"r","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"closingFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtection","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"KeeperUpdated","inputs":[{"name":"keeper","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"LiqThresholdUpdated","inputs":[{"name":"newThreshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LossProtectionConfigSet","inputs":[{"name":"numTiers","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"longSkewConfig","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"shortSkewConfig","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"ManagerUpdated","inputs":[{"name":"value","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MaxNegativePnlOnOpenPUpdated","inputs":[{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MultiplierUpdated","inputs":[{"name":"minMultiplierRate","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMultiplierRate","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OnePercentDepthUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueAbove","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueBelow","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PairParamsUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"tuple","indexed":false,"internalType":"struct IPairInfos.PairParams","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"RolloverFeePerBlockPUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TradeInitialAccFeesStored","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"rollover","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61502a80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c806375923b9d11610151578063bf1db1f6116100c3578063d0ebdbe711610087578063d0ebdbe714610670578063eb95e10c14610683578063f696065414610696578063fcfe7378146106a9578063fdd3265f146106bc578063fe3cfd8c146106cf57600080fd5b8063bf1db1f6146105e8578063c21fbef814610617578063c9533ebc1461062a578063cf2befd21461063d578063cfc23e9e1461065057600080fd5b8063867a60c211610115578063867a60c21461056b578063890801de1461057e578063ab21a05c14610591578063aced1661146105b9578063ae2293d7146105cc578063b74243ba146105d557600080fd5b806375923b9d146104ff5780637d36dda8146105125780637d827137146105255780637ea95f321461054557806382d317b21461055857600080fd5b8063351533e7116101ea5780635ed5804e116101ae5780635ed5804e146104405780636676d850146104905780636a3ca5fd146104a35780636bc84d59146104b6578063726219f3146104c9578063748747e6146104ec57600080fd5b8063351533e7146103c557806335b03c17146103d857806342dee1ad146103eb578063481c6a751461041a578063485cc9551461042d57600080fd5b806316fff0741161023157806316fff0741461031b578063183566d41461034c5780631f4934a11461035f5780632b180a7d1461037f578063338139ad146103a257600080fd5b8063050982721461026e5780630b224e87146102945780630e0052fc146102c25780630e6bc39a146102e55780630ea77770146102fa575b600080fd5b61028161027c366004614647565b610710565b6040519081526020015b60405180910390f35b6102a76102a236600461495c565b6107a1565b6040805193845260208401929092529082015260600161028b565b6102816102d03660046149a4565b60009081526006602052604090206002015490565b6102f86102f33660046145fd565b6109e1565b005b61030d610308366004614793565b610b84565b60405161028b929190614c5c565b600054610334906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161028b565b61028161035a366004614b67565b610d5e565b61028161036d3660046149a4565b60086020526000908152604090205481565b61028161038d3660046149a4565b60009081526005602052604090206001015490565b6102816103b03660046149a4565b60009081526005602052604090206002015490565b6102f86103d336600461486f565b610d8f565b600154610334906001600160a01b031681565b6102a76103f93660046149a4565b60056020526000908152604090208054600182015460029092015490919083565b600254610334906001600160a01b031681565b6102f861043b36600461458f565b610e71565b61047b61044e3660046145c8565b60076020908152600093845260408085208252928452828420905282529020805460019091015460ff1682565b6040805192835290151560208301520161028b565b61028161049e366004614a6f565b610fc2565b6102816104b1366004614b67565b61135a565b6102816104c43660046146a3565b611376565b6102816104d73660046149a4565b60009081526006602052604090206001015490565b6102f86104fa366004614555565b611399565b6102a761050d366004614af4565b6114e6565b610281610520366004614aac565b6115ba565b6102816105333660046149a4565b60009081526006602052604090205490565b610281610553366004614b89565b61163e565b61028161056636600461493f565b61178f565b6102f86105793660046147d5565b611a33565b61028161058c366004614a37565b611aee565b6105a461059f3660046149a4565b611e19565b6040805192835260208301919091520161028b565b600354610334906001600160a01b031681565b61028160045481565b6102f86105e3366004614b67565b612118565b6102a76105f63660046149a4565b60066020526000908152604090208054600182015460029092015490919083565b6102f86106253660046149a4565b6121dd565b610281610638366004614bc8565b6122c8565b6102f861064b3660046149bd565b612441565b61028161065e3660046149a4565b60009081526005602052604090205490565b6102f861067e366004614555565b6124fe565b6102f8610691366004614b2f565b612644565b6102f86106a4366004614bc8565b61267c565b6102816106b7366004614a37565b6126cf565b6102816106ca366004614bf4565b6127b6565b6102816106dd3660046145c8565b6001600160a01b038316600090815260076020908152604080832085845282528083208484529091529020549392505050565b6001600160a01b0386166000908152600760209081526040808320888452825280832087845282528083208151808301909252805482526001015460ff16151591810182905290610765576000915050610797565b60008061077189611e19565b91509150610791836000015188610788578261078a565b835b88886127b6565b93505050505b9695505050505050565b60008060008060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f257600080fd5b505afa158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a9190614572565b6001600160a01b0316336001600160a01b0316146108805760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064015b60405180910390fd5b61088d88602001516127ef565b60006108b189600001518a602001518b604001518c60c001518c8e60e00151610710565b60015460208b0151604051632b1cbe9d60e01b81529293506000926001600160a01b0390921691632b1cbe9d916108f5918a90600401918252602082015260400190565b60206040518083038186803b15801561090d57600080fd5b505afa158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190614926565b90506109548989848a856114e6565b60c08d015160e08e01516040519499509297509095507fb70bf101b761b8a0fe59428f8a894321d6639ef13ab81b9bf16d19764a7dba66926109cc928d918d9088908e9089909615158752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60405180910390a15050955095509592505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a669190614572565b6001600160a01b0316336001600160a01b031614610ab75760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610877565b610ac0836127ef565b6001600160a01b03841660009081526007602090815260408083208684528252808320858452909152902081610b0757600084815260066020526040902060010154610b17565b6000848152600660205260409020545b8082556001808301805460ff19169091179055604080516001600160a01b03881681526020810187905290810185905260608101919091527f835af8708eb91d2079c09e00124475ffca3f81cbef1e074867d53e5c9ec0ed98906080015b60405180910390a15050505050565b60608060008367ffffffffffffffff811115610ba257610ba2614fb8565b604051908082528060200260200182016040528015610bf757816020015b610be460405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610bc05790505b50905060008467ffffffffffffffff811115610c1557610c15614fb8565b604051908082528060200260200182016040528015610c6a57816020015b610c5760405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610c335790505b50905060005b85811015610d50576000878783818110610c8c57610c8c614fa2565b905060200201359050600560008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848381518110610ce357610ce3614fa2565b6020026020010181905250600660008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050838381518110610d3c57610d3c614fa2565b602090810291909101015250600101610c70565b5090925090505b9250929050565b600a6020528160005260406000208181548110610d7a57600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610db95760405162461bcd60e51b815260040161087790614d0f565b8483148015610dc757508481145b610e025760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610877565b60005b85811015610e6857610e60878783818110610e2257610e22614fa2565b90506020020135868684818110610e3b57610e3b614fa2565b90506020020135858585818110610e5457610e54614fa2565b90506020020135612852565b600101610e05565b50505050505050565b600054610100900460ff1615808015610e915750600054600160ff909116105b80610eab5750303b158015610eab575060005460ff166001145b610f0e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610877565b6000805460ff191660011790558015610f31576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560556004558015610fbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610fce8284614def565b610fda57506000611352565b600154604051633c44d0a360e01b8152600481018790526001600160a01b0390911690633c44d0a39060240160206040518083038186803b15801561101e57600080fd5b505afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110569190614926565b600214156112ff5760008060029054906101000a90046001600160a01b03166001600160a01b0316638ecf3f5a6040518163ffffffff1660e01b8152600401604080518083038186803b1580156110ac57600080fd5b505afa1580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e4919061470b565b90506000856110f45760016110f7565b60005b600154604051636dc37de360e01b8152600481018a905260ff92909216925060009184916001600160a01b031690636dc37de39060240160206040518083038186803b15801561114657600080fd5b505afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190614909565b6111925761118d836001614f2c565b611194565b825b600281106111a4576111a4614fa2565b6020020151600154604051636dc37de360e01b8152600481018b905291925060009185916001600160a01b031690636dc37de39060240160206040518083038186803b1580156111f357600080fd5b505afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190614909565b6112355783611240565b611240846001614f2c565b6002811061125057611250614fa2565b6020020151905060006112638383614def565b61126e846064614ece565b6112789190614e35565b90506000896112a55761128b888a614def565b611296896064614ece565b6112a09190614e35565b6112c4565b6112af888a614def565b6112ba8a6064614ece565b6112c49190614e35565b905060646112d3826019614ece565b6112de84604b614ece565b6112e89190614def565b6112f29190614e35565b9650505050505050611352565b60008461132a576113108385614def565b61131b846064614ece565b6113259190614e35565b611349565b6113348385614def565b61133f856064614ece565b6113499190614e35565b91506113529050565b949350505050565b60096020528160005260406000208181548110610d7a57600080fd5b600061138d858585856105208d8d8d8c8c8c610710565b98975050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190614572565b6001600160a01b0316336001600160a01b03161461144f5760405162461bcd60e51b815260040161087790614d35565b6001600160a01b0381166114915760405162461bcd60e51b81526020600482015260096024820152682d22a927afa0a2222960b91b6044820152606401610877565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e906020015b60405180910390a150565b600080808060646402540be4006114fd8a8c614e49565b6115079190614e07565b6115119190614e07565b905060008112156115355760646115288683614e49565b6115329190614e07565b90505b60006115418789614dae565b9050600081611550848d614dae565b61155a9190614eed565b90506064600454606461156d9190614f2c565b611577908d614e49565b6115819190614e07565b8113611597575060006115948b83614eed565b92505b600081136115a65760006115a8565b805b9b929a50909850909650505050505050565b6000806115c785856128b2565b836064600454886115d89190614ece565b6115e29190614e35565b6115ec9190614eed565b6115f69089614e49565b6116009190614e07565b9050600086611618576116138289614dae565b611622565b6116228289614eed565b90506000811361163357600061138d565b979650505050505050565b60008061164c8585856126cf565b9050600061165b868686611aee565b60015460405163a1d54e9b60e01b815260048101899052919250600091839185916001600160a01b039091169063a1d54e9b9060240160206040518083038186803b1580156116a957600080fd5b505afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190614926565b6116eb9190614dae565b6116f59190614dae565b9050611707600a6402540be400614e35565b61171090614f43565b811261171c5780611735565b61172c600a6402540be400614e35565b61173590614f43565b9050600060646402540be40061174b8b85614e49565b6117559190614e07565b61175f9190614e07565b905060008761177757611772828b614eed565b611781565b611781828b614dae565b9a9950505050505050505050565b600080546020830151604051639cb87f2360e01b815260048101919091526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b1580156117e757600080fd5b505afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f9190614926565b600080546020860151604051639cb87f2360e01b81526004810191909152600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561187b57600080fd5b505afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190614926565b905060006118d28560e0015186606001516128b290919063ffffffff16565b90508460c0015115611985576118e88184614def565b925060006118f68385614def565b611901846064614ece565b61190b9190614e35565b6020808801516000908152600a90915260409020549091505b801561197e576020808801516000908152600a90915260409020611949600183614f2c565b8154811061195957611959614fa2565b9060005260206000200154821061197557611633600182614f2c565b60001901611924565b5050611a28565b61198f8183614def565b9150600061199d8385614def565b6119a8856064614ece565b6119b29190614e35565b6020808801516000908152600990915260409020549091505b8015611a255760208088015160009081526009909152604090206119f0600183614f2c565b81548110611a0057611a00614fa2565b90600052602060002001548210611a1c57611633600182614f2c565b600019016119cb565b50505b506000949350505050565b6002546001600160a01b03163314611a5d5760405162461bcd60e51b815260040161087790614d0f565b828114611a9b5760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610877565b60005b83811015611ae757611adf858583818110611abb57611abb614fa2565b90506020020135848484818110611ad457611ad4614fa2565b9050606002016128d7565b600101611a9e565b5050505050565b600154604051633a2d43e160e21b8152600481018590526000916402540be4009183916001600160a01b03169063e8b50f849060240160206040518083038186803b158015611b3c57600080fd5b505afa158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b749190614926565b60008054604051639cb87f2360e01b8152600481018a9052602481018390529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611bca57600080fd5b505afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c029190614926565b60008054604051639cb87f2360e01b8152600481018b9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611c5857600080fd5b505afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190614926565b905081611ca4576000945050505050611e12565b600087611cd057611cb58284614def565b611cc183612710614ece565b611ccb9190614e35565b611cf0565b611cda8284614def565b611ce684612710614ece565b611cf09190614e35565b9050600088611d335787611d048486614def565b611d0e9190614def565b611d188985614def565b611d2490612710614ece565b611d2e9190614e35565b611d68565b87611d3e8486614def565b611d489190614def565b611d528986614def565b611d5e90612710614ece565b611d689190614e35565b90506000611d89611d7b84612710614f2c565b6127106402540be40061295f565b611d98611d7b84612710614f2c565b611daa856127106402540be40061295f565b611dbc856127106402540be40061295f565b611dc69190614eed565b611dd09190614dae565b611dda9190614eed565b905086611de78288614e49565b611df19190614e07565b975086611dfe8288614e49565b611e089190614e07565b9750505050505050505b9392505050565b6000818152600660205260408082208054600182015484549351639cb87f2360e01b8152600481018790526024810186905291949093909182916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b158015611e8457600080fd5b505afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190614926565b60008054604051639cb87f2360e01b8152600481018a9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611f1257600080fd5b505afa158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614926565b9050811561203457611f5d8783836122c8565b92506000611f6e8860018585610fc2565b90506000611f7c8286614ece565b611f8c6402540be4006064614ece565b611f969190614f2c565b611fa08387614ece565b611faf906402540be400614ece565b611fb99190614e35565b905060006402540be40080600560008d815260200190815260200160002060020154896002015443611feb9190614f2c565b611ffa6402540be40087614ece565b6120049190614ece565b61200e9190614ece565b6120189190614e35565b6120229190614e35565b905061202e818a614def565b98505050505b801561210f5760006120498860008585610fc2565b905060006120578286614ece565b6120676402540be4006064614ece565b6120719190614f2c565b61207b8387614ece565b61208a906402540be400614ece565b6120949190614e35565b905060006402540be40080600560008d8152602001908152602001600020600201548960020154436120c69190614f2c565b6120d56402540be40087614ece565b6120df9190614ece565b6120e99190614ece565b6120f39190614e35565b6120fd9190614e35565b90506121098189614def565b97505050505b50505050915091565b6002546001600160a01b031633146121425760405162461bcd60e51b815260040161087790614d0f565b63017d78408111156121815760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe90928e960c31b6044820152606401610877565b61218a826127ef565b60008281526005602090815260409182902060020183905581518481529081018390527f048ce436ab4f2632f2aac62af26be3383ebdf5efc9a63f0bbeb6d6c9762d708991015b60405180910390a15050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122639190614572565b6001600160a01b0316336001600160a01b0316146122935760405162461bcd60e51b815260040161087790614d35565b60048190556040518181527fb7e4406c7dbd1b93965e7b215a33b02672c462728044a364e16b2b47d321aee0906020016114db565b60015460405163232683a960e21b81526004810185905260009182916001600160a01b0390911690638c9a0ea49060240160206040518083038186803b15801561231157600080fd5b505afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190614926565b6402540be4006123598587614def565b6123639190614ece565b61236d9190614e35565b600154604051635970d96b60e11b8152600481018890529192506000916001600160a01b039091169063b2e1b2d69060240160206040518083038186803b1580156123b757600080fd5b505afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef9190614926565b6402540be4006123ff8688614def565b6124099190614ece565b6124139190614e35565b90506064612422826019614ece565b61242d84604b614ece565b6124379190614def565b6107979190614e35565b6002546001600160a01b0316331461246b5760405162461bcd60e51b815260040161087790614d0f565b82811461247757600080fd5b60008581526008602090815260408083208690556009909152902061249d9085856143fb565b506000858152600a602052604090206124b79083836143fb565b50600085815260086020526040908190205490517f7441144ceb286becc54eb23d4ba7d881ec8f99733a2ef397bcefc8a89bb5bd7891610b75918790879087908790614d57565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561254c57600080fd5b505afa158015612560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125849190614572565b6001600160a01b0316336001600160a01b0316146125b45760405162461bcd60e51b815260040161087790614d35565b6001600160a01b0381166125f65760405162461bcd60e51b81526020600482015260096024820152682d22a927afa0a2222960b91b6044820152606401610877565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d906020016114db565b6002546001600160a01b0316331461266e5760405162461bcd60e51b815260040161087790614d0f565b61267882826128d7565b5050565b6003546001600160a01b031633146126c45760405162461bcd60e51b815260206004820152600b60248201526a4b45455045525f4f4e4c5960a81b6044820152606401610877565b610fbd838383612852565b600154604051630bf919a560e31b81526004810185905260009182916001600160a01b0390911690635fc8cd289060240160206040518083038186803b15801561271857600080fd5b505afa15801561272c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127509190614926565b905060008461277057600086815260056020526040902060010154612780565b6000868152600560205260409020545b90506402540be4006127ac816127968786614ece565b6127a09190614e35565b836402540be40061295f565b6107979190614eed565b60006402540be4006127c884846128b2565b6127d28787614f2c565b6127dc9190614ece565b6127e69190614e35565b95945050505050565b600081815260066020526040902061280682611e19565b600183018190558183554360028401556040805185815260208101939093528201527fda1d5f1f1aab631c047218e2f5f973b6c12729f4181103a91459dda3d1603c38906060016121d1565b6000838152600560209081526040918290208481556001810184905582518681529182018590529181018390527f1daeaff85d4d7cfda495ef83720a04b81df77e38711ca570061e16efa6ffa2759060600160405180910390a150505050565b60006402540be4006128c48385614ece565b6128ce9190614e35565b90505b92915050565b6128e0826127ef565b6000828152600560205260409020819061291182828135815560208201356001820155604082013560028201555050565b5050604080518381528235602080830191909152830135818301529082013560608201527fa25aa2e7710f36dc1fc81eae36e26c3554faca8ba5af724112efee783e2f75ee906080016121d1565b60008061296b856129c1565b90506000612978856129c1565b905060006129868383612a2a565b9050600061299382612ce2565b905060006129a9826129a4896129c1565b612d09565b90506129b481612f64565b9998505050505050505050565b6000816129d057506000919050565b8160006129dc8261300b565b905060708110156129f5578060700382901b9150612a08565b6070811115612a08576070810382901c91505b613fff0160701b6001600160701b03919091161760801b92915050565b919050565b6000617fff60f084811c8216919084901c811690821415612a705780617fff1415612a5f575061ffff60ef1b91506128d19050565b505050600160ff1b811682186128d1565b80617fff1415612ab4576dffffffffffffffffffffffffffff60801b841615612aa3575061ffff60ef1b91506128d19050565b505050808218600160ff1b166128d1565b600160801b600160ff1b038416612afe57600160801b600160ff1b038516612ae6575061ffff60ef1b91506128d19050565b505050808218600160ff1b16617fff60f01b176128d1565b6001600160701b03608085901c1681612b1a5760019150612b21565b600160701b175b6001600160701b03608087901c1683612b60578015612b5b576000612b458261300b565b6001955060e20393840160711901939190911b90505b612b6a565b600160701b1760721b5b818181612b7957612b79614f8c565b04905080612ba657600160ff1b87871816612b95576000612b9b565b600160ff1b5b9450505050506128d1565b6001606c1b811015612bba57612bba614f60565b6000600160731b821015612bf957600160721b821015612bee57600160711b821015612be7576070612bf1565b6071612bf1565b60725b60ff16612c02565b612c028261300b565b905083614071018186011115612c2057617fff945060009150612cb3565b83818601613ffc011015612c3b576000945060009150612cb3565b83818601613f8c011015612c88578385613ffc011115612c66578385613ffc010382901b9150612c7f565b8385613ffc011015612c7f57613ffc8585030382901c91505b60009450612cb3565b6070811115612c9b576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b955050505050506128d1565b60006128d1612d04836f1fffb8aa3b295c17f0bbbe87fed0691d60811b612d09565b6130a9565b6000617fff60f084811c8216919084901c811690821415612da85780617fff1415612d87576001600160801b03198581169085161415612d5457505050600160ff1b811682186128d1565b600160ff1b6001600160801b0319868618161415612d77575050508181176128d1565b5061ffff60ef1b91506128d19050565b600160801b600160ff1b038416612a5f575061ffff60ef1b91506128d19050565b80617fff1415612de457600160801b600160ff1b038516612dd3575061ffff60ef1b91506128d19050565b505050600160ff1b821681186128d1565b6001600160701b03608086901c1682612e005760019250612e07565b600160701b175b6001600160701b03608086901c1682612e235760019250612e2a565b600160701b175b9081029081612e4757600160ff1b87871816612b95576000612b9b565b928201926000600160e11b831015612e7a57600160e01b831015612e7357612e6e8361300b565b612e7d565b60e0612e7d565b60e15b90506140708186011015612e98576000945060009250612f35565b6140e08186011015612edb57614070851015612ebd57846140700383901c9250612ed2565b614070851115612ed257614070850383901b92505b60009450612f35565b61c0dd8186011115612ef557617fff945060009250612f35565b6070811115612f0c576070810383901c9250612f1f565b6070811015612f1f578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b955050505050506128d1565b6000617fff60f083901c166140fe811115612f7e57600080fd5b613fff811015612f915750600092915050565b600160701b6001600160701b03608085901c161761406f821015612fbb5761406f8290031c612fcd565b61406f821115612fcd5761406e1982011b5b6001607f1b608085901c10612ff757600160ff1b811115612fed57600080fd5b6000039392505050565b6001600160ff1b03811115611e1257600080fd5b600080821161301957600080fd5b6000600160801b831061302e57608092831c92015b600160401b831061304157604092831c92015b640100000000831061305557602092831c92015b62010000831061306757601092831c92015b610100831061307857600892831c92015b6010831061308857600492831c92015b6004831061309857600292831c92015b600283106128d15760010192915050565b60006001607f1b608083901c90811190617fff60f085901c8116916001600160701b031690821480156130db57508015155b156130ef575061ffff60ef1b949350505050565b61400d821115613114578261310957617fff60f01b6127e6565b600095945050505050565b613f7f82101561312d5750613fff60f01b949350505050565b8161313b5760019150613142565b600160701b175b613fef82111561315857613fee1982011b61316a565b613fef82101561316a57613fef8290031c5b82801561317b575061203760811b81115b1561318b57506000949350505050565b821580156131aa5750713fffffffffffffffffffffffffffffffffff81115b156131be5750617fff60f01b949350505050565b6001600160801b0381169060801c8380156131d857508115155b156131e4579019906001015b6001607f1b828116156132085770016a09e667f3bcc908b2fb1366ea957d3e0260801c5b6001607e1b83161561322b577001306fe0a31b7152de8d5a46305c85edec0260801c5b6001607d1b83161561324e577001172b83c7d517adcdf7c8c50eb14a791f0260801c5b6001607c1b8316156132715770010b5586cf9890f6298b92b71842a983630260801c5b6001607b1b831615613294577001059b0d31585743ae7c548eb68ca417fd0260801c5b6001607a1b8316156132b757700102c9a3e778060ee6f7caca4f7a29bde80260801c5b600160791b8316156132da5770010163da9fb33356d84a66ae336dcdfa3f0260801c5b600160781b8316156132fd57700100b1afa5abcbed6129ab13ec11dc95430260801c5b600160771b8316156133205770010058c86da1c09ea1ff19d294cf2f679b0260801c5b600160761b831615613343577001002c605e2e8cec506d21bfc89a23a00f0260801c5b600160751b83161561336657700100162f3904051fa128bca9c55c31e5df0260801c5b600160741b831615613389577001000b175effdc76ba38e31671ca9397250260801c5b600160731b8316156133ac57700100058ba01fb9f96d6cacd4b180917c3d0260801c5b600160721b8316156133cf5770010002c5cc37da9491d0985c348c68e7b30260801c5b600160711b8316156133f2577001000162e525ee054754457d59952920260260801c5b600160701b8316156134155770010000b17255775c040618bf4a4ade83fc0260801c5b6001606f1b831615613438577001000058b91b5bc9ae2eed81e9b7d4cfab0260801c5b6001606e1b83161561345b57700100002c5c89d5ec6ca4d7c8acc017b7c90260801c5b6001606d1b83161561347e5770010000162e43f4f831060e02d839a9d16d0260801c5b6001606c1b8316156134a157700100000b1721bcfc99d9f890ea069117630260801c5b6001606b1b8316156134c45770010000058b90cf1e6d97f9ca14dbcc16280260801c5b6001606a1b8316156134e7577001000002c5c863b73f016468f6bac5ca2b0260801c5b600160691b83161561350a57700100000162e430e5a18f6119e3c02282a50260801c5b600160681b83161561352d577001000000b1721835514b86e6d96efd1bfe0260801c5b600160671b83161561355057700100000058b90c0b48c6be5df846c5b2ef0260801c5b600160661b8316156135735770010000002c5c8601cc6b9e94213c72737a0260801c5b600160651b831615613596577001000000162e42fff037df38aa2b219f060260801c5b600160641b8316156135b95770010000000b17217fba9c739aa5819f44f90260801c5b600160631b8316156135dc577001000000058b90bfcdee5acd3c1cedc8230260801c5b600160621b8316156135ff57700100000002c5c85fe31f35a6a30da1be500260801c5b600160611b8316156136225770010000000162e42ff0999ce3541b9fffcf0260801c5b600160601b83161561364557700100000000b17217f80f4ef5aadda455540260801c5b6001605f1b8316156136685770010000000058b90bfbf8479bd5a81b51ad0260801c5b6001605e1b83161561368b577001000000002c5c85fdf84bd62ae30a74cc0260801c5b6001605d1b8316156136ae57700100000000162e42fefb2fed257559bdaa0260801c5b6001605c1b8316156136d1577001000000000b17217f7d5a7716bba4a9ae0260801c5b6001605b1b8316156136f457700100000000058b90bfbe9ddbac5e109cce0260801c5b6001605a1b8316156137175770010000000002c5c85fdf4b15de6f17eb0d0260801c5b600160591b83161561373a577001000000000162e42fefa494f1478fde050260801c5b600160581b83161561375d5770010000000000b17217f7d20cf927c8e94c0260801c5b600160571b831615613780577001000000000058b90bfbe8f71cb4e4b33d0260801c5b600160561b8316156137a357700100000000002c5c85fdf477b662b269450260801c5b600160551b8316156137c65770010000000000162e42fefa3ae53369388c0260801c5b600160541b8316156137e957700100000000000b17217f7d1d351a389d400260801c5b600160531b83161561380c5770010000000000058b90bfbe8e8b2d3d4ede0260801c5b600160521b83161561382f577001000000000002c5c85fdf4741bea6e77e0260801c5b600160511b83161561385257700100000000000162e42fefa39fe95583c20260801c5b600160501b831615613875577001000000000000b17217f7d1cfb72b45e10260801c5b698000000000000000000083161561389e57700100000000000058b90bfbe8e7cc35c3f00260801c5b69400000000000000000008316156138c75770010000000000002c5c85fdf473e242ea380260801c5b69200000000000000000008316156138f0577001000000000000162e42fefa39f02b772c0260801c5b69100000000000000000008316156139195770010000000000000b17217f7d1cf7d83c1a0260801c5b6908000000000000000000831615613942577001000000000000058b90bfbe8e7bdcbe2e0260801c5b690400000000000000000083161561396b57700100000000000002c5c85fdf473dea871f0260801c5b69020000000000000000008316156139945770010000000000000162e42fefa39ef44d910260801c5b69010000000000000000008316156139bd57700100000000000000b17217f7d1cf79e9490260801c5b688000000000000000008316156139e55770010000000000000058b90bfbe8e7bce5440260801c5b68400000000000000000831615613a0d577001000000000000002c5c85fdf473de6eca0260801c5b68200000000000000000831615613a3557700100000000000000162e42fefa39ef366f0260801c5b68100000000000000000831615613a5d577001000000000000000b17217f7d1cf79afa0260801c5b68080000000000000000831615613a8557700100000000000000058b90bfbe8e7bcd6d0260801c5b68040000000000000000831615613aad5770010000000000000002c5c85fdf473de6b20260801c5b68020000000000000000831615613ad5577001000000000000000162e42fefa39ef3580260801c5b600160401b831615613af85770010000000000000000b17217f7d1cf79ab0260801c5b678000000000000000831615613b1f577001000000000000000058b90bfbe8e7bcd50260801c5b674000000000000000831615613b4657700100000000000000002c5c85fdf473de6a0260801c5b672000000000000000831615613b6d5770010000000000000000162e42fefa39ef340260801c5b671000000000000000831615613b9457700100000000000000000b17217f7d1cf7990260801c5b670800000000000000831615613bbb5770010000000000000000058b90bfbe8e7bcc0260801c5b670400000000000000831615613be2577001000000000000000002c5c85fdf473de50260801c5b670200000000000000831615613c0957700100000000000000000162e42fefa39ef20260801c5b670100000000000000831615613c30577001000000000000000000b17217f7d1cf780260801c5b6680000000000000831615613c5657700100000000000000000058b90bfbe8e7bb0260801c5b6640000000000000831615613c7c5770010000000000000000002c5c85fdf473dd0260801c5b6620000000000000831615613ca2577001000000000000000000162e42fefa39ee0260801c5b6610000000000000831615613cc85770010000000000000000000b17217f7d1cf60260801c5b6608000000000000831615613cee577001000000000000000000058b90bfbe8e7a0260801c5b6604000000000000831615613d1457700100000000000000000002c5c85fdf473c0260801c5b6602000000000000831615613d3a5770010000000000000000000162e42fefa39d0260801c5b6601000000000000831615613d6057700100000000000000000000b17217f7d1ce0260801c5b65800000000000831615613d855770010000000000000000000058b90bfbe8e60260801c5b65400000000000831615613daa577001000000000000000000002c5c85fdf4720260801c5b65200000000000831615613dcf57700100000000000000000000162e42fefa380260801c5b65100000000000831615613df4577001000000000000000000000b17217f7d1b0260801c5b65080000000000831615613e1957700100000000000000000000058b90bfbe8d0260801c5b65040000000000831615613e3e5770010000000000000000000002c5c85fdf460260801c5b65020000000000831615613e63577001000000000000000000000162e42fefa20260801c5b65010000000000831615613e885770010000000000000000000000b17217f7d00260801c5b648000000000831615613eac577001000000000000000000000058b90bfbe70260801c5b644000000000831615613ed057700100000000000000000000002c5c85fdf30260801c5b642000000000831615613ef45770010000000000000000000000162e42fef90260801c5b641000000000831615613f1857700100000000000000000000000b17217f7c0260801c5b640800000000831615613f3c5770010000000000000000000000058b90bfbd0260801c5b640400000000831615613f60577001000000000000000000000002c5c85fde0260801c5b640200000000831615613f8457700100000000000000000000000162e42fee0260801c5b640100000000831615613fa8577001000000000000000000000000b17217f60260801c5b6380000000831615613fcb57700100000000000000000000000058b90bfa0260801c5b6340000000831615613fee5770010000000000000000000000002c5c85fc0260801c5b6320000000831615614011577001000000000000000000000000162e42fd0260801c5b63100000008316156140345770010000000000000000000000000b17217e0260801c5b6308000000831615614057577001000000000000000000000000058b90be0260801c5b630400000083161561407a57700100000000000000000000000002c5c85e0260801c5b630200000083161561409d5770010000000000000000000000000162e42e0260801c5b63010000008316156140c057700100000000000000000000000000b172160260801c5b628000008316156140e25770010000000000000000000000000058b90a0260801c5b62400000831615614104577001000000000000000000000000002c5c840260801c5b6220000083161561412657700100000000000000000000000000162e410260801c5b62100000831615614148577001000000000000000000000000000b17200260801c5b6208000083161561416a57700100000000000000000000000000058b8f0260801c5b6204000083161561418c5770010000000000000000000000000002c5c70260801c5b620200008316156141ae577001000000000000000000000000000162e30260801c5b620100008316156141d05770010000000000000000000000000000b1710260801c5b6180008316156141f1577001000000000000000000000000000058b80260801c5b61400083161561421257700100000000000000000000000000002c5b0260801c5b6120008316156142335770010000000000000000000000000000162d0260801c5b61100083161561425457700100000000000000000000000000000b160260801c5b6108008316156142755770010000000000000000000000000000058a0260801c5b610400831615614296577001000000000000000000000000000002c40260801c5b6102008316156142b7577001000000000000000000000000000001610260801c5b6101008316156142d8577001000000000000000000000000000000b00260801c5b60808316156142f8577001000000000000000000000000000000570260801c5b60408316156143185770010000000000000000000000000000002b0260801c5b6020831615614338577001000000000000000000000000000000150260801c5b60108316156143585770010000000000000000000000000000000a0260801c5b6008831615614378577001000000000000000000000000000000040260801c5b6004831615614398577001000000000000000000000000000000010260801c5b846143b957600f81901c6001600160701b03169050613fff820191506143e8565b613ffe82116143de57600f81901c6001600160701b0316905081613fff0391506143e8565b600091613fee19011c5b60709190911b1760801b95945050505050565b828054828255906000526020600020908101928215614436579160200282015b8281111561443657823582559160200191906001019061441b565b50614442929150614446565b5090565b5b808211156144425760008155600101614447565b8035612a2581614fce565b60008083601f84011261447857600080fd5b50813567ffffffffffffffff81111561449057600080fd5b6020830191508360208260051b8501011115610d5757600080fd5b8035612a2581614fe6565b600061016082840312156144c957600080fd5b6144d1614d84565b90506144dc8261445b565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015261451c60c083016144ab565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b60006020828403121561456757600080fd5b8135611e1281614fce565b60006020828403121561458457600080fd5b8151611e1281614fce565b600080604083850312156145a257600080fd5b82356145ad81614fce565b915060208301356145bd81614fce565b809150509250929050565b6000806000606084860312156145dd57600080fd5b83356145e881614fce565b95602085013595506040909401359392505050565b6000806000806080858703121561461357600080fd5b843561461e81614fce565b93506020850135925060408501359150606085013561463c81614fe6565b939692955090935050565b60008060008060008060c0878903121561466057600080fd5b863561466b81614fce565b95506020870135945060408701359350606087013561468981614fe6565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156146be57600080fd5b87356146c981614fce565b965060208801359550604088013594506060880135935060808801356146ee81614fe6565b9699959850939692959460a0840135945060c09093013592915050565b60006040828403121561471d57600080fd5b82601f83011261472c57600080fd5b6040516040810181811067ffffffffffffffff8211171561474f5761474f614fb8565b806040525080838560408601111561476657600080fd5b60005b6002811015614788578151835260209283019290910190600101614769565b509195945050505050565b600080602083850312156147a657600080fd5b823567ffffffffffffffff8111156147bd57600080fd5b6147c985828601614466565b90969095509350505050565b600080600080604085870312156147eb57600080fd5b843567ffffffffffffffff8082111561480357600080fd5b61480f88838901614466565b9096509450602087013591508082111561482857600080fd5b818701915087601f83011261483c57600080fd5b81358181111561484b57600080fd5b88602060608302850101111561486057600080fd5b95989497505060200194505050565b6000806000806000806060878903121561488857600080fd5b863567ffffffffffffffff808211156148a057600080fd5b6148ac8a838b01614466565b909850965060208901359150808211156148c557600080fd5b6148d18a838b01614466565b909650945060408901359150808211156148ea57600080fd5b506148f789828a01614466565b979a9699509497509295939492505050565b60006020828403121561491b57600080fd5b8151611e1281614fe6565b60006020828403121561493857600080fd5b5051919050565b6000610160828403121561495257600080fd5b6128ce83836144b6565b60008060008060006101e0868803121561497557600080fd5b61497f87876144b6565b976101608701359750610180870135966101a081013596506101c00135945092505050565b6000602082840312156149b657600080fd5b5035919050565b6000806000806000606086880312156149d557600080fd5b85359450602086013567ffffffffffffffff808211156149f457600080fd5b614a0089838a01614466565b90965094506040880135915080821115614a1957600080fd5b50614a2688828901614466565b969995985093965092949392505050565b600080600060608486031215614a4c57600080fd5b833592506020840135614a5e81614fe6565b929592945050506040919091013590565b60008060008060808587031215614a8557600080fd5b843593506020850135614a9781614fe6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614ac457600080fd5b853594506020860135614ad681614fe6565b94979496505050506040830135926060810135926080909101359150565b600080600080600060a08688031215614b0c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000808284036080811215614b4357600080fd5b833592506060601f1982011215614b5957600080fd5b506020830190509250929050565b60008060408385031215614b7a57600080fd5b50508035926020909101359150565b60008060008060808587031215614b9f57600080fd5b84359350602085013592506040850135614bb881614fe6565b9396929550929360600135925050565b600080600060608486031215614bdd57600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215614c0a57600080fd5b5050823594602084013594506040840135936060013592509050565b81835260006001600160fb1b03831115614c3f57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408082528351908201819052600090606090818401906020808801855b83811015614cb157614ca18583518051825260208082015190830152604090810151910152565b9385019390820190600101614c7a565b5050858303818701528651808452878201938201925060005b81811015614d0157614cf18486518051825260208082015190830152604090810151910152565b9382019392850192600101614cca565b509198975050505050505050565b6020808252600c908201526b4d414e414745525f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b858152606060208201526000614d71606083018688614c26565b828103604084015261138d818587614c26565b604051610160810167ffffffffffffffff81118282101715614da857614da8614fb8565b60405290565b600080821280156001600160ff1b0384900385131615614dd057614dd0614f76565b600160ff1b8390038412811615614de957614de9614f76565b50500190565b60008219821115614e0257614e02614f76565b500190565b600082614e1657614e16614f8c565b600160ff1b821460001984141615614e3057614e30614f76565b500590565b600082614e4457614e44614f8c565b500490565b60006001600160ff1b0381841382841380821686840486111615614e6f57614e6f614f76565b600160ff1b6000871282811687830589121615614e8e57614e8e614f76565b60008712925087820587128484161615614eaa57614eaa614f76565b87850587128184161615614ec057614ec0614f76565b505050929093029392505050565b6000816000190483118215151615614ee857614ee8614f76565b500290565b60008083128015600160ff1b850184121615614f0b57614f0b614f76565b6001600160ff1b0384018313811615614f2657614f26614f76565b50500390565b600082821015614f3e57614f3e614f76565b500390565b6000600160ff1b821415614f5957614f59614f76565b5060000390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114614fe357600080fd5b50565b8015158114614fe357600080fdfea26469706673582212207f565e1f2227e95475736106d6de7020790f76a538a7d0a525641aa58b5d694f64736f6c63430008070033","sourceMap":"428:25907:103:-:0;;;1593:53;;;;;;;;;-1:-1:-1;1617:22:103;:20;:22::i;:::-;428:25907;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:150;5998:66:24;;;198:21:150;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:150;;;338:37;5998:66:24;;;;;;392:19:150;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:150;;;6174:28:24;;;;;;552:2:150;6174:28:24;;;6074:139;5939:280::o;422:184:150:-;428:25907:103;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102695760003560e01c806375923b9d11610151578063bf1db1f6116100c3578063d0ebdbe711610087578063d0ebdbe714610670578063eb95e10c14610683578063f696065414610696578063fcfe7378146106a9578063fdd3265f146106bc578063fe3cfd8c146106cf57600080fd5b8063bf1db1f6146105e8578063c21fbef814610617578063c9533ebc1461062a578063cf2befd21461063d578063cfc23e9e1461065057600080fd5b8063867a60c211610115578063867a60c21461056b578063890801de1461057e578063ab21a05c14610591578063aced1661146105b9578063ae2293d7146105cc578063b74243ba146105d557600080fd5b806375923b9d146104ff5780637d36dda8146105125780637d827137146105255780637ea95f321461054557806382d317b21461055857600080fd5b8063351533e7116101ea5780635ed5804e116101ae5780635ed5804e146104405780636676d850146104905780636a3ca5fd146104a35780636bc84d59146104b6578063726219f3146104c9578063748747e6146104ec57600080fd5b8063351533e7146103c557806335b03c17146103d857806342dee1ad146103eb578063481c6a751461041a578063485cc9551461042d57600080fd5b806316fff0741161023157806316fff0741461031b578063183566d41461034c5780631f4934a11461035f5780632b180a7d1461037f578063338139ad146103a257600080fd5b8063050982721461026e5780630b224e87146102945780630e0052fc146102c25780630e6bc39a146102e55780630ea77770146102fa575b600080fd5b61028161027c366004614647565b610710565b6040519081526020015b60405180910390f35b6102a76102a236600461495c565b6107a1565b6040805193845260208401929092529082015260600161028b565b6102816102d03660046149a4565b60009081526006602052604090206002015490565b6102f86102f33660046145fd565b6109e1565b005b61030d610308366004614793565b610b84565b60405161028b929190614c5c565b600054610334906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161028b565b61028161035a366004614b67565b610d5e565b61028161036d3660046149a4565b60086020526000908152604090205481565b61028161038d3660046149a4565b60009081526005602052604090206001015490565b6102816103b03660046149a4565b60009081526005602052604090206002015490565b6102f86103d336600461486f565b610d8f565b600154610334906001600160a01b031681565b6102a76103f93660046149a4565b60056020526000908152604090208054600182015460029092015490919083565b600254610334906001600160a01b031681565b6102f861043b36600461458f565b610e71565b61047b61044e3660046145c8565b60076020908152600093845260408085208252928452828420905282529020805460019091015460ff1682565b6040805192835290151560208301520161028b565b61028161049e366004614a6f565b610fc2565b6102816104b1366004614b67565b61135a565b6102816104c43660046146a3565b611376565b6102816104d73660046149a4565b60009081526006602052604090206001015490565b6102f86104fa366004614555565b611399565b6102a761050d366004614af4565b6114e6565b610281610520366004614aac565b6115ba565b6102816105333660046149a4565b60009081526006602052604090205490565b610281610553366004614b89565b61163e565b61028161056636600461493f565b61178f565b6102f86105793660046147d5565b611a33565b61028161058c366004614a37565b611aee565b6105a461059f3660046149a4565b611e19565b6040805192835260208301919091520161028b565b600354610334906001600160a01b031681565b61028160045481565b6102f86105e3366004614b67565b612118565b6102a76105f63660046149a4565b60066020526000908152604090208054600182015460029092015490919083565b6102f86106253660046149a4565b6121dd565b610281610638366004614bc8565b6122c8565b6102f861064b3660046149bd565b612441565b61028161065e3660046149a4565b60009081526005602052604090205490565b6102f861067e366004614555565b6124fe565b6102f8610691366004614b2f565b612644565b6102f86106a4366004614bc8565b61267c565b6102816106b7366004614a37565b6126cf565b6102816106ca366004614bf4565b6127b6565b6102816106dd3660046145c8565b6001600160a01b038316600090815260076020908152604080832085845282528083208484529091529020549392505050565b6001600160a01b0386166000908152600760209081526040808320888452825280832087845282528083208151808301909252805482526001015460ff16151591810182905290610765576000915050610797565b60008061077189611e19565b91509150610791836000015188610788578261078a565b835b88886127b6565b93505050505b9695505050505050565b60008060008060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f257600080fd5b505afa158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a9190614572565b6001600160a01b0316336001600160a01b0316146108805760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064015b60405180910390fd5b61088d88602001516127ef565b60006108b189600001518a602001518b604001518c60c001518c8e60e00151610710565b60015460208b0151604051632b1cbe9d60e01b81529293506000926001600160a01b0390921691632b1cbe9d916108f5918a90600401918252602082015260400190565b60206040518083038186803b15801561090d57600080fd5b505afa158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190614926565b90506109548989848a856114e6565b60c08d015160e08e01516040519499509297509095507fb70bf101b761b8a0fe59428f8a894321d6639ef13ab81b9bf16d19764a7dba66926109cc928d918d9088908e9089909615158752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60405180910390a15050955095509592505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a669190614572565b6001600160a01b0316336001600160a01b031614610ab75760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610877565b610ac0836127ef565b6001600160a01b03841660009081526007602090815260408083208684528252808320858452909152902081610b0757600084815260066020526040902060010154610b17565b6000848152600660205260409020545b8082556001808301805460ff19169091179055604080516001600160a01b03881681526020810187905290810185905260608101919091527f835af8708eb91d2079c09e00124475ffca3f81cbef1e074867d53e5c9ec0ed98906080015b60405180910390a15050505050565b60608060008367ffffffffffffffff811115610ba257610ba2614fb8565b604051908082528060200260200182016040528015610bf757816020015b610be460405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610bc05790505b50905060008467ffffffffffffffff811115610c1557610c15614fb8565b604051908082528060200260200182016040528015610c6a57816020015b610c5760405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610c335790505b50905060005b85811015610d50576000878783818110610c8c57610c8c614fa2565b905060200201359050600560008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848381518110610ce357610ce3614fa2565b6020026020010181905250600660008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050838381518110610d3c57610d3c614fa2565b602090810291909101015250600101610c70565b5090925090505b9250929050565b600a6020528160005260406000208181548110610d7a57600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610db95760405162461bcd60e51b815260040161087790614d0f565b8483148015610dc757508481145b610e025760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610877565b60005b85811015610e6857610e60878783818110610e2257610e22614fa2565b90506020020135868684818110610e3b57610e3b614fa2565b90506020020135858585818110610e5457610e54614fa2565b90506020020135612852565b600101610e05565b50505050505050565b600054610100900460ff1615808015610e915750600054600160ff909116105b80610eab5750303b158015610eab575060005460ff166001145b610f0e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610877565b6000805460ff191660011790558015610f31576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560556004558015610fbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610fce8284614def565b610fda57506000611352565b600154604051633c44d0a360e01b8152600481018790526001600160a01b0390911690633c44d0a39060240160206040518083038186803b15801561101e57600080fd5b505afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110569190614926565b600214156112ff5760008060029054906101000a90046001600160a01b03166001600160a01b0316638ecf3f5a6040518163ffffffff1660e01b8152600401604080518083038186803b1580156110ac57600080fd5b505afa1580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e4919061470b565b90506000856110f45760016110f7565b60005b600154604051636dc37de360e01b8152600481018a905260ff92909216925060009184916001600160a01b031690636dc37de39060240160206040518083038186803b15801561114657600080fd5b505afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190614909565b6111925761118d836001614f2c565b611194565b825b600281106111a4576111a4614fa2565b6020020151600154604051636dc37de360e01b8152600481018b905291925060009185916001600160a01b031690636dc37de39060240160206040518083038186803b1580156111f357600080fd5b505afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190614909565b6112355783611240565b611240846001614f2c565b6002811061125057611250614fa2565b6020020151905060006112638383614def565b61126e846064614ece565b6112789190614e35565b90506000896112a55761128b888a614def565b611296896064614ece565b6112a09190614e35565b6112c4565b6112af888a614def565b6112ba8a6064614ece565b6112c49190614e35565b905060646112d3826019614ece565b6112de84604b614ece565b6112e89190614def565b6112f29190614e35565b9650505050505050611352565b60008461132a576113108385614def565b61131b846064614ece565b6113259190614e35565b611349565b6113348385614def565b61133f856064614ece565b6113499190614e35565b91506113529050565b949350505050565b60096020528160005260406000208181548110610d7a57600080fd5b600061138d858585856105208d8d8d8c8c8c610710565b98975050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190614572565b6001600160a01b0316336001600160a01b03161461144f5760405162461bcd60e51b815260040161087790614d35565b6001600160a01b0381166114915760405162461bcd60e51b81526020600482015260096024820152682d22a927afa0a2222960b91b6044820152606401610877565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e906020015b60405180910390a150565b600080808060646402540be4006114fd8a8c614e49565b6115079190614e07565b6115119190614e07565b905060008112156115355760646115288683614e49565b6115329190614e07565b90505b60006115418789614dae565b9050600081611550848d614dae565b61155a9190614eed565b90506064600454606461156d9190614f2c565b611577908d614e49565b6115819190614e07565b8113611597575060006115948b83614eed565b92505b600081136115a65760006115a8565b805b9b929a50909850909650505050505050565b6000806115c785856128b2565b836064600454886115d89190614ece565b6115e29190614e35565b6115ec9190614eed565b6115f69089614e49565b6116009190614e07565b9050600086611618576116138289614dae565b611622565b6116228289614eed565b90506000811361163357600061138d565b979650505050505050565b60008061164c8585856126cf565b9050600061165b868686611aee565b60015460405163a1d54e9b60e01b815260048101899052919250600091839185916001600160a01b039091169063a1d54e9b9060240160206040518083038186803b1580156116a957600080fd5b505afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190614926565b6116eb9190614dae565b6116f59190614dae565b9050611707600a6402540be400614e35565b61171090614f43565b811261171c5780611735565b61172c600a6402540be400614e35565b61173590614f43565b9050600060646402540be40061174b8b85614e49565b6117559190614e07565b61175f9190614e07565b905060008761177757611772828b614eed565b611781565b611781828b614dae565b9a9950505050505050505050565b600080546020830151604051639cb87f2360e01b815260048101919091526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b1580156117e757600080fd5b505afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f9190614926565b600080546020860151604051639cb87f2360e01b81526004810191909152600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561187b57600080fd5b505afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190614926565b905060006118d28560e0015186606001516128b290919063ffffffff16565b90508460c0015115611985576118e88184614def565b925060006118f68385614def565b611901846064614ece565b61190b9190614e35565b6020808801516000908152600a90915260409020549091505b801561197e576020808801516000908152600a90915260409020611949600183614f2c565b8154811061195957611959614fa2565b9060005260206000200154821061197557611633600182614f2c565b60001901611924565b5050611a28565b61198f8183614def565b9150600061199d8385614def565b6119a8856064614ece565b6119b29190614e35565b6020808801516000908152600990915260409020549091505b8015611a255760208088015160009081526009909152604090206119f0600183614f2c565b81548110611a0057611a00614fa2565b90600052602060002001548210611a1c57611633600182614f2c565b600019016119cb565b50505b506000949350505050565b6002546001600160a01b03163314611a5d5760405162461bcd60e51b815260040161087790614d0f565b828114611a9b5760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610877565b60005b83811015611ae757611adf858583818110611abb57611abb614fa2565b90506020020135848484818110611ad457611ad4614fa2565b9050606002016128d7565b600101611a9e565b5050505050565b600154604051633a2d43e160e21b8152600481018590526000916402540be4009183916001600160a01b03169063e8b50f849060240160206040518083038186803b158015611b3c57600080fd5b505afa158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b749190614926565b60008054604051639cb87f2360e01b8152600481018a9052602481018390529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611bca57600080fd5b505afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c029190614926565b60008054604051639cb87f2360e01b8152600481018b9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611c5857600080fd5b505afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190614926565b905081611ca4576000945050505050611e12565b600087611cd057611cb58284614def565b611cc183612710614ece565b611ccb9190614e35565b611cf0565b611cda8284614def565b611ce684612710614ece565b611cf09190614e35565b9050600088611d335787611d048486614def565b611d0e9190614def565b611d188985614def565b611d2490612710614ece565b611d2e9190614e35565b611d68565b87611d3e8486614def565b611d489190614def565b611d528986614def565b611d5e90612710614ece565b611d689190614e35565b90506000611d89611d7b84612710614f2c565b6127106402540be40061295f565b611d98611d7b84612710614f2c565b611daa856127106402540be40061295f565b611dbc856127106402540be40061295f565b611dc69190614eed565b611dd09190614dae565b611dda9190614eed565b905086611de78288614e49565b611df19190614e07565b975086611dfe8288614e49565b611e089190614e07565b9750505050505050505b9392505050565b6000818152600660205260408082208054600182015484549351639cb87f2360e01b8152600481018790526024810186905291949093909182916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b158015611e8457600080fd5b505afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190614926565b60008054604051639cb87f2360e01b8152600481018a9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611f1257600080fd5b505afa158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614926565b9050811561203457611f5d8783836122c8565b92506000611f6e8860018585610fc2565b90506000611f7c8286614ece565b611f8c6402540be4006064614ece565b611f969190614f2c565b611fa08387614ece565b611faf906402540be400614ece565b611fb99190614e35565b905060006402540be40080600560008d815260200190815260200160002060020154896002015443611feb9190614f2c565b611ffa6402540be40087614ece565b6120049190614ece565b61200e9190614ece565b6120189190614e35565b6120229190614e35565b905061202e818a614def565b98505050505b801561210f5760006120498860008585610fc2565b905060006120578286614ece565b6120676402540be4006064614ece565b6120719190614f2c565b61207b8387614ece565b61208a906402540be400614ece565b6120949190614e35565b905060006402540be40080600560008d8152602001908152602001600020600201548960020154436120c69190614f2c565b6120d56402540be40087614ece565b6120df9190614ece565b6120e99190614ece565b6120f39190614e35565b6120fd9190614e35565b90506121098189614def565b97505050505b50505050915091565b6002546001600160a01b031633146121425760405162461bcd60e51b815260040161087790614d0f565b63017d78408111156121815760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe90928e960c31b6044820152606401610877565b61218a826127ef565b60008281526005602090815260409182902060020183905581518481529081018390527f048ce436ab4f2632f2aac62af26be3383ebdf5efc9a63f0bbeb6d6c9762d708991015b60405180910390a15050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122639190614572565b6001600160a01b0316336001600160a01b0316146122935760405162461bcd60e51b815260040161087790614d35565b60048190556040518181527fb7e4406c7dbd1b93965e7b215a33b02672c462728044a364e16b2b47d321aee0906020016114db565b60015460405163232683a960e21b81526004810185905260009182916001600160a01b0390911690638c9a0ea49060240160206040518083038186803b15801561231157600080fd5b505afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190614926565b6402540be4006123598587614def565b6123639190614ece565b61236d9190614e35565b600154604051635970d96b60e11b8152600481018890529192506000916001600160a01b039091169063b2e1b2d69060240160206040518083038186803b1580156123b757600080fd5b505afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef9190614926565b6402540be4006123ff8688614def565b6124099190614ece565b6124139190614e35565b90506064612422826019614ece565b61242d84604b614ece565b6124379190614def565b6107979190614e35565b6002546001600160a01b0316331461246b5760405162461bcd60e51b815260040161087790614d0f565b82811461247757600080fd5b60008581526008602090815260408083208690556009909152902061249d9085856143fb565b506000858152600a602052604090206124b79083836143fb565b50600085815260086020526040908190205490517f7441144ceb286becc54eb23d4ba7d881ec8f99733a2ef397bcefc8a89bb5bd7891610b75918790879087908790614d57565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561254c57600080fd5b505afa158015612560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125849190614572565b6001600160a01b0316336001600160a01b0316146125b45760405162461bcd60e51b815260040161087790614d35565b6001600160a01b0381166125f65760405162461bcd60e51b81526020600482015260096024820152682d22a927afa0a2222960b91b6044820152606401610877565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d906020016114db565b6002546001600160a01b0316331461266e5760405162461bcd60e51b815260040161087790614d0f565b61267882826128d7565b5050565b6003546001600160a01b031633146126c45760405162461bcd60e51b815260206004820152600b60248201526a4b45455045525f4f4e4c5960a81b6044820152606401610877565b610fbd838383612852565b600154604051630bf919a560e31b81526004810185905260009182916001600160a01b0390911690635fc8cd289060240160206040518083038186803b15801561271857600080fd5b505afa15801561272c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127509190614926565b905060008461277057600086815260056020526040902060010154612780565b6000868152600560205260409020545b90506402540be4006127ac816127968786614ece565b6127a09190614e35565b836402540be40061295f565b6107979190614eed565b60006402540be4006127c884846128b2565b6127d28787614f2c565b6127dc9190614ece565b6127e69190614e35565b95945050505050565b600081815260066020526040902061280682611e19565b600183018190558183554360028401556040805185815260208101939093528201527fda1d5f1f1aab631c047218e2f5f973b6c12729f4181103a91459dda3d1603c38906060016121d1565b6000838152600560209081526040918290208481556001810184905582518681529182018590529181018390527f1daeaff85d4d7cfda495ef83720a04b81df77e38711ca570061e16efa6ffa2759060600160405180910390a150505050565b60006402540be4006128c48385614ece565b6128ce9190614e35565b90505b92915050565b6128e0826127ef565b6000828152600560205260409020819061291182828135815560208201356001820155604082013560028201555050565b5050604080518381528235602080830191909152830135818301529082013560608201527fa25aa2e7710f36dc1fc81eae36e26c3554faca8ba5af724112efee783e2f75ee906080016121d1565b60008061296b856129c1565b90506000612978856129c1565b905060006129868383612a2a565b9050600061299382612ce2565b905060006129a9826129a4896129c1565b612d09565b90506129b481612f64565b9998505050505050505050565b6000816129d057506000919050565b8160006129dc8261300b565b905060708110156129f5578060700382901b9150612a08565b6070811115612a08576070810382901c91505b613fff0160701b6001600160701b03919091161760801b92915050565b919050565b6000617fff60f084811c8216919084901c811690821415612a705780617fff1415612a5f575061ffff60ef1b91506128d19050565b505050600160ff1b811682186128d1565b80617fff1415612ab4576dffffffffffffffffffffffffffff60801b841615612aa3575061ffff60ef1b91506128d19050565b505050808218600160ff1b166128d1565b600160801b600160ff1b038416612afe57600160801b600160ff1b038516612ae6575061ffff60ef1b91506128d19050565b505050808218600160ff1b16617fff60f01b176128d1565b6001600160701b03608085901c1681612b1a5760019150612b21565b600160701b175b6001600160701b03608087901c1683612b60578015612b5b576000612b458261300b565b6001955060e20393840160711901939190911b90505b612b6a565b600160701b1760721b5b818181612b7957612b79614f8c565b04905080612ba657600160ff1b87871816612b95576000612b9b565b600160ff1b5b9450505050506128d1565b6001606c1b811015612bba57612bba614f60565b6000600160731b821015612bf957600160721b821015612bee57600160711b821015612be7576070612bf1565b6071612bf1565b60725b60ff16612c02565b612c028261300b565b905083614071018186011115612c2057617fff945060009150612cb3565b83818601613ffc011015612c3b576000945060009150612cb3565b83818601613f8c011015612c88578385613ffc011115612c66578385613ffc010382901b9150612c7f565b8385613ffc011015612c7f57613ffc8585030382901c91505b60009450612cb3565b6070811115612c9b576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b955050505050506128d1565b60006128d1612d04836f1fffb8aa3b295c17f0bbbe87fed0691d60811b612d09565b6130a9565b6000617fff60f084811c8216919084901c811690821415612da85780617fff1415612d87576001600160801b03198581169085161415612d5457505050600160ff1b811682186128d1565b600160ff1b6001600160801b0319868618161415612d77575050508181176128d1565b5061ffff60ef1b91506128d19050565b600160801b600160ff1b038416612a5f575061ffff60ef1b91506128d19050565b80617fff1415612de457600160801b600160ff1b038516612dd3575061ffff60ef1b91506128d19050565b505050600160ff1b821681186128d1565b6001600160701b03608086901c1682612e005760019250612e07565b600160701b175b6001600160701b03608086901c1682612e235760019250612e2a565b600160701b175b9081029081612e4757600160ff1b87871816612b95576000612b9b565b928201926000600160e11b831015612e7a57600160e01b831015612e7357612e6e8361300b565b612e7d565b60e0612e7d565b60e15b90506140708186011015612e98576000945060009250612f35565b6140e08186011015612edb57614070851015612ebd57846140700383901c9250612ed2565b614070851115612ed257614070850383901b92505b60009450612f35565b61c0dd8186011115612ef557617fff945060009250612f35565b6070811115612f0c576070810383901c9250612f1f565b6070811015612f1f578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b955050505050506128d1565b6000617fff60f083901c166140fe811115612f7e57600080fd5b613fff811015612f915750600092915050565b600160701b6001600160701b03608085901c161761406f821015612fbb5761406f8290031c612fcd565b61406f821115612fcd5761406e1982011b5b6001607f1b608085901c10612ff757600160ff1b811115612fed57600080fd5b6000039392505050565b6001600160ff1b03811115611e1257600080fd5b600080821161301957600080fd5b6000600160801b831061302e57608092831c92015b600160401b831061304157604092831c92015b640100000000831061305557602092831c92015b62010000831061306757601092831c92015b610100831061307857600892831c92015b6010831061308857600492831c92015b6004831061309857600292831c92015b600283106128d15760010192915050565b60006001607f1b608083901c90811190617fff60f085901c8116916001600160701b031690821480156130db57508015155b156130ef575061ffff60ef1b949350505050565b61400d821115613114578261310957617fff60f01b6127e6565b600095945050505050565b613f7f82101561312d5750613fff60f01b949350505050565b8161313b5760019150613142565b600160701b175b613fef82111561315857613fee1982011b61316a565b613fef82101561316a57613fef8290031c5b82801561317b575061203760811b81115b1561318b57506000949350505050565b821580156131aa5750713fffffffffffffffffffffffffffffffffff81115b156131be5750617fff60f01b949350505050565b6001600160801b0381169060801c8380156131d857508115155b156131e4579019906001015b6001607f1b828116156132085770016a09e667f3bcc908b2fb1366ea957d3e0260801c5b6001607e1b83161561322b577001306fe0a31b7152de8d5a46305c85edec0260801c5b6001607d1b83161561324e577001172b83c7d517adcdf7c8c50eb14a791f0260801c5b6001607c1b8316156132715770010b5586cf9890f6298b92b71842a983630260801c5b6001607b1b831615613294577001059b0d31585743ae7c548eb68ca417fd0260801c5b6001607a1b8316156132b757700102c9a3e778060ee6f7caca4f7a29bde80260801c5b600160791b8316156132da5770010163da9fb33356d84a66ae336dcdfa3f0260801c5b600160781b8316156132fd57700100b1afa5abcbed6129ab13ec11dc95430260801c5b600160771b8316156133205770010058c86da1c09ea1ff19d294cf2f679b0260801c5b600160761b831615613343577001002c605e2e8cec506d21bfc89a23a00f0260801c5b600160751b83161561336657700100162f3904051fa128bca9c55c31e5df0260801c5b600160741b831615613389577001000b175effdc76ba38e31671ca9397250260801c5b600160731b8316156133ac57700100058ba01fb9f96d6cacd4b180917c3d0260801c5b600160721b8316156133cf5770010002c5cc37da9491d0985c348c68e7b30260801c5b600160711b8316156133f2577001000162e525ee054754457d59952920260260801c5b600160701b8316156134155770010000b17255775c040618bf4a4ade83fc0260801c5b6001606f1b831615613438577001000058b91b5bc9ae2eed81e9b7d4cfab0260801c5b6001606e1b83161561345b57700100002c5c89d5ec6ca4d7c8acc017b7c90260801c5b6001606d1b83161561347e5770010000162e43f4f831060e02d839a9d16d0260801c5b6001606c1b8316156134a157700100000b1721bcfc99d9f890ea069117630260801c5b6001606b1b8316156134c45770010000058b90cf1e6d97f9ca14dbcc16280260801c5b6001606a1b8316156134e7577001000002c5c863b73f016468f6bac5ca2b0260801c5b600160691b83161561350a57700100000162e430e5a18f6119e3c02282a50260801c5b600160681b83161561352d577001000000b1721835514b86e6d96efd1bfe0260801c5b600160671b83161561355057700100000058b90c0b48c6be5df846c5b2ef0260801c5b600160661b8316156135735770010000002c5c8601cc6b9e94213c72737a0260801c5b600160651b831615613596577001000000162e42fff037df38aa2b219f060260801c5b600160641b8316156135b95770010000000b17217fba9c739aa5819f44f90260801c5b600160631b8316156135dc577001000000058b90bfcdee5acd3c1cedc8230260801c5b600160621b8316156135ff57700100000002c5c85fe31f35a6a30da1be500260801c5b600160611b8316156136225770010000000162e42ff0999ce3541b9fffcf0260801c5b600160601b83161561364557700100000000b17217f80f4ef5aadda455540260801c5b6001605f1b8316156136685770010000000058b90bfbf8479bd5a81b51ad0260801c5b6001605e1b83161561368b577001000000002c5c85fdf84bd62ae30a74cc0260801c5b6001605d1b8316156136ae57700100000000162e42fefb2fed257559bdaa0260801c5b6001605c1b8316156136d1577001000000000b17217f7d5a7716bba4a9ae0260801c5b6001605b1b8316156136f457700100000000058b90bfbe9ddbac5e109cce0260801c5b6001605a1b8316156137175770010000000002c5c85fdf4b15de6f17eb0d0260801c5b600160591b83161561373a577001000000000162e42fefa494f1478fde050260801c5b600160581b83161561375d5770010000000000b17217f7d20cf927c8e94c0260801c5b600160571b831615613780577001000000000058b90bfbe8f71cb4e4b33d0260801c5b600160561b8316156137a357700100000000002c5c85fdf477b662b269450260801c5b600160551b8316156137c65770010000000000162e42fefa3ae53369388c0260801c5b600160541b8316156137e957700100000000000b17217f7d1d351a389d400260801c5b600160531b83161561380c5770010000000000058b90bfbe8e8b2d3d4ede0260801c5b600160521b83161561382f577001000000000002c5c85fdf4741bea6e77e0260801c5b600160511b83161561385257700100000000000162e42fefa39fe95583c20260801c5b600160501b831615613875577001000000000000b17217f7d1cfb72b45e10260801c5b698000000000000000000083161561389e57700100000000000058b90bfbe8e7cc35c3f00260801c5b69400000000000000000008316156138c75770010000000000002c5c85fdf473e242ea380260801c5b69200000000000000000008316156138f0577001000000000000162e42fefa39f02b772c0260801c5b69100000000000000000008316156139195770010000000000000b17217f7d1cf7d83c1a0260801c5b6908000000000000000000831615613942577001000000000000058b90bfbe8e7bdcbe2e0260801c5b690400000000000000000083161561396b57700100000000000002c5c85fdf473dea871f0260801c5b69020000000000000000008316156139945770010000000000000162e42fefa39ef44d910260801c5b69010000000000000000008316156139bd57700100000000000000b17217f7d1cf79e9490260801c5b688000000000000000008316156139e55770010000000000000058b90bfbe8e7bce5440260801c5b68400000000000000000831615613a0d577001000000000000002c5c85fdf473de6eca0260801c5b68200000000000000000831615613a3557700100000000000000162e42fefa39ef366f0260801c5b68100000000000000000831615613a5d577001000000000000000b17217f7d1cf79afa0260801c5b68080000000000000000831615613a8557700100000000000000058b90bfbe8e7bcd6d0260801c5b68040000000000000000831615613aad5770010000000000000002c5c85fdf473de6b20260801c5b68020000000000000000831615613ad5577001000000000000000162e42fefa39ef3580260801c5b600160401b831615613af85770010000000000000000b17217f7d1cf79ab0260801c5b678000000000000000831615613b1f577001000000000000000058b90bfbe8e7bcd50260801c5b674000000000000000831615613b4657700100000000000000002c5c85fdf473de6a0260801c5b672000000000000000831615613b6d5770010000000000000000162e42fefa39ef340260801c5b671000000000000000831615613b9457700100000000000000000b17217f7d1cf7990260801c5b670800000000000000831615613bbb5770010000000000000000058b90bfbe8e7bcc0260801c5b670400000000000000831615613be2577001000000000000000002c5c85fdf473de50260801c5b670200000000000000831615613c0957700100000000000000000162e42fefa39ef20260801c5b670100000000000000831615613c30577001000000000000000000b17217f7d1cf780260801c5b6680000000000000831615613c5657700100000000000000000058b90bfbe8e7bb0260801c5b6640000000000000831615613c7c5770010000000000000000002c5c85fdf473dd0260801c5b6620000000000000831615613ca2577001000000000000000000162e42fefa39ee0260801c5b6610000000000000831615613cc85770010000000000000000000b17217f7d1cf60260801c5b6608000000000000831615613cee577001000000000000000000058b90bfbe8e7a0260801c5b6604000000000000831615613d1457700100000000000000000002c5c85fdf473c0260801c5b6602000000000000831615613d3a5770010000000000000000000162e42fefa39d0260801c5b6601000000000000831615613d6057700100000000000000000000b17217f7d1ce0260801c5b65800000000000831615613d855770010000000000000000000058b90bfbe8e60260801c5b65400000000000831615613daa577001000000000000000000002c5c85fdf4720260801c5b65200000000000831615613dcf57700100000000000000000000162e42fefa380260801c5b65100000000000831615613df4577001000000000000000000000b17217f7d1b0260801c5b65080000000000831615613e1957700100000000000000000000058b90bfbe8d0260801c5b65040000000000831615613e3e5770010000000000000000000002c5c85fdf460260801c5b65020000000000831615613e63577001000000000000000000000162e42fefa20260801c5b65010000000000831615613e885770010000000000000000000000b17217f7d00260801c5b648000000000831615613eac577001000000000000000000000058b90bfbe70260801c5b644000000000831615613ed057700100000000000000000000002c5c85fdf30260801c5b642000000000831615613ef45770010000000000000000000000162e42fef90260801c5b641000000000831615613f1857700100000000000000000000000b17217f7c0260801c5b640800000000831615613f3c5770010000000000000000000000058b90bfbd0260801c5b640400000000831615613f60577001000000000000000000000002c5c85fde0260801c5b640200000000831615613f8457700100000000000000000000000162e42fee0260801c5b640100000000831615613fa8577001000000000000000000000000b17217f60260801c5b6380000000831615613fcb57700100000000000000000000000058b90bfa0260801c5b6340000000831615613fee5770010000000000000000000000002c5c85fc0260801c5b6320000000831615614011577001000000000000000000000000162e42fd0260801c5b63100000008316156140345770010000000000000000000000000b17217e0260801c5b6308000000831615614057577001000000000000000000000000058b90be0260801c5b630400000083161561407a57700100000000000000000000000002c5c85e0260801c5b630200000083161561409d5770010000000000000000000000000162e42e0260801c5b63010000008316156140c057700100000000000000000000000000b172160260801c5b628000008316156140e25770010000000000000000000000000058b90a0260801c5b62400000831615614104577001000000000000000000000000002c5c840260801c5b6220000083161561412657700100000000000000000000000000162e410260801c5b62100000831615614148577001000000000000000000000000000b17200260801c5b6208000083161561416a57700100000000000000000000000000058b8f0260801c5b6204000083161561418c5770010000000000000000000000000002c5c70260801c5b620200008316156141ae577001000000000000000000000000000162e30260801c5b620100008316156141d05770010000000000000000000000000000b1710260801c5b6180008316156141f1577001000000000000000000000000000058b80260801c5b61400083161561421257700100000000000000000000000000002c5b0260801c5b6120008316156142335770010000000000000000000000000000162d0260801c5b61100083161561425457700100000000000000000000000000000b160260801c5b6108008316156142755770010000000000000000000000000000058a0260801c5b610400831615614296577001000000000000000000000000000002c40260801c5b6102008316156142b7577001000000000000000000000000000001610260801c5b6101008316156142d8577001000000000000000000000000000000b00260801c5b60808316156142f8577001000000000000000000000000000000570260801c5b60408316156143185770010000000000000000000000000000002b0260801c5b6020831615614338577001000000000000000000000000000000150260801c5b60108316156143585770010000000000000000000000000000000a0260801c5b6008831615614378577001000000000000000000000000000000040260801c5b6004831615614398577001000000000000000000000000000000010260801c5b846143b957600f81901c6001600160701b03169050613fff820191506143e8565b613ffe82116143de57600f81901c6001600160701b0316905081613fff0391506143e8565b600091613fee19011c5b60709190911b1760801b95945050505050565b828054828255906000526020600020908101928215614436579160200282015b8281111561443657823582559160200191906001019061441b565b50614442929150614446565b5090565b5b808211156144425760008155600101614447565b8035612a2581614fce565b60008083601f84011261447857600080fd5b50813567ffffffffffffffff81111561449057600080fd5b6020830191508360208260051b8501011115610d5757600080fd5b8035612a2581614fe6565b600061016082840312156144c957600080fd5b6144d1614d84565b90506144dc8261445b565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015261451c60c083016144ab565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b60006020828403121561456757600080fd5b8135611e1281614fce565b60006020828403121561458457600080fd5b8151611e1281614fce565b600080604083850312156145a257600080fd5b82356145ad81614fce565b915060208301356145bd81614fce565b809150509250929050565b6000806000606084860312156145dd57600080fd5b83356145e881614fce565b95602085013595506040909401359392505050565b6000806000806080858703121561461357600080fd5b843561461e81614fce565b93506020850135925060408501359150606085013561463c81614fe6565b939692955090935050565b60008060008060008060c0878903121561466057600080fd5b863561466b81614fce565b95506020870135945060408701359350606087013561468981614fe6565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156146be57600080fd5b87356146c981614fce565b965060208801359550604088013594506060880135935060808801356146ee81614fe6565b9699959850939692959460a0840135945060c09093013592915050565b60006040828403121561471d57600080fd5b82601f83011261472c57600080fd5b6040516040810181811067ffffffffffffffff8211171561474f5761474f614fb8565b806040525080838560408601111561476657600080fd5b60005b6002811015614788578151835260209283019290910190600101614769565b509195945050505050565b600080602083850312156147a657600080fd5b823567ffffffffffffffff8111156147bd57600080fd5b6147c985828601614466565b90969095509350505050565b600080600080604085870312156147eb57600080fd5b843567ffffffffffffffff8082111561480357600080fd5b61480f88838901614466565b9096509450602087013591508082111561482857600080fd5b818701915087601f83011261483c57600080fd5b81358181111561484b57600080fd5b88602060608302850101111561486057600080fd5b95989497505060200194505050565b6000806000806000806060878903121561488857600080fd5b863567ffffffffffffffff808211156148a057600080fd5b6148ac8a838b01614466565b909850965060208901359150808211156148c557600080fd5b6148d18a838b01614466565b909650945060408901359150808211156148ea57600080fd5b506148f789828a01614466565b979a9699509497509295939492505050565b60006020828403121561491b57600080fd5b8151611e1281614fe6565b60006020828403121561493857600080fd5b5051919050565b6000610160828403121561495257600080fd5b6128ce83836144b6565b60008060008060006101e0868803121561497557600080fd5b61497f87876144b6565b976101608701359750610180870135966101a081013596506101c00135945092505050565b6000602082840312156149b657600080fd5b5035919050565b6000806000806000606086880312156149d557600080fd5b85359450602086013567ffffffffffffffff808211156149f457600080fd5b614a0089838a01614466565b90965094506040880135915080821115614a1957600080fd5b50614a2688828901614466565b969995985093965092949392505050565b600080600060608486031215614a4c57600080fd5b833592506020840135614a5e81614fe6565b929592945050506040919091013590565b60008060008060808587031215614a8557600080fd5b843593506020850135614a9781614fe6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614ac457600080fd5b853594506020860135614ad681614fe6565b94979496505050506040830135926060810135926080909101359150565b600080600080600060a08688031215614b0c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000808284036080811215614b4357600080fd5b833592506060601f1982011215614b5957600080fd5b506020830190509250929050565b60008060408385031215614b7a57600080fd5b50508035926020909101359150565b60008060008060808587031215614b9f57600080fd5b84359350602085013592506040850135614bb881614fe6565b9396929550929360600135925050565b600080600060608486031215614bdd57600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215614c0a57600080fd5b5050823594602084013594506040840135936060013592509050565b81835260006001600160fb1b03831115614c3f57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408082528351908201819052600090606090818401906020808801855b83811015614cb157614ca18583518051825260208082015190830152604090810151910152565b9385019390820190600101614c7a565b5050858303818701528651808452878201938201925060005b81811015614d0157614cf18486518051825260208082015190830152604090810151910152565b9382019392850192600101614cca565b509198975050505050505050565b6020808252600c908201526b4d414e414745525f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b858152606060208201526000614d71606083018688614c26565b828103604084015261138d818587614c26565b604051610160810167ffffffffffffffff81118282101715614da857614da8614fb8565b60405290565b600080821280156001600160ff1b0384900385131615614dd057614dd0614f76565b600160ff1b8390038412811615614de957614de9614f76565b50500190565b60008219821115614e0257614e02614f76565b500190565b600082614e1657614e16614f8c565b600160ff1b821460001984141615614e3057614e30614f76565b500590565b600082614e4457614e44614f8c565b500490565b60006001600160ff1b0381841382841380821686840486111615614e6f57614e6f614f76565b600160ff1b6000871282811687830589121615614e8e57614e8e614f76565b60008712925087820587128484161615614eaa57614eaa614f76565b87850587128184161615614ec057614ec0614f76565b505050929093029392505050565b6000816000190483118215151615614ee857614ee8614f76565b500290565b60008083128015600160ff1b850184121615614f0b57614f0b614f76565b6001600160ff1b0384018313811615614f2657614f26614f76565b50500390565b600082821015614f3e57614f3e614f76565b500390565b6000600160ff1b821415614f5957614f59614f76565b5060000390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114614fe357600080fd5b50565b8015158114614fe357600080fdfea26469706673582212207f565e1f2227e95475736106d6de7020790f76a538a7d0a525641aa58b5d694f64736f6c63430008070033","sourceMap":"428:25907:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22155:563;;;;;;:::i;:::-;;:::i;:::-;;;17864:25:150;;;17852:2;17837:18;22155:563:103;;;;;;;;6560:1001;;;;;;:::i;:::-;;:::i;:::-;;;;22128:25:150;;;22184:2;22169:18;;22162:34;;;;22212:18;;;22205:34;22116:2;22101:18;6560:1001:103;21928:317:150;17076:151:103;;;;;;:::i;:::-;17154:4;17177:27;;;:16;:27;;;;;:43;;;;17076:151;7865:527;;;;;;:::i;:::-;;:::i;:::-;;14376:589;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;612:31::-;;;;;;;;-1:-1:-1;;;;;612:31:103;;;;;;-1:-1:-1;;;;;14821:32:150;;;;14803:51;;14791:2;14776:18;612:31:103;14657:203:150;1104:46:103;;;;;;:::i;:::-;;:::i;996:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;15561:144;;;;;;:::i;:::-;15633:4;15656:21;;;:10;:21;;;;;:42;;;;15561:144;15898;;;;;;:::i;:::-;15970:4;15993:21;;;:10;:21;;;;;:42;;;;15898:144;5257:476;;;;;;:::i;:::-;;:::i;649:32::-;;;;;-1:-1:-1;;;;;649:32:103;;;775:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;688:22;;;;;-1:-1:-1;;;;;688:22:103;;;1842:217;;;;;;:::i;:::-;;:::i;889:100::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21833:25:150;;;21901:14;;21894:22;21889:2;21874:18;;21867:50;21806:18;889:100:103;21665:258:150;18634:951:103;;;;;;:::i;:::-;;:::i;1053:45::-;;;;;;:::i;:::-;;:::i;8879:509::-;;;;;;:::i;:::-;;:::i;16659:143::-;;;;;;:::i;:::-;16731:4;16754:27;;;:16;:27;;;;;:41;;;;16659:143;2469:176;;;;;;:::i;:::-;;:::i;24764:690::-;;;;;;:::i;:::-;;:::i;23823:503::-;;;;;;:::i;:::-;;:::i;16279:141::-;;;;;;:::i;:::-;16350:4;16373:27;;;:16;:27;;;;;:40;;16279:141;9789:835;;;;;;:::i;:::-;;:::i;12717:1367::-;;;;;;:::i;:::-;;:::i;3395:342::-;;;;;;:::i;:::-;;:::i;11092:1385::-;;;;;;:::i;:::-;;:::i;19915:1799::-;;;;;;:::i;:::-;;:::i;:::-;;;;22432:25:150;;;22488:2;22473:18;;22466:34;;;;22405:18;19915:1799:103;22250:256:150;716:21:103;;;;;-1:-1:-1;;;;;716:21:103;;;743:24;;;;;;5903:374;;;;;;:::i;:::-;;:::i;826:57::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:176;;;;;;:::i;:::-;;:::i;18029:431::-;;;;;;:::i;:::-;;:::i;4436:533::-;;;;;;:::i;:::-;;:::i;15186:144::-;;;;;;:::i;:::-;15258:4;15281:21;;;:10;:21;;;;;:42;;15186:144;2169:192;;;;;;:::i;:::-;;:::i;3088:136::-;;;;;;:::i;:::-;;:::i;4007:169::-;;;;;;:::i;:::-;;:::i;10630:456::-;;;;;;:::i;:::-;;:::i;23127:305::-;;;;;;:::i;:::-;;:::i;17530:234::-;;;;;;:::i;:::-;-1:-1:-1;;;;;17703:27:103;;;;17680:4;17703:27;;;:19;:27;;;;;;;;:38;;;;;;;;;:45;;;;;;;;;:54;;17530:234;22155:563;-1:-1:-1;;;;;22402:27:103;;22355:4;22402:27;;;:19;:27;;;;;;;;:38;;;;;;;;:45;;;;;;;;22371:76;;;;;;;;;;;;-1:-1:-1;22371:76:103;;;;;;;;;;;;;22457:59;;22504:1;22497:8;;;;;22457:59;22527:16;22545:17;22566:36;22592:9;22566:25;:36::i;:::-;22526:76;;;;22619:92;22643:1;:10;;;22655:4;:33;;22676:12;22655:33;;;22662:11;22655:33;22690:10;22702:8;22619:23;:92::i;:::-;22612:99;;;;;22155:563;;;;;;;;;:::o;6560:1001::-;6772:11;1418:8;;:20;;;-1:-1:-1;;;1418:20:103;;;;6772:11;;;;1418:8;;;;-1:-1:-1;;;;;1418:8:103;;-1:-1:-1;;1418:20:103;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1404:34:103;:10;:34;1396:61;;;;-1:-1:-1;;;1396:61:103;;18301:2:150;1396:61:103;;;18283:21:150;18340:2;18320:18;;;18313:30;-1:-1:-1;;;18359:18:150;;;18352:44;18413:18;;1396:61:103;;;;;;;;;6815:39:::1;6837:6;:16;;;6815:21;:39::i;:::-;6865:6;6874:189;6907:6;:13;;;6934:6;:16;;;6964:6;:12;;;6990:6;:10;;;7014;7038:6;:15;;;6874:19;:189::i;:::-;7095:12;::::0;7133:16:::1;::::0;::::1;::::0;7095:62:::1;::::0;-1:-1:-1;;;7095:62:103;;::::1;::::0;::::1;22432:25:150::0;;;;22473:18;;;22466:34;;;6865:198:103;;-1:-1:-1;7073:19:103::1;::::0;-1:-1:-1;;;;;7095:12:103;;::::1;::::0;-1:-1:-1;;22405:18:150;;7095:62:103::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7073:84;;7189:145;7220:10;7244:13;7271:1;7286:10;7310:14;7189:17;:145::i;:::-;7383:10;::::0;::::1;::::0;7432:15:::1;::::0;::::1;::::0;7358:196:::1;::::0;7167:167;;-1:-1:-1;7167:167:103;;-1:-1:-1;7167:167:103;;-1:-1:-1;7358:196:103::1;::::0;::::1;::::0;7407:10;;7462:13;;7490:1;;7506:10;;7530:14;;16969::150;;16962:22;16944:41;;17016:2;17001:18;;16994:34;;;;17059:2;17044:18;;17037:34;;;;17102:2;17087:18;;17080:34;;;;17145:3;17130:19;;17123:35;17189:3;17174:19;;17167:35;17233:3;17218:19;;17211:35;16931:3;16916:19;;16637:615;7358:196:103::1;;;;;;;;6805:756;;6560:1001:::0;;;;;;;;;:::o;7865:527::-;1418:8;;:20;;;-1:-1:-1;;;1418:20:103;;;;:8;;;;-1:-1:-1;;;;;1418:8:103;;-1:-1:-1;;1418:20:103;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1404:34:103;:10;:34;1396:61;;;;-1:-1:-1;;;1396:61:103;;18301:2:150;1396:61:103;;;18283:21:150;18340:2;18320:18;;;18313:30;-1:-1:-1;;;18359:18:150;;;18352:44;18413:18;;1396:61:103;18099:338:150;1396:61:103;8034:32:::1;8056:9;8034:21;:32::i;:::-;-1:-1:-1::0;;;;;8109:27:103;::::1;8077:29;8109:27:::0;;;:19:::1;:27;::::0;;;;;;;:38;;;;;;;;:45;;;;;;;;8178:4;:91:::1;;8228:27;::::0;;;:16:::1;:27;::::0;;;;:41:::1;;::::0;8178:91:::1;;;8185:27;::::0;;;:16:::1;:27;::::0;;;;:40;8178:91:::1;8165:104:::0;;;8302:4:::1;8280:19:::0;;::::1;:26:::0;;-1:-1:-1;;8280:26:103::1;::::0;;::::1;::::0;;8322:63:::1;::::0;;-1:-1:-1;;;;;15114:32:150;;15096:51;;15178:2;15163:18;;15156:34;;;15206:18;;;15199:34;;;15264:2;15249:18;;15242:34;;;;8322:63:103::1;::::0;15083:3:150;15068:19;8322:63:103::1;;;;;;;;8024:368;7865:527:::0;;;;:::o;14376:589::-;14460:19;;14518:26;14564:7;14547:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;14547:32:103;;;;;;;;;;;;;;;;-1:-1:-1;14518:61:103;-1:-1:-1;14589:38:103;14653:7;14630:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;14630:38:103;;;;;;;;;;;;;;;;;14589:79;;14684:6;14679:240;14692:18;;;14679:240;;;14727:10;14740:7;;14748:1;14740:10;;;;;;;:::i;:::-;;;;;;;14727:23;;14777:10;:17;14788:5;14777:17;;;;;;;;;;;14765:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;14772:1;14765:9;;;;;;;;:::i;:::-;;;;;;:29;;;;14826:16;:23;14843:5;14826:23;;;;;;;;;;;14808:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;14821:1;14808:15;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;14891:3:103;;14679:240;;;-1:-1:-1;14937:6:103;;-1:-1:-1;14945:12:103;-1:-1:-1;14376:589:103;;;;;;:::o;1104:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5257:476::-;1314:7;;-1:-1:-1;;;;;1314:7:103;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:103;;20076:2:150;1292:46:103;;;20058:21:150;20115:2;20095:18;;;20088:30;-1:-1:-1;;;20134:18:150;;;20127:42;20186:18;;1292:46:103;19874:336:150;1292:46:103;5442:36;;::::1;:76:::0;::::1;;;-1:-1:-1::0;5482:36:103;;::::1;5442:76;5434:101;;;::::0;-1:-1:-1;;;5434:101:103;;18980:2:150;5434:101:103::1;::::0;::::1;18962:21:150::0;19019:2;18999:18;;;18992:30;-1:-1:-1;;;19038:18:150;;;19031:42;19090:18;;5434:101:103::1;18778:336:150::0;5434:101:103::1;5551:6;5546:181;5559:18:::0;;::::1;5546:181;;;5594:63;5614:7;;5622:1;5614:10;;;;;;;:::i;:::-;;;;;;;5626:11;;5638:1;5626:14;;;;;;;:::i;:::-;;;;;;;5642:11;;5654:1;5642:14;;;;;;;:::i;:::-;;;;;;;5594:19;:63::i;:::-;5699:3;;5546:181;;;;5257:476:::0;;;;;;:::o;1842:217::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;19321:2:150;3325:201:24;;;19303:21:150;19360:2;19340:18;;;19333:30;19399:34;19379:18;;;19372:62;-1:-1:-1;;;19450:18:150;;;19443:44;19504:19;;3325:201:24;19119:410:150;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;1935:8:103::1;:37:::0;;-1:-1:-1;;;;;;1935:37:103::1;-1:-1:-1::0;;;;;;1935:37:103;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1982:42:103;;-1:-1:-1;;;;;;1982:42:103::1;::::0;;::::1;::::0;;;::::1;::::0;;2050:2:::1;2034:12;:18:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;18052:36:150;;3721:14:24;;18040:2:150;18025:18;3721:14:24;;;;;;;3647:99;3269:483;1842:217:103;;:::o;18634:951::-;18737:7;18758:18;18768:8;18758:7;:18;:::i;:::-;18755:36;;-1:-1:-1;18790:1:103;18783:8;;18755:36;18804:12;;:39;;-1:-1:-1;;;18804:39:103;;;;;17864:25:150;;;-1:-1:-1;;;;;18804:12:103;;;;:27;;17837:18:150;;18804:39:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18847:1;18804:44;18801:778;;;18876:20;18899:8;;:19;;;-1:-1:-1;;;18899:19:103;;;;:8;;;;-1:-1:-1;;;;;18899:8:103;;:17;;:19;;;;;;;;;;;;;:8;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18876:42;;18936:10;18949:5;:13;;18961:1;18949:13;;;18957:1;18949:13;19001:12;;:38;;-1:-1:-1;;;19001:38:103;;;;;17864:25:150;;;18936:26:103;;;;;;-1:-1:-1;18980:12:103;;18995:5;;-1:-1:-1;;;;;19001:12:103;;:26;;17837:18:150;;19001:38:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;19050:9;19054:5;19050:1;:9;:::i;:::-;19001:58;;;19042:5;19001:58;18995:65;;;;;;;:::i;:::-;;;;;19102:12;;:38;;-1:-1:-1;;;19102:38:103;;;;;17864:25:150;;;18995:65:103;;-1:-1:-1;19078:15:103;;19096:5;;-1:-1:-1;;;;;19102:12:103;;:26;;17837:18:150;;19102:38:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;19155:5;19102:58;;;19143:9;19147:5;19143:1;:9;:::i;:::-;19096:65;;;;;;;:::i;:::-;;;;;;-1:-1:-1;19179:12:103;19209:19;19221:7;19096:65;19209:19;:::i;:::-;19195:11;19199:7;19195:3;:11;:::i;:::-;19194:35;;;;:::i;:::-;19179:50;;19247:14;19264:5;:81;;19325:19;19336:8;19325:7;:19;:::i;:::-;19310:12;19314:8;19310:3;:12;:::i;:::-;19309:36;;;;:::i;:::-;19264:81;;;19287:19;19298:8;19287:7;:19;:::i;:::-;19273:11;19277:7;19273:3;:11;:::i;:::-;19272:35;;;;:::i;:::-;19247:98;-1:-1:-1;19399:3:103;19385:12;19247:98;19385:2;:12;:::i;:::-;19372:10;19375:7;19372:2;:10;:::i;:::-;:25;;;;:::i;:::-;19371:31;;;;:::i;:::-;19364:38;;;;;;;;;;18801:778;19440:14;19457:5;:81;;19518:19;19529:8;19518:7;:19;:::i;:::-;19503:12;19507:8;19503:3;:12;:::i;:::-;19502:36;;;;:::i;:::-;19457:81;;;19480:19;19491:8;19480:7;:19;:::i;:::-;19466:11;19470:7;19466:3;:11;:::i;:::-;19465:35;;;;:::i;:::-;19440:98;-1:-1:-1;19552:16:103;;-1:-1:-1;19552:16:103;18801:778;18634:951;;;;;;:::o;1053:45::-;;;;;;;;;;;;;;;;;;;;8879:509;9110:4;9145:236;9191:9;9218:4;9240:10;9268:8;9294:73;9314:6;9322:9;9333:5;9340:4;9346:10;9358:8;9294:19;:73::i;9145:236::-;9126:255;8879:509;-1:-1:-1;;;;;;;;8879:509:103:o;2469:176::-;1209:8;;:14;;;-1:-1:-1;;;1209:14:103;;;;:8;;;;-1:-1:-1;;;;;1209:8:103;;-1:-1:-1;;1209:14:103;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:103;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:103;;20754:2:150;1187:49:103;;;20736:21:150;20793:1;20773:18;;;20766:29;-1:-1:-1;;;20811:18:150;;;20804:38;20859:18;;1187:49:103;20552:331:150;1187:49:103;-1:-1:-1;;;;;2539:21:103;::::1;2531:43;;;::::0;-1:-1:-1;;;2531:43:103;;20417:2:150;2531:43:103::1;::::0;::::1;20399:21:150::0;20456:1;20436:18;;;20429:29;-1:-1:-1;;;20474:18:150;;;20467:39;20523:18;;2531:43:103::1;20215:332:150::0;2531:43:103::1;2585:6;:16:::0;;-1:-1:-1;;;;;;2585:16:103::1;-1:-1:-1::0;;;;;2585:16:103;::::1;::::0;;::::1;::::0;;;2616:22:::1;::::0;14803:51:150;;;2616:22:103::1;::::0;14791:2:150;14776:18;2616:22:103::1;;;;;;;;2469:176:::0;:::o;24764:690::-;24950:4;;;;25041:3;601:4;24988:31;25006:13;24992:10;24988:31;:::i;:::-;24987:51;;;;:::i;:::-;:57;;;;:::i;:::-;24977:67;;25064:1;25058:3;:7;25054:77;;;25117:3;25088:25;25098:14;25088:3;:25;:::i;:::-;25087:33;;;;:::i;:::-;25081:39;;25054:77;25140:8;25151:34;25174:10;25155:11;25151:34;:::i;:::-;25140:45;-1:-1:-1;25195:9:103;25140:45;25207:21;25225:3;25211:10;25207:21;:::i;:::-;:28;;;;:::i;:::-;25195:40;;25304:3;25287:12;;25281:3;:18;;;;:::i;:::-;25259:41;;25263:10;25259:41;:::i;:::-;25258:49;;;;:::i;:::-;25249:5;:58;25245:140;;-1:-1:-1;25331:1:103;25352:22;25363:10;25352:4;:22;:::i;:::-;25346:28;;25245:140;25410:1;25402:5;:9;:27;;25428:1;25402:27;;;25419:5;25402:27;25394:53;25431:3;;-1:-1:-1;25441:4:103;;-1:-1:-1;24764:690:103;;-1:-1:-1;;;;;;;24764:690:103:o;23823:503::-;24005:4;;24141:24;:10;24156:8;24141:14;:24::i;:::-;24108:11;24097:3;24081:12;;24068:10;:25;;;;:::i;:::-;24067:33;;;;:::i;:::-;24063:57;;;;:::i;:::-;24045:76;;24049:9;24045:76;:::i;:::-;24044:122;;;;:::i;:::-;24021:145;;24177:12;24192:4;:76;;24235:33;24252:16;24239:9;24235:33;:::i;:::-;24192:76;;;24199:33;24216:16;24203:9;24199:33;:::i;:::-;24177:91;;24297:1;24286:8;:12;:33;;24318:1;24286:33;;;24306:8;24279:40;-1:-1:-1;;;;;;;23823:503:103:o;9789:835::-;9955:21;9989;10013:56;10034:9;10045:4;10051:17;10013:20;:56::i;:::-;9989:80;;10079:20;10102:55;10122:9;10133:4;10139:17;10102:19;:55::i;:::-;10193:12;;:35;;-1:-1:-1;;;10193:35:103;;;;;17864:25:150;;;10079:78:103;;-1:-1:-1;10167:17:103;;10079:78;;10232:17;;-1:-1:-1;;;;;10193:12:103;;;;:24;;17837:18:150;;10193:35:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10189:60;;;;:::i;:::-;:79;;;;:::i;:::-;10167:102;-1:-1:-1;10324:15:103;10337:2;601:4;10324:15;:::i;:::-;10319:21;;;:::i;:::-;10303:13;:37;:77;;10367:13;10303:77;;;10348:15;10361:2;601:4;10348:15;:::i;:::-;10343:21;;;:::i;:::-;10287:93;-1:-1:-1;10390:15:103;10465:3;601:4;10409:30;10429:9;10287:93;10409:30;:::i;:::-;10408:50;;;;:::i;:::-;:61;;;;:::i;:::-;10390:79;;10479:19;10501:4;:66;;10539:28;10556:11;10543:9;10539:28;:::i;:::-;10501:66;;;10508:28;10525:11;10512:9;10508:28;:::i;:::-;10479:88;9789:835;-1:-1:-1;;;;;;;;;;9789:835:103:o;12717:1367::-;12814:4;12858:8;;12884:16;;;;12858:46;;-1:-1:-1;;;12858:46:103;;;;;22432:25:150;;;;22473:18;;;22466:34;;;12814:4:103;;12858:8;;;-1:-1:-1;;;;;12858:8:103;;:25;;22405:18:150;;12858:46:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12914:26;12943:8;;12969:16;;;;12943:46;;-1:-1:-1;;;12943:46:103;;;;;22432:25:150;;;;12987:1:103;22473:18:150;;;22466:34;12830:74:103;;-1:-1:-1;12914:26:103;;12943:8;;;;-1:-1:-1;;;;;12943:8:103;;:25;;22405:18:150;;12943:46:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12914:75;;13000:20;13023:43;13050:6;:15;;;13023:6;:22;;;:26;;:43;;;;:::i;:::-;13000:66;;13081:6;:10;;;13077:961;;;13107:39;13131:15;13107:39;;:::i;:::-;;-1:-1:-1;13160:29:103;13241:44;13264:21;13107:39;13241:44;:::i;:::-;13193:27;13199:21;13193:3;:27;:::i;:::-;13192:94;;;;:::i;:::-;13331:16;;;;;13306:6;13315:33;;;:15;:33;;;;;;:40;13160:126;;-1:-1:-1;13301:254:103;13357:5;;13301:254;;13431:16;;;;;13415:33;;;;:15;:33;;;;;;13449:5;13453:1;13449;:5;:::i;:::-;13415:40;;;;;;;;:::i;:::-;;;;;;;;;13387:24;:68;13383:86;;13464:5;13468:1;13464;:5;:::i;13383:86::-;-1:-1:-1;;13519:3:103;13301:254;;;;13093:472;13077:961;;;13585:40;13610:15;13585:40;;:::i;:::-;;-1:-1:-1;13639:28:103;13718:44;13585:40;13718:20;:44;:::i;:::-;13671:26;13677:20;13671:3;:26;:::i;:::-;13670:93;;;;:::i;:::-;13806:16;;;;;13782:6;13791:32;;;:14;:32;;;;;;:39;13639:124;;-1:-1:-1;13777:251:103;13832:5;;13777:251;;13904:16;;;;;13889:32;;;;:14;:32;;;;;;13922:5;13926:1;13922;:5;:::i;:::-;13889:39;;;;;;;;:::i;:::-;;;;;;;;;13862:23;:66;13858:84;;13937:5;13941:1;13937;:5;:::i;13858:84::-;-1:-1:-1;;13992:3:103;13777:251;;;;13571:467;13077:961;-1:-1:-1;14054:1:103;;12717:1367;-1:-1:-1;;;;12717:1367:103:o;3395:342::-;1314:7;;-1:-1:-1;;;;;1314:7:103;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:103;;20076:2:150;1292:46:103;;;20058:21:150;20115:2;20095:18;;;20088:30;-1:-1:-1;;;20134:18:150;;;20127:42;20186:18;;1292:46:103;19874:336:150;1292:46:103;3517:31;;::::1;3509:56;;;::::0;-1:-1:-1;;;3509:56:103;;18980:2:150;3509:56:103::1;::::0;::::1;18962:21:150::0;19019:2;18999:18;;;18992:30;-1:-1:-1;;;19038:18:150;;;19031:42;19090:18;;3509:56:103::1;18778:336:150::0;3509:56:103::1;3581:6;3576:155;3589:18:::0;;::::1;3576:155;;;3624:37;3639:7;;3647:1;3639:10;;;;;;;:::i;:::-;;;;;;;3651:6;;3658:1;3651:9;;;;;;;:::i;:::-;;;;;;3624:14;:37::i;:::-;3703:3;;3576:155;;;;3395:342:::0;;;;:::o;11092:1385::-;11281:12;;:49;;-1:-1:-1;;;11281:49:103;;;;;17864:25:150;;;11195:13:103;;601:4;;11195:13;;-1:-1:-1;;;;;11281:12:103;;:37;;17837:18:150;;11281:49:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11341:25;11369:8;;:40;;-1:-1:-1;;;11369:40:103;;;;;22432:25:150;;;22473:18;;;22466:34;;;11265:65:103;;-1:-1:-1;11341:25:103;;11369:8;;;;-1:-1:-1;;;;;11369:8:103;;:25;;22405:18:150;;11369:40:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11419:26;11448:8;;:40;;-1:-1:-1;;;11448:40:103;;;;;22432:25:150;;;11486:1:103;22473:18:150;;;22466:34;11341:68:103;;-1:-1:-1;11419:26:103;;11448:8;;;;-1:-1:-1;;;;;11448:8:103;;:25;;22405:18:150;;11448:40:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11419:69;-1:-1:-1;11501:25:103;11498:38;;11535:1;11528:8;;;;;;;;11498:38;11546:12;11561:6;:217;;11733:44;11756:21;11733:20;:44;:::i;:::-;11701:27;11707:21;11701:3;:27;:::i;:::-;11700:78;;;;:::i;:::-;11561:217;;;11627:44;11650:21;11627:20;:44;:::i;:::-;11596:26;11602:20;11596:3;:26;:::i;:::-;11595:77;;;;:::i;:::-;11546:232;;11788:17;11808:6;:302;;12092:17;12045:44;12068:21;12045:20;:44;:::i;:::-;:64;;;;:::i;:::-;11998:41;12022:17;11998:21;:41;:::i;:::-;11991:49;;:3;:49;:::i;:::-;11990:120;;;;:::i;:::-;11808:302;;;11944:17;11897:44;11920:21;11897:20;:44;:::i;:::-;:64;;;;:::i;:::-;11850:41;11874:17;11850:20;:41;:::i;:::-;11843:49;;:3;:49;:::i;:::-;11842:120;;;;:::i;:::-;11788:322;-1:-1:-1;12120:13:103;12307:56;12331:13;12337:7;12331:3;:13;:::i;:::-;12347:3;601:4;12307:22;:56::i;:::-;12243:61;12267:18;12273:12;12267:3;:18;:::i;12243:61::-;12193:47;12216:7;12224:3;601:4;12193:22;:47::i;:::-;12137:53;12160:12;12174:3;601:4;12137:22;:53::i;:::-;:103;;;;:::i;:::-;:167;;;;:::i;:::-;:226;;;;:::i;:::-;12120:244;-1:-1:-1;12404:12:103;12383:19;12120:244;12383:9;:19;:::i;:::-;12382:34;;;;:::i;:::-;12373:43;-1:-1:-1;12457:12:103;12436:19;12446:9;12436;:19;:::i;:::-;12435:34;;;;:::i;:::-;12426:43;;11209:1268;;;;;;;11092:1385;;;;;;:::o;19915:1799::-;19987:14;20059:27;;;:16;:27;;;;;;20158:14;;20195:15;;;;20249:8;;:39;;-1:-1:-1;;;20249:39:103;;;;;22432:25:150;;;22473:18;;;22466:34;;;20158:14:103;;20195:15;;19987:14;;;;20249:8;;;-1:-1:-1;;;;;20249:8:103;;:25;;22405:18:150;;20249:39:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20298:26;20327:8;;:39;;-1:-1:-1;;;20327:39:103;;;;;22432:25:150;;;20364:1:103;22473:18:150;;;22466:34;20221:67:103;;-1:-1:-1;20298:26:103;;20327:8;;;;-1:-1:-1;;;;;20327:8:103;;:25;;22405:18:150;;20327:39:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20298:68;-1:-1:-1;20381:24:103;;20377:718;;20447:81;20474:9;20484:20;20506:21;20447:26;:81::i;:::-;20421:107;;20542:14;20559:76;20574:9;20585:4;20591:20;20613:21;20559:14;:76::i;:::-;20542:93;-1:-1:-1;20649:19:103;20736:33;20542:93;20736:23;:33;:::i;:::-;20719:14;601:4;20730:3;20719:14;:::i;:::-;:50;;;;:::i;:::-;20683:33;20707:9;20683:23;:33;:::i;:::-;20671:46;;601:4;20671:46;:::i;:::-;:99;;;;:::i;:::-;20649:121;;20785:28;601:4;;20931:10;:21;20942:9;20931:21;;;;;;;;;;;:42;;;20894:1;:17;;;20879:12;:32;;;;:::i;:::-;20817:43;601:4;20817:14;:43;:::i;:::-;:95;;;;:::i;:::-;:156;;;;:::i;:::-;20816:187;;;;:::i;:::-;:216;;;;:::i;:::-;20785:247;-1:-1:-1;21048:36:103;20785:247;21048:36;;:::i;:::-;;;20407:688;;;20377:718;21109:25;;21105:603;;21151:14;21168:77;21183:9;21194:5;21201:20;21223:21;21168:14;:77::i;:::-;21151:94;-1:-1:-1;21259:20:103;21347:33;21151:94;21347:23;:33;:::i;:::-;21330:14;601:4;21341:3;21330:14;:::i;:::-;:50;;;;:::i;:::-;21294:33;21318:9;21294:23;:33;:::i;:::-;21282:46;;601:4;21282:46;:::i;:::-;:99;;;;:::i;:::-;21259:122;;21395:28;601:4;;21543:10;:21;21554:9;21543:21;;;;;;;;;;;:42;;;21506:1;:17;;;21491:12;:32;;;;:::i;:::-;21427:44;601:4;21427:15;:44;:::i;:::-;:97;;;;:::i;:::-;:158;;;;:::i;:::-;21426:189;;;;:::i;:::-;:218;;;;:::i;:::-;21395:249;-1:-1:-1;21660:37:103;21395:249;21660:37;;:::i;:::-;;;21136:572;;;21105:603;20020:1694;;;;19915:1799;;;:::o;5903:374::-;1314:7;;-1:-1:-1;;;;;1314:7:103;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:103;;20076:2:150;1292:46:103;;;20058:21:150;20115:2;20095:18;;;20088:30;-1:-1:-1;;;20134:18:150;;;20127:42;20186:18;;1292:46:103;19874:336:150;1292:46:103;6012:4:::1;6003:5;:13;;5995:34;;;::::0;-1:-1:-1;;;5995:34:103;;18644:2:150;5995:34:103::1;::::0;::::1;18626:21:150::0;18683:1;18663:18;;;18656:29;-1:-1:-1;;;18701:18:150;;;18694:38;18749:18;;5995:34:103::1;18442:331:150::0;5995:34:103::1;6116:32;6138:9;6116:21;:32::i;:::-;6159:21;::::0;;;:10:::1;:21;::::0;;;;;;;;:42:::1;;:50:::0;;;6225:45;;22432:25:150;;;22473:18;;;22466:34;;;6225:45:103::1;::::0;22405:18:150;6225:45:103::1;;;;;;;;5903:374:::0;;:::o;2752:176::-;1209:8;;:14;;;-1:-1:-1;;;1209:14:103;;;;:8;;;;-1:-1:-1;;;;;1209:8:103;;-1:-1:-1;;1209:14:103;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:103;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:103;;20754:2:150;1187:49:103;;;20736:21:150;20793:1;20773:18;;;20766:29;-1:-1:-1;;;20811:18:150;;;20804:38;20859:18;;1187:49:103;20552:331:150;1187:49:103;2844:12:::1;:28:::0;;;2887:34:::1;::::0;17864:25:150;;;2887:34:103::1;::::0;17852:2:150;17837:18;2887:34:103::1;17720:175:150::0;18029:431:103;18233:12;;:35;;-1:-1:-1;;;18233:35:103;;;;;17864:25:150;;;18131:7:103;;;;-1:-1:-1;;;;;18233:12:103;;;;:23;;17837:18:150;;18233:35:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;601:4;18184:18;18194:8;18184:7;:18;:::i;:::-;18183:33;;;;:::i;:::-;18182:87;;;;:::i;:::-;18353:12;;:34;;-1:-1:-1;;;18353:34:103;;;;;17864:25:150;;;18158:111:103;;-1:-1:-1;18279:20:103;;-1:-1:-1;;;;;18353:12:103;;;;:22;;17837:18:150;;18353:34:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;601:4;18304:18;18314:8;18304:7;:18;:::i;:::-;18303:33;;;;:::i;:::-;18302:86;;;;:::i;:::-;18279:109;-1:-1:-1;18449:3:103;18429:18;18279:109;18429:2;:18;:::i;:::-;18407:19;18410:16;18407:2;:19;:::i;:::-;:40;;;;:::i;:::-;18406:46;;;;:::i;4436:533::-;1314:7;;-1:-1:-1;;;;;1314:7:103;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:103;;20076:2:150;1292:46:103;;;20058:21:150;20115:2;20095:18;;;20088:30;-1:-1:-1;;;20134:18:150;;;20127:42;20186:18;;1292:46:103;19874:336:150;1292:46:103;4622:49;;::::1;4614:58;;;::::0;::::1;;4683:34;::::0;;;:22:::1;:34;::::0;;;;;;;:59;;;4752:14:::1;:26:::0;;;;;:44:::1;::::0;4720:15;;4752:44:::1;:::i;:::-;-1:-1:-1::0;4806:27:103::1;::::0;;;:15:::1;:27;::::0;;;;:46:::1;::::0;4836:16;;4806:46:::1;:::i;:::-;-1:-1:-1::0;4892:34:103::1;::::0;;;:22:::1;:34;::::0;;;;;;;4868:94;;::::1;::::0;::::1;::::0;4928:15;;;;4945:16;;;;4868:94:::1;:::i;2169:192::-:0;1209:8;;:14;;;-1:-1:-1;;;1209:14:103;;;;:8;;;;-1:-1:-1;;;;;1209:8:103;;-1:-1:-1;;1209:14:103;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:103;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:103;;20754:2:150;1187:49:103;;;20736:21:150;20793:1;20773:18;;;20766:29;-1:-1:-1;;;20811:18:150;;;20804:38;20859:18;;1187:49:103;20552:331:150;1187:49:103;-1:-1:-1;;;;;2242:22:103;::::1;2234:44;;;::::0;-1:-1:-1;;;2234:44:103;;20417:2:150;2234:44:103::1;::::0;::::1;20399:21:150::0;20456:1;20436:18;;;20429:29;-1:-1:-1;;;20474:18:150;;;20467:39;20523:18;;2234:44:103::1;20215:332:150::0;2234:44:103::1;2297:7;:18:::0;;-1:-1:-1;;;;;;2297:18:103::1;-1:-1:-1::0;;;;;2297:18:103;::::1;::::0;;::::1;::::0;;;2330:24:::1;::::0;14803:51:150;;;2330:24:103::1;::::0;14791:2:150;14776:18;2330:24:103::1;14657:203:150::0;3088:136:103;1314:7;;-1:-1:-1;;;;;1314:7:103;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:103;;20076:2:150;1292:46:103;;;20058:21:150;20115:2;20095:18;;;20088:30;-1:-1:-1;;;20134:18:150;;;20127:42;20186:18;;1292:46:103;19874:336:150;1292:46:103;3185:32:::1;3200:9;3211:5;3185:14;:32::i;:::-;3088:136:::0;;:::o;4007:169::-;1542:6;;-1:-1:-1;;;;;1542:6:103;1520:10;:29;1512:53;;;;-1:-1:-1;;;1512:53:103;;19736:2:150;1512:53:103;;;19718:21:150;19775:2;19755:18;;;19748:30;-1:-1:-1;;;19794:18:150;;;19787:41;19845:18;;1512:53:103;19534:335:150;1512:53:103;4115:54:::1;4135:9;4146:10;4158;4115:19;:54::i;10630:456::-:0;10774:12;;:50;;-1:-1:-1;;;10774:50:103;;;;;17864:25:150;;;10740:13:103;;;;-1:-1:-1;;;;;10774:12:103;;;;:38;;17837:18:150;;10774:50:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10765:59;;10835:20;10858:6;:98;;10913:22;;;;:10;:22;;;;;:43;;;10858:98;;;10867:22;;;;:10;:22;;;;;:43;10858:98;10835:121;-1:-1:-1;601:4:103;10975:84;601:4;10998:19;11000:17;10998:1;:19;:::i;:::-;:32;;;;:::i;:::-;11031:15;601:4;10975:22;:84::i;:::-;:102;;;;:::i;23127:305::-;23308:4;601;23387:24;:10;23402:8;23387:14;:24::i;:::-;23337:46;23363:20;23337:23;:46;:::i;:::-;23336:75;;;;:::i;:::-;23335:90;;;;:::i;:::-;23328:97;23127:305;-1:-1:-1;;;;;23127:305:103:o;25999:334::-;26064:26;26093:27;;;:16;:27;;;;;26167:36;26110:9;26167:25;:36::i;:::-;26148:15;;;26131:72;;;;;;26233:12;26213:17;;;:32;26261:65;;;22128:25:150;;;22184:2;22169:18;;22162:34;;;;22212:18;;22205:34;26261:65:103;;22116:2:150;22101:18;26261:65:103;21928:317:150;25460:313:103;25558:20;25581:21;;;:10;:21;;;;;;;;;25613:35;;;25658:22;;;:35;;;25709:57;;22128:25:150;;;22169:18;;;22162:34;;;22212:18;;;22205:34;;;25709:57:103;;22116:2:150;22101:18;25709:57:103;;;;;;;25548:225;25460:313;;;:::o;130:127:127:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;25779:214:103:-;25864:32;25886:9;25864:21;:32::i;:::-;25907:21;;;;:10;:21;;;;;25931:5;;25907:29;25931:5;25907:21;26895:5:150;26882:19;26876:4;26869:33;26956:2;26949:5;26945:14;26932:28;26928:1;26922:4;26918:12;26911:50;27015:2;27008:5;27004:14;26991:28;26987:1;26981:4;26977:12;26970:50;;;26724:302;25907:29:103;-1:-1:-1;;25951:35:103;;;23007:25:150;;;23068:20;;23063:2;23048:18;;;23041:48;;;;23138:15;;23125:29;23105:18;;;23098:57;23204:15;;;23191:29;23186:2;23171:18;;23164:57;25951:35:103;;22994:3:150;22979:19;25951:35:103;22772:455:150;54200:338:128;54275:6;54289:14;54306:13;54315:3;54306:8;:13::i;:::-;54289:30;;54326:14;54343:13;54352:3;54343:8;:13::i;:::-;54326:30;;54365:14;54382:18;54386:6;54393;54382:3;:18::i;:::-;54365:35;;54407:11;54421;54425:6;54421:3;:11::i;:::-;54407:25;;54439:24;54466:29;54470:3;54475:19;54484:9;54475:8;:19::i;:::-;54466:3;:29::i;:::-;54439:56;;54509:23;54515:16;54509:5;:23::i;:::-;54502:30;54200:338;-1:-1:-1;;;;;;;;;54200:338:128:o;3183:462::-;3236:7;3275:6;3271:362;;-1:-1:-1;3299:1:128;;3183:462;-1:-1:-1;3183:462:128:o;3271:362::-;3343:1;3326:14;3371:27;3343:1;3371:18;:27::i;:::-;3357:41;;3419:3;3413;:9;3409:86;;;3441:3;3435;:9;3424:20;;;;;3409:86;;;3470:3;3464;:9;3460:35;;;3492:3;3486;:9;3475:20;;;;;3460:35;3559:5;:11;3574:3;3559:18;-1:-1:-1;;;;;3517:39:128;;;;:60;3597:26;;;;-1:-1:-1;;3183:462:128:o;3271:362::-;3183:462;;;:::o;26000:2866::-;26059:7;26135:6;26114:18;;;;:27;;;26170:18;;;;:27;;;26212:19;;26208:2646;;;26248:9;26261:6;26248:19;26244:100;;;-1:-1:-1;;;;;;26269:10:128;;-1:-1:-1;26269:10:128;26244:100;-1:-1:-1;;;;;;26306:38:128;;26302:42;;26295:49;;26208:2646;26364:9;26377:6;26364:19;26360:2494;;;-1:-1:-1;;;26400:38:128;;:43;26396:142;;-1:-1:-1;;;;;;26445:10:128;;-1:-1:-1;26445:10:128;26396:142;-1:-1:-1;;;26495:5:128;;;-1:-1:-1;;;26494:44:128;26471:67;;26360:2494;-1:-1:-1;;;;;;;26558:38:128;;26554:2300;;-1:-1:-1;;;;;;;26618:38:128;;26614:146;;-1:-1:-1;;;;;;26663:10:128;;-1:-1:-1;26663:10:128;26614:146;-1:-1:-1;;;26717:5:128;;;-1:-1:-1;;;26716:44:128;-1:-1:-1;;;26696:64:128;26689:71;;26554:2300;-1:-1:-1;;;;;26808:11:128;;;;:44;26867:14;26863:94;;26895:1;26883:13;;26863:94;;;-1:-1:-1;;;26912:45:128;26863:94;-1:-1:-1;;;;;26991:11:128;;;;:44;27050:14;27046:356;;27083:15;;27079:206;;27115:10;27134:31;27154:10;27134:18;:31::i;:::-;27231:1;;-1:-1:-1;27128:3:128;:37;27247:24;;;-1:-1:-1;;27247:24:128;;27182:20;;;;;-1:-1:-1;27079:206:128;27046:356;;;-1:-1:-1;;;27338:44:128;27387:3;27337:53;27046:356;27440:10;27427;:23;;;;;:::i;:::-;;;-1:-1:-1;27465:15:128;27461:134;;-1:-1:-1;;;27501:5:128;;;27500:44;:95;;590:34;27500:95;;;-1:-1:-1;;;27500:95:128;27493:102;;;;;;;;27461:134;-1:-1:-1;;;27616:44:128;;;27608:53;;;;:::i;:::-;27674:11;-1:-1:-1;;;27699:45:128;;;:215;;-1:-1:-1;;;27792:45:128;;;:122;;-1:-1:-1;;;27857:45:128;;;:57;;27911:3;27792:122;;27857:57;27905:3;27792:122;;;27840:3;27792:122;27699:215;;;;;27747:31;27767:10;27747:18;:31::i;:::-;27674:240;;27949:9;27961:5;27949:17;27943:3;27931:9;:15;:35;27927:779;;;28005:6;27993:18;;28037:1;28024:14;;27927:779;;;28087:9;28072:3;28060:9;:15;28078:5;28060:23;:36;28056:650;;;28136:1;28124:13;;28163:1;28150:14;;28056:650;;;28213:9;28198:3;28186:9;:15;28204:5;28186:23;:36;28182:524;;;28274:9;28254;28266:5;28254:17;:29;28250:202;;;28333:9;28313;28325:5;28313:17;:29;28298:44;;;;;28250:202;;;28384:9;28364;28376:5;28364:17;:29;28360:92;;;28447:5;28435:9;28423;:21;:29;28408:44;;;;;28360:92;28479:1;28467:13;;28182:524;;;28531:3;28525;:9;28521:52;;;28570:3;28564;:9;28549:24;;;;;28521:52;28659:15;;;:35;;;28677:5;28659:35;;-1:-1:-1;;;;;28588:44:128;;;;;28182:524;-1:-1:-1;28753:5:128;;;28752:44;28743:54;;;-1:-1:-1;;;28743:54:128;28826:3;28813:16;;;;28743:86;;;;:99;28725:119;;;;-1:-1:-1;28718:126:128;;-1:-1:-1;;28718:126:128;52920:154;52968:7;53010:51;53017:43;53022:1;-1:-1:-1;;;53017:3:128;:43::i;:::-;53010:5;:51::i;22157:2550::-;22216:7;22292:6;22271:18;;;;:27;;;22327:18;;;;:27;;;22369:19;;22365:2330;;;22405:9;22418:6;22405:19;22401:375;;;-1:-1:-1;;;;;;22443:6:128;;;;;;;22439:168;;;-1:-1:-1;;;;;;22462:38:128;;22458:42;;22451:49;;22439:168;-1:-1:-1;;;;;;;;;22522:5:128;;;:43;;22518:89;;;-1:-1:-1;;;22574:5:128;;;22567:12;;22518:89;-1:-1:-1;;;;;;22597:10:128;;-1:-1:-1;22597:10:128;22401:375;-1:-1:-1;;;;;;;22642:38:128;;22638:126;;-1:-1:-1;;;;;;22687:10:128;;-1:-1:-1;22687:10:128;22365:2330;22795:9;22808:6;22795:19;22791:1904;;;-1:-1:-1;;;;;;;22833:38:128;;22829:126;;-1:-1:-1;;;;;;22878:10:128;;-1:-1:-1;22878:10:128;22829:126;-1:-1:-1;;;;;;22917:38:128;;22913:42;;22906:49;;22791:1904;-1:-1:-1;;;;;23003:11:128;;;;:44;23062:14;23058:94;;23090:1;23078:13;;23058:94;;;-1:-1:-1;;;23107:45:128;23058:94;-1:-1:-1;;;;;23186:11:128;;;;:44;23245:14;23241:94;;23273:1;23261:13;;23241:94;;;-1:-1:-1;;;23290:45:128;23241:94;23348:24;;;;23387:15;23383:134;;-1:-1:-1;;;23423:5:128;;;23422:44;:95;;590:34;23422:95;;23383:134;23530:22;;;;23565:11;-1:-1:-1;;;23590:73:128;;;:217;;-1:-1:-1;;;23683:73:128;;;:124;;23776:31;23796:10;23776:18;:31::i;:::-;23590:217;;23683:124;23759:3;23590:217;;;23666:3;23590:217;23565:242;;23842:5;23836:3;23824:9;:15;:23;23820:727;;;23887:1;23875:13;;23914:1;23901:14;;23820:727;;;23955:5;23949:3;23937:9;:15;:23;23933:614;;;24004:5;23992:9;:17;23988:154;;;24047:9;24039:5;:17;24024:32;;;;;23988:154;;;24090:5;24078:9;:17;24074:68;;;24137:5;24125:9;:17;24110:32;;;;;24074:68;24167:1;24155:13;;23933:614;;;24208:5;24202:3;24190:9;:15;:23;24186:361;;;24240:6;24228:18;;24272:1;24259:14;;24186:361;;;24314:3;24308;:9;24304:122;;;24353:3;24347;:9;24332:24;;;;;24304:122;;;24384:3;24378;:9;24374:52;;;24423:3;24417;:9;24402:24;;;;;24374:52;24512:15;;;-1:-1:-1;;24512:23:128;;-1:-1:-1;;;;;24441:44:128;;;;;24186:361;-1:-1:-1;;24594:5:128;;;24593:44;24584:54;;;-1:-1:-1;;;24584:54:128;24667:3;24654:16;;;;24584:86;;;;:99;24566:119;;;;-1:-1:-1;24559:126:128;;-1:-1:-1;24559:126:128;2096:894;2146:6;2220;2199:18;;;;:27;2258:5;2246:17;;;2237:27;;;;;;2300:5;2289:8;:16;2285:30;;;-1:-1:-1;2314:1:128;;2096:894;-1:-1:-1;;2096:894:128:o;2285:30::-;-1:-1:-1;;;;;2365:11:128;;;;2356:54;-1:-1:-1;;;2356:97:128;2479:5;2468:16;;2464:112;;;2497:5;:16;;;2486:27;2464:112;;;2542:5;2531:8;:16;2527:49;;;-1:-1:-1;;2560:16:128;;2549:27;2527:49;-1:-1:-1;;;2591:11:128;;;;:49;2587:391;;-1:-1:-1;;;2674:76:128;;;2665:86;;;;;;2769:16;;;2096:894;-1:-1:-1;;;2096:894:128:o;2587:391::-;-1:-1:-1;;;;;2858:76:128;;;2849:86;;;;;53314:646;53376:7;53424:1;53420;:5;53411:15;;;;;;53437:14;-1:-1:-1;;;53470:40:128;;53466:75;;53520:3;53514:9;;;;53525:13;53466:75;-1:-1:-1;;;53553:24:128;;53549:57;;53587:2;53581:8;;;;53591:12;53549:57;53623:11;53618:1;:16;53614:49;;53644:2;53638:8;;;;53648:12;53614:49;53680:7;53675:1;:12;53671:45;;53697:2;53691:8;;;;53701:12;53671:45;53733:5;53728:1;:10;53724:41;;53748:1;53742:7;;;;53751:11;53724:41;53782:4;53777:1;:9;53773:40;;53796:1;53790:7;;;;53799:11;53773:40;53830:3;53825:1;:8;53821:39;;53843:1;53837:7;;;;53846:11;53821:39;53877:3;53872:1;:8;53868:25;;53892:1;53882:11;53941:6;53314:646;-1:-1:-1;;53314:646:128:o;34391:18399::-;34441:7;-1:-1:-1;;;34493:11:128;;;;:48;;;;34591:6;34570:18;;;;:27;;;-1:-1:-1;;;;;34627:44:128;;34686:19;;:38;;;;-1:-1:-1;34709:15:128;;;34686:38;34682:18096;;;-1:-1:-1;;;;;;;;;;34391:18399:128:o;34682:18096::-;34766:5;34754:9;:17;34750:18028;;;34789:9;:45;;-1:-1:-1;;;34789:45:128;;;590:34;34782:52;34391:18399;-1:-1:-1;;;;;34391:18399:128:o;34750:18028::-;34864:5;34852:9;:17;34848:17930;;;-1:-1:-1;;;;;;;;;;34391:18399:128:o;34848:17930::-;34950:14;34946:94;;34978:1;34966:13;;34946:94;;;-1:-1:-1;;;34995:45:128;34946:94;35069:5;35057:9;:17;35053:148;;;-1:-1:-1;;35102:17:128;;35087:32;35053:148;;;35151:5;35139:9;:17;35135:66;;;35184:5;:17;;;35169:32;35135:66;35218:9;:64;;;;-1:-1:-1;;;;35231:51:128;;35218:64;35214:101;;;-1:-1:-1;590:34:128;;34391:18399;-1:-1:-1;;;;34391:18399:128:o;35214:101::-;35333:9;35332:10;:65;;;;;35359:38;35346:10;:51;35332:65;35328:106;;;-1:-1:-1;;;;;;;;;;34391:18399:128:o;35328:106::-;-1:-1:-1;35500:48:128;;;-1:-1:-1;35472:17:128;35563:9;:28;;;;-1:-1:-1;35576:15:128;;;35563:28;35559:115;;;35619:11;;;35661:1;35643:19;35559:115;-1:-1:-1;;;35761:47:128;;;:51;35757:135;;35850:35;35832:53;35889:3;35832:60;35757:135;-1:-1:-1;;;35907:47:128;;:51;35903:135;;35996:35;35978:53;36035:3;35978:60;35903:135;-1:-1:-1;;;36053:47:128;;:51;36049:135;;36142:35;36124:53;36181:3;36124:60;36049:135;-1:-1:-1;;;36199:47:128;;:51;36195:135;;36288:35;36270:53;36327:3;36270:60;36195:135;-1:-1:-1;;;36345:46:128;;:50;36341:134;;36433:35;36415:53;36472:3;36415:60;36341:134;-1:-1:-1;;;36490:46:128;;:50;36486:134;;36578:35;36560:53;36617:3;36560:60;36486:134;-1:-1:-1;;;36635:46:128;;:50;36631:134;;36723:35;36705:53;36762:3;36705:60;36631:134;-1:-1:-1;;;36780:46:128;;:50;36776:134;;36868:35;36850:53;36907:3;36850:60;36776:134;-1:-1:-1;;;36925:45:128;;:49;36921:133;;37012:35;36994:53;37051:3;36994:60;36921:133;-1:-1:-1;;;37069:45:128;;:49;37065:133;;37156:35;37138:53;37195:3;37138:60;37065:133;-1:-1:-1;;;37213:45:128;;:49;37209:133;;37300:35;37282:53;37339:3;37282:60;37209:133;-1:-1:-1;;;37357:45:128;;:49;37353:133;;37444:35;37426:53;37483:3;37426:60;37353:133;-1:-1:-1;;;37501:44:128;;:48;37497:132;;37587:35;37569:53;37626:3;37569:60;37497:132;-1:-1:-1;;;37644:44:128;;:48;37640:132;;37730:35;37712:53;37769:3;37712:60;37640:132;-1:-1:-1;;;37787:44:128;;:48;37783:132;;37873:35;37855:53;37912:3;37855:60;37783:132;-1:-1:-1;;;37930:44:128;;:48;37926:132;;38016:35;37998:53;38055:3;37998:60;37926:132;-1:-1:-1;;;38073:43:128;;:47;38069:131;;38158:35;38140:53;38197:3;38140:60;38069:131;-1:-1:-1;;;38215:43:128;;:47;38211:131;;38300:35;38282:53;38339:3;38282:60;38211:131;-1:-1:-1;;;38357:43:128;;:47;38353:131;;38442:35;38424:53;38481:3;38424:60;38353:131;-1:-1:-1;;;38499:43:128;;:47;38495:131;;38584:35;38566:53;38623:3;38566:60;38495:131;-1:-1:-1;;;38641:42:128;;:46;38637:130;;38725:35;38707:53;38764:3;38707:60;38637:130;-1:-1:-1;;;38782:42:128;;:46;38778:130;;38866:35;38848:53;38905:3;38848:60;38778:130;-1:-1:-1;;;38923:42:128;;:46;38919:130;;39007:35;38989:53;39046:3;38989:60;38919:130;-1:-1:-1;;;39064:42:128;;:46;39060:130;;39148:35;39130:53;39187:3;39130:60;39060:130;-1:-1:-1;;;39205:41:128;;:45;39201:129;;39288:35;39270:53;39327:3;39270:60;39201:129;-1:-1:-1;;;39345:41:128;;:45;39341:129;;39428:35;39410:53;39467:3;39410:60;39341:129;-1:-1:-1;;;39485:41:128;;:45;39481:129;;39568:35;39550:53;39607:3;39550:60;39481:129;-1:-1:-1;;;39625:41:128;;:45;39621:129;;39708:35;39690:53;39747:3;39690:60;39621:129;-1:-1:-1;;;39765:40:128;;:44;39761:128;;39847:35;39829:53;39886:3;39829:60;39761:128;-1:-1:-1;;;39904:40:128;;:44;39900:128;;39986:35;39968:53;40025:3;39968:60;39900:128;-1:-1:-1;;;40043:40:128;;:44;40039:128;;40125:35;40107:53;40164:3;40107:60;40039:128;-1:-1:-1;;;40182:40:128;;:44;40178:128;;40264:35;40246:53;40303:3;40246:60;40178:128;-1:-1:-1;;;40321:39:128;;:43;40317:127;;40402:35;40384:53;40441:3;40384:60;40317:127;-1:-1:-1;;;40459:39:128;;:43;40455:127;;40540:35;40522:53;40579:3;40522:60;40455:127;-1:-1:-1;;;40597:39:128;;:43;40593:127;;40678:35;40660:53;40717:3;40660:60;40593:127;-1:-1:-1;;;40735:39:128;;:43;40731:127;;40816:35;40798:53;40855:3;40798:60;40731:127;-1:-1:-1;;;40873:38:128;;:42;40869:126;;40953:35;40935:53;40992:3;40935:60;40869:126;-1:-1:-1;;;41010:38:128;;:42;41006:126;;41090:35;41072:53;41129:3;41072:60;41006:126;-1:-1:-1;;;41147:38:128;;:42;41143:126;;41227:35;41209:53;41266:3;41209:60;41143:126;-1:-1:-1;;;41284:38:128;;:42;41280:126;;41364:35;41346:53;41403:3;41346:60;41280:126;-1:-1:-1;;;41421:37:128;;:41;41417:125;;41500:35;41482:53;41539:3;41482:60;41417:125;-1:-1:-1;;;41557:37:128;;:41;41553:125;;41636:35;41618:53;41675:3;41618:60;41553:125;-1:-1:-1;;;41693:37:128;;:41;41689:125;;41772:35;41754:53;41811:3;41754:60;41689:125;-1:-1:-1;;;41829:37:128;;:41;41825:125;;41908:35;41890:53;41947:3;41890:60;41825:125;-1:-1:-1;;;41965:36:128;;:40;41961:124;;42043:35;42025:53;42082:3;42025:60;41961:124;-1:-1:-1;;;42100:36:128;;:40;42096:124;;42178:35;42160:53;42217:3;42160:60;42096:124;-1:-1:-1;;;42235:36:128;;:40;42231:124;;42313:35;42295:53;42352:3;42295:60;42231:124;-1:-1:-1;;;42370:36:128;;:40;42366:124;;42448:35;42430:53;42487:3;42430:60;42366:124;42518:22;42505:35;;:39;42501:123;;42582:35;42564:53;42621:3;42564:60;42501:123;42652:22;42639:35;;:39;42635:123;;42716:35;42698:53;42755:3;42698:60;42635:123;42786:22;42773:35;;:39;42769:123;;42850:35;42832:53;42889:3;42832:60;42769:123;42920:22;42907:35;;:39;42903:123;;42984:35;42966:53;43023:3;42966:60;42903:123;43054:21;43041:34;;:38;43037:122;;43117:35;43099:53;43156:3;43099:60;43037:122;43187:21;43174:34;;:38;43170:122;;43250:35;43232:53;43289:3;43232:60;43170:122;43320:21;43307:34;;:38;43303:122;;43383:35;43365:53;43422:3;43365:60;43303:122;43453:21;43440:34;;:38;43436:122;;43516:35;43498:53;43555:3;43498:60;43436:122;43586:20;43573:33;;:37;43569:121;;43648:35;43630:53;43687:3;43630:60;43569:121;43718:20;43705:33;;:37;43701:121;;43780:35;43762:53;43819:3;43762:60;43701:121;43850:20;43837:33;;:37;43833:121;;43912:35;43894:53;43951:3;43894:60;43833:121;43982:20;43969:33;;:37;43965:121;;44044:35;44026:53;44083:3;44026:60;43965:121;44114:19;44101:32;;:36;44097:120;;44175:35;44157:53;44214:3;44157:60;44097:120;44245:19;44232:32;;:36;44228:120;;44306:35;44288:53;44345:3;44288:60;44228:120;44376:19;44363:32;;:36;44359:120;;44437:35;44419:53;44476:3;44419:60;44359:120;-1:-1:-1;;;44494:32:128;;:36;44490:120;;44568:35;44550:53;44607:3;44550:60;44490:120;44638:18;44625:31;;:35;44621:119;;44698:35;44680:53;44737:3;44680:60;44621:119;44768:18;44755:31;;:35;44751:119;;44828:35;44810:53;44867:3;44810:60;44751:119;44898:18;44885:31;;:35;44881:119;;44958:35;44940:53;44997:3;44940:60;44881:119;45028:18;45015:31;;:35;45011:119;;45088:35;45070:53;45127:3;45070:60;45011:119;45158:17;45145:30;;:34;45141:118;;45217:35;45199:53;45256:3;45199:60;45141:118;45287:17;45274:30;;:34;45270:118;;45346:35;45328:53;45385:3;45328:60;45270:118;45416:17;45403:30;;:34;45399:118;;45475:35;45457:53;45514:3;45457:60;45399:118;45545:17;45532:30;;:34;45528:118;;45604:35;45586:53;45643:3;45586:60;45528:118;45674:16;45661:29;;:33;45657:117;;45732:35;45714:53;45771:3;45714:60;45657:117;45802:16;45789:29;;:33;45785:117;;45860:35;45842:53;45899:3;45842:60;45785:117;45930:16;45917:29;;:33;45913:117;;45988:35;45970:53;46027:3;45970:60;45913:117;46058:16;46045:29;;:33;46041:117;;46116:35;46098:53;46155:3;46098:60;46041:117;46186:15;46173:28;;:32;46169:116;;46243:35;46225:53;46282:3;46225:60;46169:116;46313:15;46300:28;;:32;46296:116;;46370:35;46352:53;46409:3;46352:60;46296:116;46440:15;46427:28;;:32;46423:116;;46497:35;46479:53;46536:3;46479:60;46423:116;46567:15;46554:28;;:32;46550:116;;46624:35;46606:53;46663:3;46606:60;46550:116;46694:14;46681:27;;:31;46677:115;;46750:35;46732:53;46789:3;46732:60;46677:115;46820:14;46807:27;;:31;46803:115;;46876:35;46858:53;46915:3;46858:60;46803:115;46946:14;46933:27;;:31;46929:115;;47002:35;46984:53;47041:3;46984:60;46929:115;47072:14;47059:27;;:31;47055:115;;47128:35;47110:53;47167:3;47110:60;47055:115;47198:13;47185:26;;:30;47181:114;;47253:35;47235:53;47292:3;47235:60;47181:114;47323:13;47310:26;;:30;47306:114;;47378:35;47360:53;47417:3;47360:60;47306:114;47448:13;47435:26;;:30;47431:114;;47503:35;47485:53;47542:3;47485:60;47431:114;47573:13;47560:26;;:30;47556:114;;47628:35;47610:53;47667:3;47610:60;47556:114;47698:12;47685:25;;:29;47681:113;;47752:35;47734:53;47791:3;47734:60;47681:113;47822:12;47809:25;;:29;47805:113;;47876:35;47858:53;47915:3;47858:60;47805:113;47946:12;47933:25;;:29;47929:113;;48000:35;47982:53;48039:3;47982:60;47929:113;48070:12;48057:25;;:29;48053:113;;48124:35;48106:53;48163:3;48106:60;48053:113;48194:11;48181:24;;:28;48177:112;;48247:35;48229:53;48286:3;48229:60;48177:112;48317:11;48304:24;;:28;48300:112;;48370:35;48352:53;48409:3;48352:60;48300:112;48440:11;48427:24;;:28;48423:112;;48493:35;48475:53;48532:3;48475:60;48423:112;48563:11;48550:24;;:28;48546:112;;48616:35;48598:53;48655:3;48598:60;48546:112;48686:10;48673:23;;:27;48669:111;;48738:35;48720:53;48777:3;48720:60;48669:111;48808:10;48795:23;;:27;48791:111;;48860:35;48842:53;48899:3;48842:60;48791:111;48930:10;48917:23;;:27;48913:111;;48982:35;48964:53;49021:3;48964:60;48913:111;49052:10;49039:23;;:27;49035:111;;49104:35;49086:53;49143:3;49086:60;49035:111;49174:9;49161:22;;:26;49157:110;;49225:35;49207:53;49264:3;49207:60;49157:110;49295:9;49282:22;;:26;49278:110;;49346:35;49328:53;49385:3;49328:60;49278:110;49416:9;49403:22;;:26;49399:110;;49467:35;49449:53;49506:3;49449:60;49399:110;49537:9;49524:22;;:26;49520:110;;49588:35;49570:53;49627:3;49570:60;49520:110;49658:8;49645:21;;:25;49641:109;;49708:35;49690:53;49747:3;49690:60;49641:109;49778:8;49765:21;;:25;49761:109;;49828:35;49810:53;49867:3;49810:60;49761:109;49898:8;49885:21;;:25;49881:109;;49948:35;49930:53;49987:3;49930:60;49881:109;50018:8;50005:21;;:25;50001:109;;50068:35;50050:53;50107:3;50050:60;50001:109;50138:7;50125:20;;:24;50121:108;;50187:35;50169:53;50226:3;50169:60;50121:108;50257:7;50244:20;;:24;50240:108;;50306:35;50288:53;50345:3;50288:60;50240:108;50376:7;50363:20;;:24;50359:108;;50425:35;50407:53;50464:3;50407:60;50359:108;50495:7;50482:20;;:24;50478:108;;50544:35;50526:53;50583:3;50526:60;50478:108;50614:6;50601:19;;:23;50597:107;;50662:35;50644:53;50701:3;50644:60;50597:107;50732:6;50719:19;;:23;50715:107;;50780:35;50762:53;50819:3;50762:60;50715:107;50850:6;50837:19;;:23;50833:107;;50898:35;50880:53;50937:3;50880:60;50833:107;50968:6;50955:19;;:23;50951:107;;51016:35;50998:53;51055:3;50998:60;50951:107;51086:5;51073:18;;:22;51069:106;;51133:35;51115:53;51172:3;51115:60;51069:106;51203:5;51190:18;;:22;51186:106;;51250:35;51232:53;51289:3;51232:60;51186:106;51320:5;51307:18;;:22;51303:106;;51367:35;51349:53;51406:3;51349:60;51303:106;51437:5;51424:18;;:22;51420:106;;51484:35;51466:53;51523:3;51466:60;51420:106;51554:4;51541:17;;:21;51537:105;;51600:35;51582:53;51639:3;51582:60;51537:105;51670:4;51657:17;;:21;51653:105;;51716:35;51698:53;51755:3;51698:60;51653:105;51786:4;51773:17;;:21;51769:105;;51832:35;51814:53;51871:3;51814:60;51769:105;51902:4;51889:17;;:21;51885:105;;51948:35;51930:53;51987:3;51930:60;51885:105;52018:3;52005:16;;:20;52001:104;;52063:35;52045:53;52102:3;52045:60;52001:104;52133:3;52120:16;;:20;52116:104;;52178:35;52160:53;52217:3;52160:60;52116:104;52238:9;52233:457;;52365:6;52347:24;;;;;52299:2;52280:21;-1:-1:-1;;;;;52280:54:128;52233:457;;;52411:6;52393:14;:24;52389:301;;52534:6;:23;;;;;52469:2;52450:21;-1:-1:-1;;;;;52450:54:128;52389:301;;;52677:1;;-1:-1:-1;;52625:22:128;52606:41;52389:301;52745:3;52727:21;;;;:39;52709:59;;;34391:18399;-1:-1:-1;;;;;34391:18399:128:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:134:150;82:20;;111:31;82:20;111:31;:::i;153:367::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:55;;298:1;295;288:12;247:55;-1:-1:-1;321:20:150;;364:18;353:30;;350:50;;;396:1;393;386:12;350:50;433:4;425:6;421:17;409:29;;493:3;486:4;476:6;473:1;469:14;461:6;457:27;453:38;450:47;447:67;;;510:1;507;500:12;525:128;590:20;;619:28;590:20;619:28;:::i;658:945::-;710:5;758:6;746:9;741:3;737:19;733:32;730:52;;;778:1;775;768:12;730:52;800:17;;:::i;:::-;791:26;;840:29;859:9;840:29;:::i;:::-;833:5;826:44;930:2;919:9;915:18;902:32;897:2;890:5;886:14;879:56;995:2;984:9;980:18;967:32;962:2;955:5;951:14;944:56;1060:2;1049:9;1045:18;1032:32;1027:2;1020:5;1016:14;1009:56;1126:3;1115:9;1111:19;1098:33;1092:3;1085:5;1081:15;1074:58;1193:3;1182:9;1178:19;1165:33;1159:3;1152:5;1148:15;1141:58;1232:36;1263:3;1252:9;1248:19;1232:36;:::i;:::-;1226:3;1219:5;1215:15;1208:61;1330:3;1319:9;1315:19;1302:33;1296:3;1289:5;1285:15;1278:58;1355:3;1418:2;1407:9;1403:18;1390:32;1385:2;1378:5;1374:14;1367:56;;1442:3;1505:2;1494:9;1490:18;1477:32;1472:2;1465:5;1461:14;1454:56;;1529:3;1592:2;1581:9;1577:18;1564:32;1559:2;1552:5;1548:14;1541:56;;658:945;;;;:::o;1608:247::-;1667:6;1720:2;1708:9;1699:7;1695:23;1691:32;1688:52;;;1736:1;1733;1726:12;1688:52;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;1860:251::-;1930:6;1983:2;1971:9;1962:7;1958:23;1954:32;1951:52;;;1999:1;1996;1989:12;1951:52;2031:9;2025:16;2050:31;2075:5;2050:31;:::i;2116:388::-;2184:6;2192;2245:2;2233:9;2224:7;2220:23;2216:32;2213:52;;;2261:1;2258;2251:12;2213:52;2300:9;2287:23;2319:31;2344:5;2319:31;:::i;:::-;2369:5;-1:-1:-1;2426:2:150;2411:18;;2398:32;2439:33;2398:32;2439:33;:::i;:::-;2491:7;2481:17;;;2116:388;;;;;:::o;2509:383::-;2586:6;2594;2602;2655:2;2643:9;2634:7;2630:23;2626:32;2623:52;;;2671:1;2668;2661:12;2623:52;2710:9;2697:23;2729:31;2754:5;2729:31;:::i;:::-;2779:5;2831:2;2816:18;;2803:32;;-1:-1:-1;2882:2:150;2867:18;;;2854:32;;2509:383;-1:-1:-1;;;2509:383:150:o;2897:519::-;2980:6;2988;2996;3004;3057:3;3045:9;3036:7;3032:23;3028:33;3025:53;;;3074:1;3071;3064:12;3025:53;3113:9;3100:23;3132:31;3157:5;3132:31;:::i;:::-;3182:5;-1:-1:-1;3234:2:150;3219:18;;3206:32;;-1:-1:-1;3285:2:150;3270:18;;3257:32;;-1:-1:-1;3341:2:150;3326:18;;3313:32;3354:30;3313:32;3354:30;:::i;:::-;2897:519;;;;-1:-1:-1;2897:519:150;;-1:-1:-1;;2897:519:150:o;3421:657::-;3522:6;3530;3538;3546;3554;3562;3615:3;3603:9;3594:7;3590:23;3586:33;3583:53;;;3632:1;3629;3622:12;3583:53;3671:9;3658:23;3690:31;3715:5;3690:31;:::i;:::-;3740:5;-1:-1:-1;3792:2:150;3777:18;;3764:32;;-1:-1:-1;3843:2:150;3828:18;;3815:32;;-1:-1:-1;3899:2:150;3884:18;;3871:32;3912:30;3871:32;3912:30;:::i;:::-;3421:657;;;;-1:-1:-1;3421:657:150;;4015:3;4000:19;;3987:33;;4067:3;4052:19;;;4039:33;;-1:-1:-1;3421:657:150;-1:-1:-1;;3421:657:150:o;4083:726::-;4193:6;4201;4209;4217;4225;4233;4241;4294:3;4282:9;4273:7;4269:23;4265:33;4262:53;;;4311:1;4308;4301:12;4262:53;4350:9;4337:23;4369:31;4394:5;4369:31;:::i;:::-;4419:5;-1:-1:-1;4471:2:150;4456:18;;4443:32;;-1:-1:-1;4522:2:150;4507:18;;4494:32;;-1:-1:-1;4573:2:150;4558:18;;4545:32;;-1:-1:-1;4629:3:150;4614:19;;4601:33;4643:30;4601:33;4643:30;:::i;:::-;4083:726;;;;-1:-1:-1;4083:726:150;;;;4692:7;4746:3;4731:19;;4718:33;;-1:-1:-1;4798:3:150;4783:19;;;4770:33;;4083:726;-1:-1:-1;;4083:726:150:o;4814:798::-;4907:6;4960:2;4948:9;4939:7;4935:23;4931:32;4928:52;;;4976:1;4973;4966:12;4928:52;5025:7;5018:4;5007:9;5003:20;4999:34;4989:62;;5047:1;5044;5037:12;4989:62;5080:2;5074:9;5122:2;5114:6;5110:15;5191:6;5179:10;5176:22;5155:18;5143:10;5140:34;5137:62;5134:88;;;5202:18;;:::i;:::-;5242:10;5238:2;5231:22;;5273:6;5299:9;5343:7;5338:2;5327:9;5323:18;5320:31;5317:51;;;5364:1;5361;5354:12;5317:51;5386:1;5396:185;5410:4;5407:1;5404:11;5396:185;;;5469:10;;5457:23;;5503:4;5527:12;;;;5559;;;;5430:1;5423:9;5396:185;;;-1:-1:-1;5600:6:150;;4814:798;-1:-1:-1;;;;;4814:798:150:o;5617:437::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;5820:9;5807:23;5853:18;5845:6;5842:30;5839:50;;;5885:1;5882;5875:12;5839:50;5924:70;5986:7;5977:6;5966:9;5962:22;5924:70;:::i;:::-;6013:8;;5898:96;;-1:-1:-1;5617:437:150;-1:-1:-1;;;;5617:437:150:o;6059:964::-;6212:6;6220;6228;6236;6289:2;6277:9;6268:7;6264:23;6260:32;6257:52;;;6305:1;6302;6295:12;6257:52;6345:9;6332:23;6374:18;6415:2;6407:6;6404:14;6401:34;;;6431:1;6428;6421:12;6401:34;6470:70;6532:7;6523:6;6512:9;6508:22;6470:70;:::i;:::-;6559:8;;-1:-1:-1;6444:96:150;-1:-1:-1;6647:2:150;6632:18;;6619:32;;-1:-1:-1;6663:16:150;;;6660:36;;;6692:1;6689;6682:12;6660:36;6730:8;6719:9;6715:24;6705:34;;6777:7;6770:4;6766:2;6762:13;6758:27;6748:55;;6799:1;6796;6789:12;6748:55;6839:2;6826:16;6865:2;6857:6;6854:14;6851:34;;;6881:1;6878;6871:12;6851:34;6937:7;6932:2;6924:4;6916:6;6912:17;6908:2;6904:26;6900:35;6897:48;6894:68;;;6958:1;6955;6948:12;6894:68;6059:964;;;;-1:-1:-1;;6989:2:150;6981:11;;-1:-1:-1;;;6059:964:150:o;7028:1088::-;7186:6;7194;7202;7210;7218;7226;7279:2;7267:9;7258:7;7254:23;7250:32;7247:52;;;7295:1;7292;7285:12;7247:52;7335:9;7322:23;7364:18;7405:2;7397:6;7394:14;7391:34;;;7421:1;7418;7411:12;7391:34;7460:70;7522:7;7513:6;7502:9;7498:22;7460:70;:::i;:::-;7549:8;;-1:-1:-1;7434:96:150;-1:-1:-1;7637:2:150;7622:18;;7609:32;;-1:-1:-1;7653:16:150;;;7650:36;;;7682:1;7679;7672:12;7650:36;7721:72;7785:7;7774:8;7763:9;7759:24;7721:72;:::i;:::-;7812:8;;-1:-1:-1;7695:98:150;-1:-1:-1;7900:2:150;7885:18;;7872:32;;-1:-1:-1;7916:16:150;;;7913:36;;;7945:1;7942;7935:12;7913:36;;7984:72;8048:7;8037:8;8026:9;8022:24;7984:72;:::i;:::-;7028:1088;;;;-1:-1:-1;7028:1088:150;;-1:-1:-1;7028:1088:150;;8075:8;;7028:1088;-1:-1:-1;;;7028:1088:150:o;8121:245::-;8188:6;8241:2;8229:9;8220:7;8216:23;8212:32;8209:52;;;8257:1;8254;8247:12;8209:52;8289:9;8283:16;8308:28;8330:5;8308:28;:::i;8371:183::-;8440:6;8493:2;8481:9;8472:7;8468:23;8464:32;8461:52;;;8509:1;8506;8499:12;8461:52;-1:-1:-1;8532:16:150;;8371:183;-1:-1:-1;8371:183:150:o;8559:225::-;8642:6;8695:3;8683:9;8674:7;8670:23;8666:33;8663:53;;;8712:1;8709;8702:12;8663:53;8735:43;8770:7;8759:9;8735:43;:::i;8789:500::-;8907:6;8915;8923;8931;8939;8992:3;8980:9;8971:7;8967:23;8963:33;8960:53;;;9009:1;9006;8999:12;8960:53;9032:43;9067:7;9056:9;9032:43;:::i;:::-;9022:53;9122:3;9107:19;;9094:33;;-1:-1:-1;9174:3:150;9159:19;;9146:33;;9226:3;9211:19;;9198:33;;-1:-1:-1;9278:3:150;9263:19;9250:33;;-1:-1:-1;8789:500:150;-1:-1:-1;;;8789:500:150:o;9294:180::-;9353:6;9406:2;9394:9;9385:7;9381:23;9377:32;9374:52;;;9422:1;9419;9412:12;9374:52;-1:-1:-1;9445:23:150;;9294:180;-1:-1:-1;9294:180:150:o;9668:841::-;9799:6;9807;9815;9823;9831;9884:2;9872:9;9863:7;9859:23;9855:32;9852:52;;;9900:1;9897;9890:12;9852:52;9936:9;9923:23;9913:33;;9997:2;9986:9;9982:18;9969:32;10020:18;10061:2;10053:6;10050:14;10047:34;;;10077:1;10074;10067:12;10047:34;10116:70;10178:7;10169:6;10158:9;10154:22;10116:70;:::i;:::-;10205:8;;-1:-1:-1;10090:96:150;-1:-1:-1;10293:2:150;10278:18;;10265:32;;-1:-1:-1;10309:16:150;;;10306:36;;;10338:1;10335;10328:12;10306:36;;10377:72;10441:7;10430:8;10419:9;10415:24;10377:72;:::i;:::-;9668:841;;;;-1:-1:-1;9668:841:150;;-1:-1:-1;10468:8:150;;10351:98;9668:841;-1:-1:-1;;;9668:841:150:o;10514:377::-;10588:6;10596;10604;10657:2;10645:9;10636:7;10632:23;10628:32;10625:52;;;10673:1;10670;10663:12;10625:52;10709:9;10696:23;10686:33;;10769:2;10758:9;10754:18;10741:32;10782:28;10804:5;10782:28;:::i;:::-;10514:377;;10829:5;;-1:-1:-1;;;10881:2:150;10866:18;;;;10853:32;;10514:377::o;10896:446::-;10979:6;10987;10995;11003;11056:3;11044:9;11035:7;11031:23;11027:33;11024:53;;;11073:1;11070;11063:12;11024:53;11109:9;11096:23;11086:33;;11169:2;11158:9;11154:18;11141:32;11182:28;11204:5;11182:28;:::i;:::-;10896:446;;11229:5;;-1:-1:-1;;;;11281:2:150;11266:18;;11253:32;;11332:2;11317:18;11304:32;;10896:446::o;11347:515::-;11439:6;11447;11455;11463;11471;11524:3;11512:9;11503:7;11499:23;11495:33;11492:53;;;11541:1;11538;11531:12;11492:53;11577:9;11564:23;11554:33;;11637:2;11626:9;11622:18;11609:32;11650:28;11672:5;11650:28;:::i;:::-;11347:515;;11697:5;;-1:-1:-1;;;;11749:2:150;11734:18;;11721:32;;11800:2;11785:18;;11772:32;;11851:3;11836:19;;;11823:33;;-1:-1:-1;11347:515:150:o;11867:453::-;11961:6;11969;11977;11985;11993;12046:3;12034:9;12025:7;12021:23;12017:33;12014:53;;;12063:1;12060;12053:12;12014:53;-1:-1:-1;;12086:23:150;;;12156:2;12141:18;;12128:32;;-1:-1:-1;12207:2:150;12192:18;;12179:32;;12258:2;12243:18;;12230:32;;-1:-1:-1;12309:3:150;12294:19;12281:33;;-1:-1:-1;11867:453:150;-1:-1:-1;11867:453:150:o;12325:341::-;12424:6;12432;12476:9;12467:7;12463:23;12506:3;12502:2;12498:12;12495:32;;;12523:1;12520;12513:12;12495:32;12546:23;;;-1:-1:-1;12603:2:150;-1:-1:-1;;12585:16:150;;12581:25;12578:45;;;12619:1;12616;12609:12;12578:45;;12657:2;12646:9;12642:18;12632:28;;12325:341;;;;;:::o;12671:248::-;12739:6;12747;12800:2;12788:9;12779:7;12775:23;12771:32;12768:52;;;12816:1;12813;12806:12;12768:52;-1:-1:-1;;12839:23:150;;;12909:2;12894:18;;;12881:32;;-1:-1:-1;12671:248:150:o;12924:446::-;13007:6;13015;13023;13031;13084:3;13072:9;13063:7;13059:23;13055:33;13052:53;;;13101:1;13098;13091:12;13052:53;13137:9;13124:23;13114:33;;13194:2;13183:9;13179:18;13166:32;13156:42;;13248:2;13237:9;13233:18;13220:32;13261:28;13283:5;13261:28;:::i;:::-;12924:446;;;;-1:-1:-1;13308:5:150;;13360:2;13345:18;13332:32;;-1:-1:-1;;12924:446:150:o;13375:316::-;13452:6;13460;13468;13521:2;13509:9;13500:7;13496:23;13492:32;13489:52;;;13537:1;13534;13527:12;13489:52;-1:-1:-1;;13560:23:150;;;13630:2;13615:18;;13602:32;;-1:-1:-1;13681:2:150;13666:18;;;13653:32;;13375:316;-1:-1:-1;13375:316:150:o;13696:385::-;13782:6;13790;13798;13806;13859:3;13847:9;13838:7;13834:23;13830:33;13827:53;;;13876:1;13873;13866:12;13827:53;-1:-1:-1;;13899:23:150;;;13969:2;13954:18;;13941:32;;-1:-1:-1;14020:2:150;14005:18;;13992:32;;14071:2;14056:18;14043:32;;-1:-1:-1;13696:385:150;-1:-1:-1;13696:385:150:o;14086:354::-;14174:19;;;14156:3;-1:-1:-1;;;;;14205:31:150;;14202:51;;;14249:1;14246;14239:12;14202:51;14285:6;14282:1;14278:14;14337:8;14330:5;14323:4;14318:3;14314:14;14301:45;14414:1;14369:18;;14389:4;14365:29;14403:13;;;-1:-1:-1;14365:29:150;;14086:354;-1:-1:-1;;14086:354:150:o;15287:1345::-;15683:2;15695:21;;;15765:13;;15668:18;;;15787:22;;;15635:4;;15828:2;;15846:18;;;;15883:4;15910:15;;;15635:4;15953:191;15967:6;15964:1;15961:13;15953:191;;;16016:48;16060:3;16051:6;16045:13;14521:12;;14509:25;;14583:4;14572:16;;;14566:23;14550:14;;;14543:47;14639:4;14628:16;;;14622:23;14606:14;;14599:47;14445:207;16016:48;16084:12;;;;16119:15;;;;15989:1;15982:9;15953:191;;;-1:-1:-1;;16180:19:150;;;16160:18;;;16153:47;16250:13;;16272:21;;;16348:15;;;;16311:12;;;-1:-1:-1;16383:1:150;16393:211;16409:8;16404:3;16401:17;16393:211;;;16464:52;16510:5;16499:8;16493:15;14521:12;;14509:25;;14583:4;14572:16;;;14566:23;14550:14;;;14543:47;14639:4;14628:16;;;14622:23;14606:14;;14599:47;14445:207;16464:52;16577:17;;;;16538:14;;;;16437:1;16428:11;16393:211;;;-1:-1:-1;16621:5:150;;15287:1345;-1:-1:-1;;;;;;;;15287:1345:150:o;21070:590::-;21375:6;21364:9;21357:25;21418:2;21413;21402:9;21398:18;21391:30;21338:4;21444:73;21513:2;21502:9;21498:18;21490:6;21482;21444:73;:::i;:::-;21565:9;21557:6;21553:22;21548:2;21537:9;21533:18;21526:50;21593:61;21647:6;21639;21631;21593:61;:::i;23809:250::-;23876:2;23870:9;23918:6;23906:19;;23955:18;23940:34;;23976:22;;;23937:62;23934:88;;;24002:18;;:::i;:::-;24038:2;24031:22;23809:250;:::o;24064:265::-;24103:3;24131:9;;;24156:10;;-1:-1:-1;;;;;24175:27:150;;;24168:35;;24152:52;24149:78;;;24207:18;;:::i;:::-;-1:-1:-1;;;24254:19:150;;;24247:27;;24239:36;;24236:62;;;24278:18;;:::i;:::-;-1:-1:-1;;24314:9:150;;24064:265::o;24334:128::-;24374:3;24405:1;24401:6;24398:1;24395:13;24392:39;;;24411:18;;:::i;:::-;-1:-1:-1;24447:9:150;;24334:128::o;24467:193::-;24506:1;24532;24522:35;;24537:18;;:::i;:::-;-1:-1:-1;;;24573:18:150;;-1:-1:-1;;24593:13:150;;24569:38;24566:64;;;24610:18;;:::i;:::-;-1:-1:-1;24644:10:150;;24467:193::o;24665:120::-;24705:1;24731;24721:35;;24736:18;;:::i;:::-;-1:-1:-1;24770:9:150;;24665:120::o;24790:553::-;24829:7;-1:-1:-1;;;;;24899:9:150;;;24927;;;24952:11;;;24971:10;;;24965:17;;24948:35;24945:61;;;24986:18;;:::i;:::-;-1:-1:-1;;;25062:1:150;25055:9;;25080:11;;;25100;;;25093:19;;25076:37;25073:63;;;25116:18;;:::i;:::-;25162:1;25159;25155:9;25145:19;;25209:1;25205:2;25200:11;25197:1;25193:19;25188:2;25184;25180:11;25176:37;25173:63;;;25216:18;;:::i;:::-;25281:1;25277:2;25272:11;25269:1;25265:19;25260:2;25256;25252:11;25248:37;25245:63;;;25288:18;;:::i;:::-;-1:-1:-1;;;25328:9:150;;;;;24790:553;-1:-1:-1;;;24790:553:150:o;25348:168::-;25388:7;25454:1;25450;25446:6;25442:14;25439:1;25436:21;25431:1;25424:9;25417:17;25413:45;25410:71;;;25461:18;;:::i;:::-;-1:-1:-1;25501:9:150;;25348:168::o;25521:267::-;25560:4;25589:9;;;25614:10;;-1:-1:-1;;;25633:19:150;;25626:27;;25610:44;25607:70;;;25657:18;;:::i;:::-;-1:-1:-1;;;;;25704:27:150;;25697:35;;25689:44;;25686:70;;;25736:18;;:::i;:::-;-1:-1:-1;;25773:9:150;;25521:267::o;25793:125::-;25833:4;25861:1;25858;25855:8;25852:34;;;25866:18;;:::i;:::-;-1:-1:-1;25903:9:150;;25793:125::o;25923:136::-;25958:3;-1:-1:-1;;;25979:22:150;;25976:48;;;26004:18;;:::i;:::-;-1:-1:-1;26044:1:150;26040:13;;25923:136::o;26064:127::-;26125:10;26120:3;26116:20;26113:1;26106:31;26156:4;26153:1;26146:15;26180:4;26177:1;26170:15;26196:127;26257:10;26252:3;26248:20;26245:1;26238:31;26288:4;26285:1;26278:15;26312:4;26309:1;26302:15;26328:127;26389:10;26384:3;26380:20;26377:1;26370:31;26420:4;26417:1;26410:15;26444:4;26441:1;26434:15;26460:127;26521:10;26516:3;26512:20;26509:1;26502:31;26552:4;26549:1;26542:15;26576:4;26573:1;26566:15;26592:127;26653:10;26648:3;26644:20;26641:1;26634:31;26684:4;26681:1;26674:15;26708:4;26705:1;26698:15;27031:131;-1:-1:-1;;;;;27106:31:150;;27096:42;;27086:70;;27152:1;27149;27142:12;27086:70;27031:131;:::o;27167:118::-;27253:5;27246:13;27239:21;27232:5;27229:32;27219:60;;27275:1;27272;27265:12","linkReferences":{}},"methodIdentifiers":{"getAccRolloverFeesLong(uint256)":"7d827137","getAccRolloverFeesShort(uint256)":"726219f3","getAccRolloverFeesUpdateBlock(uint256)":"0e0052fc","getBlendedSkew(uint256,bool,uint256,uint256)":"6676d850","getBlendedUtilizationRatio(uint256,uint256,uint256)":"c9533ebc","getOnePercentDepthAbove(uint256)":"cfc23e9e","getOnePercentDepthBelow(uint256)":"2b180a7d","getPairInfos(uint256[])":"0ea77770","getPendingAccRolloverFees(uint256)":"ab21a05c","getPriceImpactSpread(uint256,bool,uint256)":"fcfe7378","getRolloverFeePerBlockP(uint256)":"338139ad","getSkewImpactSpread(uint256,bool,uint256)":"890801de","getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":"fe3cfd8c","getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":"6bc84d59","getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":"7d36dda8","getTradePriceImpact(uint256,uint256,bool,uint256)":"7ea95f32","getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":"05098272","getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":"fdd3265f","getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256)":"0b224e87","getTradeValuePure(uint256,int256,uint256,uint256,uint256)":"75923b9d","initialize(address,address)":"485cc955","keeper()":"aced1661","liqThreshold()":"ae2293d7","longSkewConfig(uint256,uint256)":"6a3ca5fd","lossProtectionNumTiers(uint256)":"1f4934a1","lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":"82d317b2","manager()":"481c6a75","pairParams(uint256)":"42dee1ad","pairRolloverFees(uint256)":"bf1db1f6","pairsStorage()":"35b03c17","setKeeper(address)":"748747e6","setLossProtectionConfig(uint256,uint256[],uint256[])":"cf2befd2","setManager(address)":"d0ebdbe7","setOnePercentDepth(uint256,uint256,uint256)":"f6960654","setOnePercentDepthArray(uint256[],uint256[],uint256[])":"351533e7","setPairParams(uint256,(uint256,uint256,uint256))":"eb95e10c","setPairParamsArray(uint256[],(uint256,uint256,uint256)[])":"867a60c2","setRolloverFeePerBlockP(uint256,uint256)":"b74243ba","shortSkewConfig(uint256,uint256)":"183566d4","storageT()":"16fff074","storeTradeInitialAccFees(address,uint256,uint256,bool)":"0e6bc39a","tradeInitialAccFees(address,uint256,uint256)":"5ed5804e","udpateLiquidationThreshold(uint256)":"c21fbef8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueLong\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueShort\",\"type\":\"uint256\"}],\"name\":\"AccRolloverFeesStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierCoeffMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"CoeffUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierDenom\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"DenomUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"name\":\"FeesCharged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"}],\"name\":\"KeeperUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"LiqThresholdUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"longSkewConfig\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"shortSkewConfig\",\"type\":\"uint256[]\"}],\"name\":\"LossProtectionConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"ManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MaxNegativePnlOnOpenPUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minMultiplierRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMultiplierRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"MultiplierUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueAbove\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueBelow\",\"type\":\"uint256\"}],\"name\":\"OnePercentDepthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IPairInfos.PairParams\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"PairParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"RolloverFeePerBlockPUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rollover\",\"type\":\"uint256\"}],\"name\":\"TradeInitialAccFeesStored\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesUpdateBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_longOI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_shortOI\",\"type\":\"uint256\"}],\"name\":\"getBlendedSkew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_longOI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_shortOI\",\"type\":\"uint256\"}],\"name\":\"getBlendedUtilizationRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getOnePercentDepthAbove\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getOnePercentDepthBelow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"getPairInfos\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"accPerOiLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accPerOiShort\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairRolloverFees[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getPendingAccRolloverFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valueLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueShort\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isBuy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_leveragePosition\",\"type\":\"uint256\"}],\"name\":\"getPriceImpactSpread\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"spread\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getRolloverFeePerBlockP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isBuy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_leveragePosition\",\"type\":\"uint256\"}],\"name\":\"getSkewImpactSpread\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"spread\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTradeInitialAccRolloverFeesPerCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeLiquidationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFee\",\"type\":\"uint256\"}],\"name\":\"getTradeLiquidationPricePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"tradeOpenInterest\",\"type\":\"uint256\"}],\"name\":\"getTradePriceImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"priceAfterImpact\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeRolloverFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"accRolloverFeesPerOi\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAccRolloverFeesPerOi\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeRolloverFeePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"getTradeValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"pnl\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"name\":\"getTradeValuePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"keeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"longSkewConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lossProtectionNumTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"}],\"name\":\"lossProtectionTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairRolloverFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"accPerOiLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accPerOiShort\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsStorage\",\"outputs\":[{\"internalType\":\"contract IPairStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keeper\",\"type\":\"address\"}],\"name\":\"setKeeper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_longSkewConfig\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_shortSkewConfig\",\"type\":\"uint256[]\"}],\"name\":\"setLossProtectionConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueBelow\",\"type\":\"uint256\"}],\"name\":\"setOnePercentDepth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"valuesAbove\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"valuesBelow\",\"type\":\"uint256[]\"}],\"name\":\"setOnePercentDepthArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"setPairParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams[]\",\"name\":\"values\",\"type\":\"tuple[]\"}],\"name\":\"setPairParamsArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setRolloverFeePerBlockP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"shortSkewConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"}],\"name\":\"storeTradeInitialAccFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tradeInitialAccFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rollover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"openedAfterUpdate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newThreshold\",\"type\":\"uint256\"}],\"name\":\"udpateLiquidationThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getAccRolloverFeesLong(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The accumulated rollover fees for long positions\"}},\"getAccRolloverFeesShort(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The accumulated rollover fees for short positions\"}},\"getAccRolloverFeesUpdateBlock(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The last block number where the accumulated rollover fees were updated\"}},\"getBlendedSkew(uint256,bool,uint256,uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"Utlization Ratio in 1e10 precision\"}},\"getBlendedUtilizationRatio(uint256,uint256,uint256)\":{\"params\":{\"_longOI\":\"Long Open Interest\",\"_pairIndex\":\"The index of the trading pair\",\"_shortOI\":\"Short Open Interest\"},\"returns\":{\"_0\":\"Utlization Ratio in 1e10 precision\"}},\"getOnePercentDepthAbove(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The one percent depth above the current price\"}},\"getOnePercentDepthBelow(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The one percent depth below the current price\"}},\"getPairInfos(uint256[])\":{\"params\":{\"indices\":\"An array of indices for which to fetch the pair information\"},\"returns\":{\"_0\":\"PairParams[] and PairRolloverFees[] arrays containing trading pair parameters and rollover fees\"}},\"getPendingAccRolloverFees(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"valueLong\":\"The pending accumulated rollover fees for long positions\",\"valueShort\":\"The pending accumulated rollover fees for short positions\"}},\"getRolloverFeePerBlockP(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The rollover fee per block\"}},\"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)\":{\"params\":{\"index\":\"The index of the trade\",\"pairIndex\":\"The index of the trading pair\",\"trader\":\"Address of the trader\"},\"returns\":{\"_0\":\"The initial accumulated rollover fees for the trade\"}},\"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"params\":{\"collateral\":\"Amount of collateral.\",\"index\":\"Unique index for trade.\",\"leverage\":\"Leverage used in the trade.\",\"long\":\"True if it's a long position, false otherwise.\",\"openPrice\":\"Opening price of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"Calculated liquidation price.\"}},\"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)\":{\"params\":{\"collateral\":\"The collateral for the trade\",\"leverage\":\"The leverage for the trade\",\"long\":\"Indicates if the position is long\",\"openPrice\":\"The opening price of the trade\",\"rolloverFee\":\"The rollover fee for the trade\"},\"returns\":{\"_0\":\"The liquidation price\"}},\"getTradePriceImpact(uint256,uint256,bool,uint256)\":{\"params\":{\"long\":\"True if it's a long position, false otherwise.\",\"openPrice\":\"Opening price of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"tradeOpenInterest\":\"Open interest of the trade.\"},\"returns\":{\"priceAfterImpact\":\"Price after taking impact into account.\"}},\"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)\":{\"params\":{\"collateral\":\"The collateral for the trade\",\"index\":\"The index of the trade\",\"leverage\":\"The leverage for the trade\",\"long\":\"Indicates if the position is long\",\"pairIndex\":\"The index of the trading pair\",\"trader\":\"Address of the trader\"},\"returns\":{\"_0\":\"The trade rollover fee\"}},\"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)\":{\"params\":{\"accRolloverFeesPerOi\":\"Accumulated rollover fees per open interest\",\"collateral\":\"The collateral for the trade\",\"endAccRolloverFeesPerOi\":\"End accumulated rollover fees per open interest\",\"leverage\":\"The leverage for the trade\"},\"returns\":{\"_0\":\"The trade rollover fee\"}},\"getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256)\":{\"details\":\"Get trade value, PnL, and fees.\",\"params\":{\"_tier\":\"Loss protection tier.\",\"_trade\":\"Details of the trade.\",\"closingFee\":\"Closing fee.\",\"collateral\":\"Amount of collateral.\",\"percentProfit\":\"Profit percentage.\"}},\"getTradeValuePure(uint256,int256,uint256,uint256,uint256)\":{\"params\":{\"closingFee\":\"The closing fee for the trade\",\"collateral\":\"The collateral for the trade\",\"lossProtection\":\"The loss protection for the trade\",\"percentProfit\":\"The percent profit for the trade\",\"rolloverFee\":\"The rollover fee for the trade\"},\"returns\":{\"_0\":\"The trade value, profit and loss, and fees\"}},\"initialize(address,address)\":{\"details\":\"Initialize the PairInfos Proxy.\",\"params\":{\"_pairsStorage\":\"Address of the IPairStorage contract.\",\"_storageT\":\"Address of the ITradingStorage contract.\"}},\"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"params\":{\"_trade\":\"The trade object containing details of the trade\"},\"returns\":{\"_0\":\"The index of the loss protection tier\"}},\"setKeeper(address)\":{\"details\":\"Set the Keeper address.\",\"params\":{\"_keeper\":\"Address of the new Keeper.\"}},\"setLossProtectionConfig(uint256,uint256[],uint256[])\":{\"details\":\"Set loss protection configuration for a pair index.\",\"params\":{\"_longSkewConfig\":\"Configuration for long skew.\",\"_pairIndex\":\"The pair index to configure.\",\"_shortSkewConfig\":\"Configuration for short skew.\"}},\"setManager(address)\":{\"details\":\"Set the manager address.\",\"params\":{\"_manager\":\"Address of the new manager.\"}},\"setOnePercentDepth(uint256,uint256,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\",\"valueAbove\":\"The value above the one percent depth\",\"valueBelow\":\"The value below the one percent depth\"}},\"setOnePercentDepthArray(uint256[],uint256[],uint256[])\":{\"params\":{\"indices\":\"The index array of the trading pair\",\"valuesAbove\":\"The value array above the one percent depth\",\"valuesBelow\":\"The value array below the one percent depth\"}},\"setPairParams(uint256,(uint256,uint256,uint256))\":{\"details\":\"Set parameters for a trading pair.\",\"params\":{\"pairIndex\":\"Index of the trading pair.\",\"value\":\"Parameters to set.\"}},\"setPairParamsArray(uint256[],(uint256,uint256,uint256)[])\":{\"details\":\"Set parameters for a trading pairs.\",\"params\":{\"indices\":\"Index array of the trading pair.\",\"values\":\"Parameters Array to set.\"}},\"setRolloverFeePerBlockP(uint256,uint256)\":{\"details\":\"Set rollover fee per block for a trading pair.\",\"params\":{\"pairIndex\":\"Index of the trading pair.\",\"value\":\"Fee value to set.\"}},\"storeTradeInitialAccFees(address,uint256,uint256,bool)\":{\"details\":\"Called while registering trade. Stores margin fee accumulator at start of a trade\",\"params\":{\"index\":\"Index of the trade.\",\"long\":\"Whether the trade is long or not.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"udpateLiquidationThreshold(uint256)\":{\"details\":\"Set the new Liq Threshold.\",\"params\":{\"_newThreshold\":\"New Liq Threshold\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAccRolloverFeesLong(uint256)\":{\"notice\":\"Retrieves the accumulated rollover fees for long positions for a given pair index\"},\"getAccRolloverFeesShort(uint256)\":{\"notice\":\"Retrieves the accumulated rollover fees for short positions for a given pair index\"},\"getAccRolloverFeesUpdateBlock(uint256)\":{\"notice\":\"Retrieves the last block where the accumulated rollover fees were updated for a given pair index\"},\"getBlendedSkew(uint256,bool,uint256,uint256)\":{\"notice\":\"Retrieves the blended skew ratio\"},\"getBlendedUtilizationRatio(uint256,uint256,uint256)\":{\"notice\":\"Retrieves the blended utlization ratio\"},\"getOnePercentDepthAbove(uint256)\":{\"notice\":\"Get the one percent depth above the current price for the given pair index\"},\"getOnePercentDepthBelow(uint256)\":{\"notice\":\"Retrieves the one percent depth below the current price for a given pair index\"},\"getPairInfos(uint256[])\":{\"notice\":\"Fetches and returns trading pair information for specified indices\"},\"getPendingAccRolloverFees(uint256)\":{\"notice\":\"Retrieves the pending accumulated rollover fees for a given trading pair\"},\"getRolloverFeePerBlockP(uint256)\":{\"notice\":\"Retrieves the rollover fee per block for a given pair index\"},\"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)\":{\"notice\":\"Retrieves the starting rollover fee accumulator of a trade\"},\"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Calculate liquidation price after trade rollover.\"},\"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)\":{\"notice\":\"Calculates the liquidation price of the trade \"},\"getTradePriceImpact(uint256,uint256,bool,uint256)\":{\"notice\":\"Calculate price impact on trade opening. Only for Crypto Group\"},\"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Calculates the trade rollover fee for a given trader and trading pair\"},\"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the trade rollover fee for accumulated Roll over fees\"},\"getTradeValuePure(uint256,int256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the Pnl, fees and pnl adjusted collateral\"},\"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))\":{\"notice\":\"Calculate and return the loss protection tier for a given trade based on current skew\"},\"setOnePercentDepth(uint256,uint256,uint256)\":{\"notice\":\"Sets the one percent depth values for a trading pair\"},\"setOnePercentDepthArray(uint256[],uint256[],uint256[])\":{\"notice\":\"Sets the one percent depth values for a trading pairs\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PairInfos.sol\":\"PairInfos\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"src/PairInfos.sol\":{\"keccak256\":\"0x29b2df3fb4252356546c2de0997972fd1beaed0e19bf5af32fc10313a49eddf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d522cba75f11147d4590f4b893e247443c9c7fc8593a1b914273ed6713e17d4b\",\"dweb:/ipfs/QmdYmFk3VrsyE62cS9iLiMh46jH3tc4G7a2Fp5y5FmXG5W\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712\",\"dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b\",\"dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0xf9fe387fdcef5ddd217632154ff64741f6b2d7f944b45e985a9a326799f13003\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a214b58dc1ec86de11ed4fed6e63afd51b793a1bbdca99e1d46abf4efa931d43\",\"dweb:/ipfs/QmckDVNNeMv6MdYgih78SAfhFNtGtrM4D4wRMdaAE2riCu\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616\",\"dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a\",\"dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b\",\"dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6\",\"dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]},\"src/library/abdkQuadMathExt.sol\":{\"keccak256\":\"0x0864fad17ea2b66623123b22aff58f755bb39e796382489958409fc738ac9f30\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://0edbc2d9781f78f5bc44973ad85cf27416b2ed1e3ff101169fa77422c9125dab\",\"dweb:/ipfs/QmfRaf6p4myGY85A48TVi7jEKiqP6GtV1Ymz553dJYhNoC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueLong","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueShort","type":"uint256","indexed":false}],"type":"event","name":"AccRolloverFeesStored","anonymous":false},{"inputs":[{"internalType":"uint256","name":"multiplierCoeffMax","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"CoeffUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"multiplierDenom","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"DenomUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"buy","type":"bool","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false},{"internalType":"uint256","name":"leverage","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"r","type":"uint256","indexed":false},{"internalType":"uint256","name":"closingFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtection","type":"uint256","indexed":false}],"type":"event","name":"FeesCharged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"keeper","type":"address","indexed":false}],"type":"event","name":"KeeperUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256","indexed":false}],"type":"event","name":"LiqThresholdUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"numTiers","type":"uint256","indexed":false},{"internalType":"uint256[]","name":"longSkewConfig","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"shortSkewConfig","type":"uint256[]","indexed":false}],"type":"event","name":"LossProtectionConfigSet","anonymous":false},{"inputs":[{"internalType":"address","name":"value","type":"address","indexed":false}],"type":"event","name":"ManagerUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MaxNegativePnlOnOpenPUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"minMultiplierRate","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMultiplierRate","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"MultiplierUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueAbove","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueBelow","type":"uint256","indexed":false}],"type":"event","name":"OnePercentDepthUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"struct IPairInfos.PairParams","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}],"indexed":false}],"type":"event","name":"PairParamsUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"RolloverFeePerBlockPUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"rollover","type":"uint256","indexed":false}],"type":"event","name":"TradeInitialAccFeesStored","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesLong","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesShort","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesUpdateBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_long","type":"bool"},{"internalType":"uint256","name":"_longOI","type":"uint256"},{"internalType":"uint256","name":"_shortOI","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlendedSkew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_longOI","type":"uint256"},{"internalType":"uint256","name":"_shortOI","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlendedUtilizationRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOnePercentDepthAbove","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOnePercentDepthBelow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"getPairInfos","outputs":[{"internalType":"struct IPairInfos.PairParams[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]},{"internalType":"struct IPairInfos.PairRolloverFees[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"accPerOiLong","type":"uint256"},{"internalType":"uint256","name":"accPerOiShort","type":"uint256"},{"internalType":"uint256","name":"lastUpdateBlock","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPendingAccRolloverFees","outputs":[{"internalType":"uint256","name":"valueLong","type":"uint256"},{"internalType":"uint256","name":"valueShort","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isBuy","type":"bool"},{"internalType":"uint256","name":"_leveragePosition","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPriceImpactSpread","outputs":[{"internalType":"int256","name":"spread","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRolloverFeePerBlockP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isBuy","type":"bool"},{"internalType":"uint256","name":"_leveragePosition","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSkewImpactSpread","outputs":[{"internalType":"int256","name":"spread","type":"int256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeInitialAccRolloverFeesPerCollateral","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeLiquidationPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"rolloverFee","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeLiquidationPricePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"tradeOpenInterest","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradePriceImpact","outputs":[{"internalType":"uint256","name":"priceAfterImpact","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeRolloverFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"accRolloverFeesPerOi","type":"uint256"},{"internalType":"uint256","name":"endAccRolloverFeesPerOi","type":"uint256"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getTradeRolloverFeePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"int256","name":"percentProfit","type":"int256"},{"internalType":"uint256","name":"closingFee","type":"uint256"},{"internalType":"uint256","name":"_tier","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getTradeValue","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"int256","name":"pnl","type":"int256"},{"internalType":"uint256","name":"fees","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"int256","name":"percentProfit","type":"int256"},{"internalType":"uint256","name":"rolloverFee","type":"uint256"},{"internalType":"uint256","name":"closingFee","type":"uint256"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeValuePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairsStorage","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"liqThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"longSkewConfig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtectionNumTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]}],"stateMutability":"view","type":"function","name":"lossProtectionTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairParams","outputs":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairRolloverFees","outputs":[{"internalType":"uint256","name":"accPerOiLong","type":"uint256"},{"internalType":"uint256","name":"accPerOiShort","type":"uint256"},{"internalType":"uint256","name":"lastUpdateBlock","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsStorage","outputs":[{"internalType":"contract IPairStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setKeeper"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256[]","name":"_longSkewConfig","type":"uint256[]"},{"internalType":"uint256[]","name":"_shortSkewConfig","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setLossProtectionConfig"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setManager"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"valueAbove","type":"uint256"},{"internalType":"uint256","name":"valueBelow","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOnePercentDepth"},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"},{"internalType":"uint256[]","name":"valuesAbove","type":"uint256[]"},{"internalType":"uint256[]","name":"valuesBelow","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setOnePercentDepthArray"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"struct IPairInfos.PairParams","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setPairParams"},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"},{"internalType":"struct IPairInfos.PairParams[]","name":"values","type":"tuple[]","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setPairParamsArray"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRolloverFeePerBlockP"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"shortSkewConfig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storeTradeInitialAccFees"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tradeInitialAccFees","outputs":[{"internalType":"uint256","name":"rollover","type":"uint256"},{"internalType":"bool","name":"openedAfterUpdate","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"udpateLiquidationThreshold"}],"devdoc":{"kind":"dev","methods":{"getAccRolloverFeesLong(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The accumulated rollover fees for long positions"}},"getAccRolloverFeesShort(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The accumulated rollover fees for short positions"}},"getAccRolloverFeesUpdateBlock(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The last block number where the accumulated rollover fees were updated"}},"getBlendedSkew(uint256,bool,uint256,uint256)":{"params":{"_pairIndex":"The index of the trading pair"},"returns":{"_0":"Utlization Ratio in 1e10 precision"}},"getBlendedUtilizationRatio(uint256,uint256,uint256)":{"params":{"_longOI":"Long Open Interest","_pairIndex":"The index of the trading pair","_shortOI":"Short Open Interest"},"returns":{"_0":"Utlization Ratio in 1e10 precision"}},"getOnePercentDepthAbove(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The one percent depth above the current price"}},"getOnePercentDepthBelow(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The one percent depth below the current price"}},"getPairInfos(uint256[])":{"params":{"indices":"An array of indices for which to fetch the pair information"},"returns":{"_0":"PairParams[] and PairRolloverFees[] arrays containing trading pair parameters and rollover fees"}},"getPendingAccRolloverFees(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"valueLong":"The pending accumulated rollover fees for long positions","valueShort":"The pending accumulated rollover fees for short positions"}},"getRolloverFeePerBlockP(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The rollover fee per block"}},"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":{"params":{"index":"The index of the trade","pairIndex":"The index of the trading pair","trader":"Address of the trader"},"returns":{"_0":"The initial accumulated rollover fees for the trade"}},"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":{"params":{"collateral":"Amount of collateral.","index":"Unique index for trade.","leverage":"Leverage used in the trade.","long":"True if it's a long position, false otherwise.","openPrice":"Opening price of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."},"returns":{"_0":"Calculated liquidation price."}},"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":{"params":{"collateral":"The collateral for the trade","leverage":"The leverage for the trade","long":"Indicates if the position is long","openPrice":"The opening price of the trade","rolloverFee":"The rollover fee for the trade"},"returns":{"_0":"The liquidation price"}},"getTradePriceImpact(uint256,uint256,bool,uint256)":{"params":{"long":"True if it's a long position, false otherwise.","openPrice":"Opening price of the trade.","pairIndex":"Index of the trading pair.","tradeOpenInterest":"Open interest of the trade."},"returns":{"priceAfterImpact":"Price after taking impact into account."}},"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":{"params":{"collateral":"The collateral for the trade","index":"The index of the trade","leverage":"The leverage for the trade","long":"Indicates if the position is long","pairIndex":"The index of the trading pair","trader":"Address of the trader"},"returns":{"_0":"The trade rollover fee"}},"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":{"params":{"accRolloverFeesPerOi":"Accumulated rollover fees per open interest","collateral":"The collateral for the trade","endAccRolloverFeesPerOi":"End accumulated rollover fees per open interest","leverage":"The leverage for the trade"},"returns":{"_0":"The trade rollover fee"}},"getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256)":{"details":"Get trade value, PnL, and fees.","params":{"_tier":"Loss protection tier.","_trade":"Details of the trade.","closingFee":"Closing fee.","collateral":"Amount of collateral.","percentProfit":"Profit percentage."}},"getTradeValuePure(uint256,int256,uint256,uint256,uint256)":{"params":{"closingFee":"The closing fee for the trade","collateral":"The collateral for the trade","lossProtection":"The loss protection for the trade","percentProfit":"The percent profit for the trade","rolloverFee":"The rollover fee for the trade"},"returns":{"_0":"The trade value, profit and loss, and fees"}},"initialize(address,address)":{"details":"Initialize the PairInfos Proxy.","params":{"_pairsStorage":"Address of the IPairStorage contract.","_storageT":"Address of the ITradingStorage contract."}},"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"params":{"_trade":"The trade object containing details of the trade"},"returns":{"_0":"The index of the loss protection tier"}},"setKeeper(address)":{"details":"Set the Keeper address.","params":{"_keeper":"Address of the new Keeper."}},"setLossProtectionConfig(uint256,uint256[],uint256[])":{"details":"Set loss protection configuration for a pair index.","params":{"_longSkewConfig":"Configuration for long skew.","_pairIndex":"The pair index to configure.","_shortSkewConfig":"Configuration for short skew."}},"setManager(address)":{"details":"Set the manager address.","params":{"_manager":"Address of the new manager."}},"setOnePercentDepth(uint256,uint256,uint256)":{"params":{"pairIndex":"The index of the trading pair","valueAbove":"The value above the one percent depth","valueBelow":"The value below the one percent depth"}},"setOnePercentDepthArray(uint256[],uint256[],uint256[])":{"params":{"indices":"The index array of the trading pair","valuesAbove":"The value array above the one percent depth","valuesBelow":"The value array below the one percent depth"}},"setPairParams(uint256,(uint256,uint256,uint256))":{"details":"Set parameters for a trading pair.","params":{"pairIndex":"Index of the trading pair.","value":"Parameters to set."}},"setPairParamsArray(uint256[],(uint256,uint256,uint256)[])":{"details":"Set parameters for a trading pairs.","params":{"indices":"Index array of the trading pair.","values":"Parameters Array to set."}},"setRolloverFeePerBlockP(uint256,uint256)":{"details":"Set rollover fee per block for a trading pair.","params":{"pairIndex":"Index of the trading pair.","value":"Fee value to set."}},"storeTradeInitialAccFees(address,uint256,uint256,bool)":{"details":"Called while registering trade. Stores margin fee accumulator at start of a trade","params":{"index":"Index of the trade.","long":"Whether the trade is long or not.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"udpateLiquidationThreshold(uint256)":{"details":"Set the new Liq Threshold.","params":{"_newThreshold":"New Liq Threshold"}}},"version":1},"userdoc":{"kind":"user","methods":{"getAccRolloverFeesLong(uint256)":{"notice":"Retrieves the accumulated rollover fees for long positions for a given pair index"},"getAccRolloverFeesShort(uint256)":{"notice":"Retrieves the accumulated rollover fees for short positions for a given pair index"},"getAccRolloverFeesUpdateBlock(uint256)":{"notice":"Retrieves the last block where the accumulated rollover fees were updated for a given pair index"},"getBlendedSkew(uint256,bool,uint256,uint256)":{"notice":"Retrieves the blended skew ratio"},"getBlendedUtilizationRatio(uint256,uint256,uint256)":{"notice":"Retrieves the blended utlization ratio"},"getOnePercentDepthAbove(uint256)":{"notice":"Get the one percent depth above the current price for the given pair index"},"getOnePercentDepthBelow(uint256)":{"notice":"Retrieves the one percent depth below the current price for a given pair index"},"getPairInfos(uint256[])":{"notice":"Fetches and returns trading pair information for specified indices"},"getPendingAccRolloverFees(uint256)":{"notice":"Retrieves the pending accumulated rollover fees for a given trading pair"},"getRolloverFeePerBlockP(uint256)":{"notice":"Retrieves the rollover fee per block for a given pair index"},"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":{"notice":"Retrieves the starting rollover fee accumulator of a trade"},"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":{"notice":"Calculate liquidation price after trade rollover."},"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":{"notice":"Calculates the liquidation price of the trade "},"getTradePriceImpact(uint256,uint256,bool,uint256)":{"notice":"Calculate price impact on trade opening. Only for Crypto Group"},"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":{"notice":"Calculates the trade rollover fee for a given trader and trading pair"},"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":{"notice":"Calculates the trade rollover fee for accumulated Roll over fees"},"getTradeValuePure(uint256,int256,uint256,uint256,uint256)":{"notice":"Calculates the Pnl, fees and pnl adjusted collateral"},"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256))":{"notice":"Calculate and return the loss protection tier for a given trade based on current skew"},"setOnePercentDepth(uint256,uint256,uint256)":{"notice":"Sets the one percent depth values for a trading pair"},"setOnePercentDepthArray(uint256[],uint256[],uint256[])":{"notice":"Sets the one percent depth values for a trading pairs"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PairInfos.sol":"PairInfos"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"src/PairInfos.sol":{"keccak256":"0x29b2df3fb4252356546c2de0997972fd1beaed0e19bf5af32fc10313a49eddf8","urls":["bzz-raw://d522cba75f11147d4590f4b893e247443c9c7fc8593a1b914273ed6713e17d4b","dweb:/ipfs/QmdYmFk3VrsyE62cS9iLiMh46jH3tc4G7a2Fp5y5FmXG5W"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac","urls":["bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712","dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4","urls":["bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b","dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0xf9fe387fdcef5ddd217632154ff64741f6b2d7f944b45e985a9a326799f13003","urls":["bzz-raw://a214b58dc1ec86de11ed4fed6e63afd51b793a1bbdca99e1d46abf4efa931d43","dweb:/ipfs/QmckDVNNeMv6MdYgih78SAfhFNtGtrM4D4wRMdaAE2riCu"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb","urls":["bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616","dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5","urls":["bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a","dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6","urls":["bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b","dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219","urls":["bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6","dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"},"src/library/abdkQuadMathExt.sol":{"keccak256":"0x0864fad17ea2b66623123b22aff58f755bb39e796382489958409fc738ac9f30","urls":["bzz-raw://0edbc2d9781f78f5bc44973ad85cf27416b2ed1e3ff101169fa77422c9125dab","dweb:/ipfs/QmfRaf6p4myGY85A48TVi7jEKiqP6GtV1Ymz553dJYhNoC"],"license":"BSD-4-Clause"}},"version":1},"ast":{"absolutePath":"src/PairInfos.sol","id":73138,"exportedSymbols":{"ABDKMathQuadExt":[96085],"AddressUpgradeable":[46968],"ICallbacks":[88257],"IERC20":[51481],"IExecute":[88371],"IPairInfos":[88745],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"Math":[53603],"PairInfos":[73137],"PositionMath":[90841]},"nodeType":"SourceUnit","src":"32:26304:103","nodes":[{"id":71104,"nodeType":"PragmaDirective","src":"32:22:103","nodes":[],"literals":["solidity","0.8",".7"]},{"id":71105,"nodeType":"ImportDirective","src":"56:42:103","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":71106,"nodeType":"ImportDirective","src":"99:39:103","nodes":[],"absolutePath":"src/interfaces/IPairStorage.sol","file":"./interfaces/IPairStorage.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":89056,"symbolAliases":[],"unitAlias":""},{"id":71107,"nodeType":"ImportDirective","src":"139:37:103","nodes":[],"absolutePath":"src/interfaces/IPairInfos.sol","file":"./interfaces/IPairInfos.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":88746,"symbolAliases":[],"unitAlias":""},{"id":71108,"nodeType":"ImportDirective","src":"177:53:103","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":53604,"symbolAliases":[],"unitAlias":""},{"id":71109,"nodeType":"ImportDirective","src":"231:75:103","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":43538,"symbolAliases":[],"unitAlias":""},{"id":71111,"nodeType":"ImportDirective","src":"307:56:103","nodes":[],"absolutePath":"src/library/PositionMath.sol","file":"./library/PositionMath.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":90842,"symbolAliases":[{"foreign":{"id":71110,"name":"PositionMath","nodeType":"Identifier","overloadedDeclarations":[],"src":"315:12:103","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":71113,"nodeType":"ImportDirective","src":"364:62:103","nodes":[],"absolutePath":"src/library/abdkQuadMathExt.sol","file":"./library/abdkQuadMathExt.sol","nameLocation":"-1:-1:-1","scope":73138,"sourceUnit":96086,"symbolAliases":[{"foreign":{"id":71112,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"src":"372:15:103","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73137,"nodeType":"ContractDefinition","src":"428:25907:103","nodes":[{"id":71120,"nodeType":"UsingForDirective","src":"482:28:103","nodes":[],"libraryName":{"id":71118,"name":"PositionMath","nodeType":"IdentifierPath","referencedDeclaration":90841,"src":"488:12:103"},"typeName":{"id":71119,"name":"uint","nodeType":"ElementaryTypeName","src":"505:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":71123,"nodeType":"VariableDeclaration","src":"566:39:103","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"588:10:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71121,"name":"uint","nodeType":"ElementaryTypeName","src":"566:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":71122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"601:4:103","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":71126,"nodeType":"VariableDeclaration","src":"612:31:103","nodes":[],"constant":false,"functionSelector":"16fff074","mutability":"mutable","name":"storageT","nameLocation":"635:8:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"},"typeName":{"id":71125,"nodeType":"UserDefinedTypeName","pathNode":{"id":71124,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"612:15:103"},"referencedDeclaration":89943,"src":"612:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"visibility":"public"},{"id":71129,"nodeType":"VariableDeclaration","src":"649:32:103","nodes":[],"constant":false,"functionSelector":"35b03c17","mutability":"mutable","name":"pairsStorage","nameLocation":"669:12:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":71128,"nodeType":"UserDefinedTypeName","pathNode":{"id":71127,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"649:12:103"},"referencedDeclaration":89055,"src":"649:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"public"},{"id":71131,"nodeType":"VariableDeclaration","src":"688:22:103","nodes":[],"constant":false,"functionSelector":"481c6a75","mutability":"mutable","name":"manager","nameLocation":"703:7:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71130,"name":"address","nodeType":"ElementaryTypeName","src":"688:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":71133,"nodeType":"VariableDeclaration","src":"716:21:103","nodes":[],"constant":false,"functionSelector":"aced1661","mutability":"mutable","name":"keeper","nameLocation":"731:6:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71132,"name":"address","nodeType":"ElementaryTypeName","src":"716:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":71135,"nodeType":"VariableDeclaration","src":"743:24:103","nodes":[],"constant":false,"functionSelector":"ae2293d7","mutability":"mutable","name":"liqThreshold","nameLocation":"755:12:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71134,"name":"uint","nodeType":"ElementaryTypeName","src":"743:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":71140,"nodeType":"VariableDeclaration","src":"775:45:103","nodes":[],"constant":false,"functionSelector":"42dee1ad","mutability":"mutable","name":"pairParams","nameLocation":"810:10:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams)"},"typeName":{"id":71139,"keyType":{"id":71136,"name":"uint","nodeType":"ElementaryTypeName","src":"783:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"775:27:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams)"},"valueType":{"id":71138,"nodeType":"UserDefinedTypeName","pathNode":{"id":71137,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"791:10:103"},"referencedDeclaration":88543,"src":"791:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}}},"visibility":"public"},{"id":71145,"nodeType":"VariableDeclaration","src":"826:57:103","nodes":[],"constant":false,"functionSelector":"bf1db1f6","mutability":"mutable","name":"pairRolloverFees","nameLocation":"867:16:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees)"},"typeName":{"id":71144,"keyType":{"id":71141,"name":"uint","nodeType":"ElementaryTypeName","src":"834:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"826:33:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees)"},"valueType":{"id":71143,"nodeType":"UserDefinedTypeName","pathNode":{"id":71142,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"842:16:103"},"referencedDeclaration":88550,"src":"842:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}}},"visibility":"public"},{"id":71154,"nodeType":"VariableDeclaration","src":"889:100:103","nodes":[],"constant":false,"functionSelector":"5ed5804e","mutability":"mutable","name":"tradeInitialAccFees","nameLocation":"970:19:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees)))"},"typeName":{"id":71153,"keyType":{"id":71146,"name":"address","nodeType":"ElementaryTypeName","src":"897:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"889:73:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees)))"},"valueType":{"id":71152,"keyType":{"id":71147,"name":"uint","nodeType":"ElementaryTypeName","src":"916:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"908:53:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees))"},"valueType":{"id":71151,"keyType":{"id":71148,"name":"uint","nodeType":"ElementaryTypeName","src":"932:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"924:36:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$","typeString":"mapping(uint256 => struct IPairInfos.TradeInitialAccFees)"},"valueType":{"id":71150,"nodeType":"UserDefinedTypeName","pathNode":{"id":71149,"name":"TradeInitialAccFees","nodeType":"IdentifierPath","referencedDeclaration":88555,"src":"940:19:103"},"referencedDeclaration":88555,"src":"940:19:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees"}}}}},"visibility":"public"},{"id":71158,"nodeType":"VariableDeclaration","src":"996:51:103","nodes":[],"constant":false,"functionSelector":"1f4934a1","mutability":"mutable","name":"lossProtectionNumTiers","nameLocation":"1025:22:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":71157,"keyType":{"id":71155,"name":"uint","nodeType":"ElementaryTypeName","src":"1004:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"996:21:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":71156,"name":"uint","nodeType":"ElementaryTypeName","src":"1012:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":71163,"nodeType":"VariableDeclaration","src":"1053:45:103","nodes":[],"constant":false,"functionSelector":"6a3ca5fd","mutability":"mutable","name":"longSkewConfig","nameLocation":"1084:14:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"typeName":{"id":71162,"keyType":{"id":71159,"name":"uint","nodeType":"ElementaryTypeName","src":"1061:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1053:23:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"valueType":{"baseType":{"id":71160,"name":"uint","nodeType":"ElementaryTypeName","src":"1069:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71161,"nodeType":"ArrayTypeName","src":"1069:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"public"},{"id":71168,"nodeType":"VariableDeclaration","src":"1104:46:103","nodes":[],"constant":false,"functionSelector":"183566d4","mutability":"mutable","name":"shortSkewConfig","nameLocation":"1135:15:103","scope":73137,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"typeName":{"id":71167,"keyType":{"id":71164,"name":"uint","nodeType":"ElementaryTypeName","src":"1112:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1104:23:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"valueType":{"baseType":{"id":71165,"name":"uint","nodeType":"ElementaryTypeName","src":"1120:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71166,"nodeType":"ArrayTypeName","src":"1120:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"public"},{"id":71182,"nodeType":"ModifierDefinition","src":"1158:96:103","nodes":[],"body":{"id":71181,"nodeType":"Block","src":"1177:77:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71171,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1195:3:103","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":71172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1195:10:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":71173,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"1209:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":71174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gov","nodeType":"MemberAccess","referencedDeclaration":89575,"src":"1209:12:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":71175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1209:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1195:28:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"474f565f4f4e4c59","id":71177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:10:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_e24bb66e7063bdafcf2e5ceff578e6b6ea2c27ad98f30b9e10f9fe144c21c798","typeString":"literal_string \"GOV_ONLY\""},"value":"GOV_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e24bb66e7063bdafcf2e5ceff578e6b6ea2c27ad98f30b9e10f9fe144c21c798","typeString":"literal_string \"GOV_ONLY\""}],"id":71170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1187:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1187:49:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71179,"nodeType":"ExpressionStatement","src":"1187:49:103"},{"id":71180,"nodeType":"PlaceholderStatement","src":"1246:1:103"}]},"name":"onlyGov","nameLocation":"1167:7:103","parameters":{"id":71169,"nodeType":"ParameterList","parameters":[],"src":"1174:2:103"},"virtual":false,"visibility":"internal"},{"id":71194,"nodeType":"ModifierDefinition","src":"1259:97:103","nodes":[],"body":{"id":71193,"nodeType":"Block","src":"1282:74:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71185,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1300:3:103","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":71186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1300:10:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":71187,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71131,"src":"1314:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1300:21:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d414e414745525f4f4e4c59","id":71189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1323:14:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_bfc4eeadb9a41b9ed9921bd2e6042b3a8c7a361462567792911f03fe2de4d7d4","typeString":"literal_string \"MANAGER_ONLY\""},"value":"MANAGER_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bfc4eeadb9a41b9ed9921bd2e6042b3a8c7a361462567792911f03fe2de4d7d4","typeString":"literal_string \"MANAGER_ONLY\""}],"id":71184,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1292:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1292:46:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71191,"nodeType":"ExpressionStatement","src":"1292:46:103"},{"id":71192,"nodeType":"PlaceholderStatement","src":"1348:1:103"}]},"name":"onlyManager","nameLocation":"1268:11:103","parameters":{"id":71183,"nodeType":"ParameterList","parameters":[],"src":"1279:2:103"},"virtual":false,"visibility":"internal"},{"id":71208,"nodeType":"ModifierDefinition","src":"1361:114:103","nodes":[],"body":{"id":71207,"nodeType":"Block","src":"1386:89:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1404:3:103","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":71198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1404:10:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":71199,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"1418:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":71200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"callbacks","nodeType":"MemberAccess","referencedDeclaration":89608,"src":"1418:18:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":71201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1418:20:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1404:34:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43414c4c4241434b535f4f4e4c59","id":71203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1440:16:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""},"value":"CALLBACKS_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""}],"id":71196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1396:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1396:61:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71205,"nodeType":"ExpressionStatement","src":"1396:61:103"},{"id":71206,"nodeType":"PlaceholderStatement","src":"1467:1:103"}]},"name":"onlyCallbacks","nameLocation":"1370:13:103","parameters":{"id":71195,"nodeType":"ParameterList","parameters":[],"src":"1383:2:103"},"virtual":false,"visibility":"internal"},{"id":71223,"nodeType":"ModifierDefinition","src":"1481:102:103","nodes":[],"body":{"id":71222,"nodeType":"Block","src":"1502:81:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71211,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1520:3:103","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":71212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1520:10:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":71215,"name":"keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71133,"src":"1542:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1534:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":71213,"name":"address","nodeType":"ElementaryTypeName","src":"1534:7:103","typeDescriptions":{}}},"id":71216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1534:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1520:29:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4b45455045525f4f4e4c59","id":71218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1551:13:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a1de90421e8c65e72f84fe5324dc5965d89079d8708d9581cfdc758e444bd65","typeString":"literal_string \"KEEPER_ONLY\""},"value":"KEEPER_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a1de90421e8c65e72f84fe5324dc5965d89079d8708d9581cfdc758e444bd65","typeString":"literal_string \"KEEPER_ONLY\""}],"id":71210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1512:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1512:53:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71220,"nodeType":"ExpressionStatement","src":"1512:53:103"},{"id":71221,"nodeType":"PlaceholderStatement","src":"1575:1:103"}]},"name":"onlyKeeper","nameLocation":"1490:10:103","parameters":{"id":71209,"nodeType":"ParameterList","parameters":[],"src":"1500:2:103"},"virtual":false,"visibility":"internal"},{"id":71230,"nodeType":"FunctionDefinition","src":"1593:53:103","nodes":[],"body":{"id":71229,"nodeType":"Block","src":"1607:39:103","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":71226,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"1617:20:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":71227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1617:22:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71228,"nodeType":"ExpressionStatement","src":"1617:22:103"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":71224,"nodeType":"ParameterList","parameters":[],"src":"1604:2:103"},"returnParameters":{"id":71225,"nodeType":"ParameterList","parameters":[],"src":"1607:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":71257,"nodeType":"FunctionDefinition","src":"1842:217:103","nodes":[],"body":{"id":71256,"nodeType":"Block","src":"1925:134:103","nodes":[],"statements":[{"expression":{"id":71244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71240,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"1935:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":71242,"name":"_storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71233,"src":"1962:9:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71241,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"1946:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":71243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1946:26:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"src":"1935:37:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":71245,"nodeType":"ExpressionStatement","src":"1935:37:103"},{"expression":{"id":71250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71246,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"1982:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":71248,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71235,"src":"2010:13:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71247,"name":"IPairStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89055,"src":"1997:12:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairStorage_$89055_$","typeString":"type(contract IPairStorage)"}},"id":71249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1997:27:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"src":"1982:42:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":71251,"nodeType":"ExpressionStatement","src":"1982:42:103"},{"expression":{"id":71254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71252,"name":"liqThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71135,"src":"2034:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3835","id":71253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2050:2:103","typeDescriptions":{"typeIdentifier":"t_rational_85_by_1","typeString":"int_const 85"},"value":"85"},"src":"2034:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71255,"nodeType":"ExpressionStatement","src":"2034:18:103"}]},"documentation":{"id":71231,"nodeType":"StructuredDocumentation","src":"1651:186:103","text":" @dev Initialize the PairInfos Proxy.\n @param _storageT Address of the ITradingStorage contract.\n @param _pairsStorage Address of the IPairStorage contract."},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":71238,"kind":"modifierInvocation","modifierName":{"id":71237,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"1913:11:103"},"nodeType":"ModifierInvocation","src":"1913:11:103"}],"name":"initialize","nameLocation":"1851:10:103","parameters":{"id":71236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71233,"mutability":"mutable","name":"_storageT","nameLocation":"1870:9:103","nodeType":"VariableDeclaration","scope":71257,"src":"1862:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71232,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71235,"mutability":"mutable","name":"_pairsStorage","nameLocation":"1889:13:103","nodeType":"VariableDeclaration","scope":71257,"src":"1881:21:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71234,"name":"address","nodeType":"ElementaryTypeName","src":"1881:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1861:42:103"},"returnParameters":{"id":71239,"nodeType":"ParameterList","parameters":[],"src":"1925:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71284,"nodeType":"FunctionDefinition","src":"2169:192:103","nodes":[],"body":{"id":71283,"nodeType":"Block","src":"2224:137:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71266,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71260,"src":"2242:8:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":71269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":71268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2254:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":71267,"name":"address","nodeType":"ElementaryTypeName","src":"2254:7:103","typeDescriptions":{}}},"id":71270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2254:10:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2242:22:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a45524f5f41444452","id":71272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2266:11:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_d0e2e9985742be8b9e3e68ed91e193f7c2d95ddab84402ef5b99879dae63c601","typeString":"literal_string \"ZERO_ADDR\""},"value":"ZERO_ADDR"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d0e2e9985742be8b9e3e68ed91e193f7c2d95ddab84402ef5b99879dae63c601","typeString":"literal_string \"ZERO_ADDR\""}],"id":71265,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2234:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:44:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71274,"nodeType":"ExpressionStatement","src":"2234:44:103"},{"expression":{"id":71277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71275,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71131,"src":"2297:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71276,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71260,"src":"2307:8:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2297:18:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":71278,"nodeType":"ExpressionStatement","src":"2297:18:103"},{"eventCall":{"arguments":[{"id":71280,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71260,"src":"2345:8:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71279,"name":"ManagerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88559,"src":"2330:14:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":71281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71282,"nodeType":"EmitStatement","src":"2325:29:103"}]},"documentation":{"id":71258,"nodeType":"StructuredDocumentation","src":"2065:99:103","text":" @dev Set the manager address.\n @param _manager Address of the new manager."},"functionSelector":"d0ebdbe7","implemented":true,"kind":"function","modifiers":[{"id":71263,"kind":"modifierInvocation","modifierName":{"id":71262,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":71182,"src":"2216:7:103"},"nodeType":"ModifierInvocation","src":"2216:7:103"}],"name":"setManager","nameLocation":"2178:10:103","parameters":{"id":71261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71260,"mutability":"mutable","name":"_manager","nameLocation":"2197:8:103","nodeType":"VariableDeclaration","scope":71284,"src":"2189:16:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71259,"name":"address","nodeType":"ElementaryTypeName","src":"2189:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2188:18:103"},"returnParameters":{"id":71264,"nodeType":"ParameterList","parameters":[],"src":"2224:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71311,"nodeType":"FunctionDefinition","src":"2469:176:103","nodes":[],"body":{"id":71310,"nodeType":"Block","src":"2521:124:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":71298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71293,"name":"_keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71287,"src":"2539:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":71296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":71295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2550:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":71294,"name":"address","nodeType":"ElementaryTypeName","src":"2550:7:103","typeDescriptions":{}}},"id":71297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2550:10:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2539:21:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a45524f5f41444452","id":71299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2562:11:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_d0e2e9985742be8b9e3e68ed91e193f7c2d95ddab84402ef5b99879dae63c601","typeString":"literal_string \"ZERO_ADDR\""},"value":"ZERO_ADDR"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d0e2e9985742be8b9e3e68ed91e193f7c2d95ddab84402ef5b99879dae63c601","typeString":"literal_string \"ZERO_ADDR\""}],"id":71292,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2531:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2531:43:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71301,"nodeType":"ExpressionStatement","src":"2531:43:103"},{"expression":{"id":71304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71302,"name":"keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71133,"src":"2585:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71303,"name":"_keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71287,"src":"2594:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2585:16:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":71305,"nodeType":"ExpressionStatement","src":"2585:16:103"},{"eventCall":{"arguments":[{"id":71307,"name":"_keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71287,"src":"2630:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71306,"name":"KeeperUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88646,"src":"2616:13:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":71308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2616:22:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71309,"nodeType":"EmitStatement","src":"2611:27:103"}]},"documentation":{"id":71285,"nodeType":"StructuredDocumentation","src":"2368:96:103","text":" @dev Set the Keeper address.\n @param _keeper Address of the new Keeper."},"functionSelector":"748747e6","implemented":true,"kind":"function","modifiers":[{"id":71290,"kind":"modifierInvocation","modifierName":{"id":71289,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":71182,"src":"2514:7:103"},"nodeType":"ModifierInvocation","src":"2514:7:103"}],"name":"setKeeper","nameLocation":"2478:9:103","parameters":{"id":71288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71287,"mutability":"mutable","name":"_keeper","nameLocation":"2496:7:103","nodeType":"VariableDeclaration","scope":71311,"src":"2488:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71286,"name":"address","nodeType":"ElementaryTypeName","src":"2488:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2487:17:103"},"returnParameters":{"id":71291,"nodeType":"ParameterList","parameters":[],"src":"2521:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71328,"nodeType":"FunctionDefinition","src":"2752:176:103","nodes":[],"body":{"id":71327,"nodeType":"Block","src":"2825:103:103","nodes":[],"statements":[{"expression":{"id":71321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71319,"name":"liqThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71135,"src":"2844:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71320,"name":"_newThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71314,"src":"2859:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2844:28:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71322,"nodeType":"ExpressionStatement","src":"2844:28:103"},{"eventCall":{"arguments":[{"id":71324,"name":"_newThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71314,"src":"2907:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71323,"name":"LiqThresholdUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88626,"src":"2887:19:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":71325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2887:34:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71326,"nodeType":"EmitStatement","src":"2882:39:103"}]},"documentation":{"id":71312,"nodeType":"StructuredDocumentation","src":"2651:96:103","text":" @dev Set the new Liq Threshold.\n @param _newThreshold New Liq Threshold"},"functionSelector":"c21fbef8","implemented":true,"kind":"function","modifiers":[{"id":71317,"kind":"modifierInvocation","modifierName":{"id":71316,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":71182,"src":"2817:7:103"},"nodeType":"ModifierInvocation","src":"2817:7:103"}],"name":"udpateLiquidationThreshold","nameLocation":"2761:26:103","parameters":{"id":71315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71314,"mutability":"mutable","name":"_newThreshold","nameLocation":"2793:13:103","nodeType":"VariableDeclaration","scope":71328,"src":"2788:18:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71313,"name":"uint","nodeType":"ElementaryTypeName","src":"2788:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2787:20:103"},"returnParameters":{"id":71318,"nodeType":"ParameterList","parameters":[],"src":"2825:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71345,"nodeType":"FunctionDefinition","src":"3088:136:103","nodes":[],"body":{"id":71344,"nodeType":"Block","src":"3175:49:103","nodes":[],"statements":[{"expression":{"arguments":[{"id":71340,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71331,"src":"3200:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71334,"src":"3211:5:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}],"id":71339,"name":"_setPairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73097,"src":"3185:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_struct$_PairParams_$88543_calldata_ptr_$returns$__$","typeString":"function (uint256,struct IPairInfos.PairParams calldata)"}},"id":71342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3185:32:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71343,"nodeType":"ExpressionStatement","src":"3185:32:103"}]},"documentation":{"id":71329,"nodeType":"StructuredDocumentation","src":"2935:148:103","text":" @dev Set parameters for a trading pair.\n @param pairIndex Index of the trading pair.\n @param value Parameters to set."},"functionSelector":"eb95e10c","implemented":true,"kind":"function","modifiers":[{"id":71337,"kind":"modifierInvocation","modifierName":{"id":71336,"name":"onlyManager","nodeType":"IdentifierPath","referencedDeclaration":71194,"src":"3163:11:103"},"nodeType":"ModifierInvocation","src":"3163:11:103"}],"name":"setPairParams","nameLocation":"3097:13:103","parameters":{"id":71335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71331,"mutability":"mutable","name":"pairIndex","nameLocation":"3116:9:103","nodeType":"VariableDeclaration","scope":71345,"src":"3111:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71330,"name":"uint","nodeType":"ElementaryTypeName","src":"3111:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71334,"mutability":"mutable","name":"value","nameLocation":"3147:5:103","nodeType":"VariableDeclaration","scope":71345,"src":"3127:25:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams"},"typeName":{"id":71333,"nodeType":"UserDefinedTypeName","pathNode":{"id":71332,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"3127:10:103"},"referencedDeclaration":88543,"src":"3127:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"visibility":"internal"}],"src":"3110:43:103"},"returnParameters":{"id":71338,"nodeType":"ParameterList","parameters":[],"src":"3175:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71390,"nodeType":"FunctionDefinition","src":"3395:342:103","nodes":[],"body":{"id":71389,"nodeType":"Block","src":"3499:238:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71359,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71349,"src":"3517:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3517:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":71361,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71353,"src":"3535:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata[] calldata"}},"id":71362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3535:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3517:31:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f4c454e475448","id":71364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3550:14:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_74cd07887b4c11de577dcb0bd8a7698ac0067b6959b48bb2f773a28c3c68df4c","typeString":"literal_string \"WRONG_LENGTH\""},"value":"WRONG_LENGTH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74cd07887b4c11de577dcb0bd8a7698ac0067b6959b48bb2f773a28c3c68df4c","typeString":"literal_string \"WRONG_LENGTH\""}],"id":71358,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3509:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3509:56:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71366,"nodeType":"ExpressionStatement","src":"3509:56:103"},{"body":{"id":71387,"nodeType":"Block","src":"3610:121:103","statements":[{"expression":{"arguments":[{"baseExpression":{"id":71375,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71349,"src":"3639:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71377,"indexExpression":{"id":71376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71368,"src":"3647:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3639:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":71378,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71353,"src":"3651:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata[] calldata"}},"id":71380,"indexExpression":{"id":71379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71368,"src":"3658:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3651:9:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}],"id":71374,"name":"_setPairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73097,"src":"3624:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_struct$_PairParams_$88543_calldata_ptr_$returns$__$","typeString":"function (uint256,struct IPairInfos.PairParams calldata)"}},"id":71381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3624:37:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71382,"nodeType":"ExpressionStatement","src":"3624:37:103"},{"id":71386,"nodeType":"UncheckedBlock","src":"3675:46:103","statements":[{"expression":{"id":71384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3703:3:103","subExpression":{"id":71383,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71368,"src":"3705:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71385,"nodeType":"ExpressionStatement","src":"3703:3:103"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71368,"src":"3589:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":71371,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71349,"src":"3593:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3593:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3589:18:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71388,"initializationExpression":{"assignments":[71368],"declarations":[{"constant":false,"id":71368,"mutability":"mutable","name":"i","nameLocation":"3586:1:103","nodeType":"VariableDeclaration","scope":71388,"src":"3581:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71367,"name":"uint","nodeType":"ElementaryTypeName","src":"3581:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71369,"nodeType":"VariableDeclarationStatement","src":"3581:6:103"},"nodeType":"ForStatement","src":"3576:155:103"}]},"documentation":{"id":71346,"nodeType":"StructuredDocumentation","src":"3230:160:103","text":" @dev Set parameters for a trading pairs.\n @param indices Index array of the trading pair.\n @param values Parameters Array to set."},"functionSelector":"867a60c2","implemented":true,"kind":"function","modifiers":[{"id":71356,"kind":"modifierInvocation","modifierName":{"id":71355,"name":"onlyManager","nodeType":"IdentifierPath","referencedDeclaration":71194,"src":"3487:11:103"},"nodeType":"ModifierInvocation","src":"3487:11:103"}],"name":"setPairParamsArray","nameLocation":"3404:18:103","parameters":{"id":71354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71349,"mutability":"mutable","name":"indices","nameLocation":"3439:7:103","nodeType":"VariableDeclaration","scope":71390,"src":"3423:23:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71347,"name":"uint","nodeType":"ElementaryTypeName","src":"3423:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71348,"nodeType":"ArrayTypeName","src":"3423:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":71353,"mutability":"mutable","name":"values","nameLocation":"3470:6:103","nodeType":"VariableDeclaration","scope":71390,"src":"3448:28:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IPairInfos.PairParams[]"},"typeName":{"baseType":{"id":71351,"nodeType":"UserDefinedTypeName","pathNode":{"id":71350,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"3448:10:103"},"referencedDeclaration":88543,"src":"3448:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"id":71352,"nodeType":"ArrayTypeName","src":"3448:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairParams[]"}},"visibility":"internal"}],"src":"3422:55:103"},"returnParameters":{"id":71357,"nodeType":"ParameterList","parameters":[],"src":"3499:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71409,"nodeType":"FunctionDefinition","src":"4007:169:103","nodes":[],"body":{"id":71408,"nodeType":"Block","src":"4105:71:103","nodes":[],"statements":[{"expression":{"arguments":[{"id":71403,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71393,"src":"4135:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71404,"name":"valueAbove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71395,"src":"4146:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71405,"name":"valueBelow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71397,"src":"4158:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71402,"name":"_setOnePercentDepth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73073,"src":"4115:19:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":71406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4115:54:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71407,"nodeType":"ExpressionStatement","src":"4115:54:103"}]},"documentation":{"id":71391,"nodeType":"StructuredDocumentation","src":"3743:259:103","text":" @notice Sets the one percent depth values for a trading pair\n @param pairIndex The index of the trading pair\n @param valueAbove The value above the one percent depth\n @param valueBelow The value below the one percent depth"},"functionSelector":"f6960654","implemented":true,"kind":"function","modifiers":[{"id":71400,"kind":"modifierInvocation","modifierName":{"id":71399,"name":"onlyKeeper","nodeType":"IdentifierPath","referencedDeclaration":71223,"src":"4094:10:103"},"nodeType":"ModifierInvocation","src":"4094:10:103"}],"name":"setOnePercentDepth","nameLocation":"4016:18:103","parameters":{"id":71398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71393,"mutability":"mutable","name":"pairIndex","nameLocation":"4040:9:103","nodeType":"VariableDeclaration","scope":71409,"src":"4035:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71392,"name":"uint","nodeType":"ElementaryTypeName","src":"4035:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71395,"mutability":"mutable","name":"valueAbove","nameLocation":"4056:10:103","nodeType":"VariableDeclaration","scope":71409,"src":"4051:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71394,"name":"uint","nodeType":"ElementaryTypeName","src":"4051:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71397,"mutability":"mutable","name":"valueBelow","nameLocation":"4073:10:103","nodeType":"VariableDeclaration","scope":71409,"src":"4068:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71396,"name":"uint","nodeType":"ElementaryTypeName","src":"4068:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4034:50:103"},"returnParameters":{"id":71401,"nodeType":"ParameterList","parameters":[],"src":"4105:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71459,"nodeType":"FunctionDefinition","src":"4436:533:103","nodes":[],"body":{"id":71458,"nodeType":"Block","src":"4604:365:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71424,"name":"_longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71415,"src":"4622:15:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4622:22:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":71426,"name":"_shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71418,"src":"4648:16:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4648:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4622:49:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":71423,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4614:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":71429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4614:58:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71430,"nodeType":"ExpressionStatement","src":"4614:58:103"},{"expression":{"id":71436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":71431,"name":"lossProtectionNumTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71158,"src":"4683:22:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":71433,"indexExpression":{"id":71432,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71412,"src":"4706:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4683:34:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":71434,"name":"_longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71415,"src":"4720:15:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4720:22:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4683:59:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71437,"nodeType":"ExpressionStatement","src":"4683:59:103"},{"expression":{"id":71442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":71438,"name":"longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71163,"src":"4752:14:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":71440,"indexExpression":{"id":71439,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71412,"src":"4767:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4752:26:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71441,"name":"_longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71415,"src":"4781:15:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"src":"4752:44:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":71443,"nodeType":"ExpressionStatement","src":"4752:44:103"},{"expression":{"id":71448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":71444,"name":"shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71168,"src":"4806:15:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":71446,"indexExpression":{"id":71445,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71412,"src":"4822:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4806:27:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71447,"name":"_shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71418,"src":"4836:16:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"src":"4806:46:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":71449,"nodeType":"ExpressionStatement","src":"4806:46:103"},{"eventCall":{"arguments":[{"baseExpression":{"id":71451,"name":"lossProtectionNumTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71158,"src":"4892:22:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":71453,"indexExpression":{"id":71452,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71412,"src":"4915:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4892:34:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71454,"name":"_longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71415,"src":"4928:15:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":71455,"name":"_shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71418,"src":"4945:16:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}],"id":71450,"name":"LossProtectionConfigSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88656,"src":"4868:23:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,uint256[] memory,uint256[] memory)"}},"id":71456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4868:94:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71457,"nodeType":"EmitStatement","src":"4863:99:103"}]},"documentation":{"id":71410,"nodeType":"StructuredDocumentation","src":"4182:249:103","text":" @dev Set loss protection configuration for a pair index.\n @param _pairIndex The pair index to configure.\n @param _longSkewConfig Configuration for long skew.\n @param _shortSkewConfig Configuration for short skew."},"functionSelector":"cf2befd2","implemented":true,"kind":"function","modifiers":[{"id":71421,"kind":"modifierInvocation","modifierName":{"id":71420,"name":"onlyManager","nodeType":"IdentifierPath","referencedDeclaration":71194,"src":"4592:11:103"},"nodeType":"ModifierInvocation","src":"4592:11:103"}],"name":"setLossProtectionConfig","nameLocation":"4445:23:103","parameters":{"id":71419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71412,"mutability":"mutable","name":"_pairIndex","nameLocation":"4483:10:103","nodeType":"VariableDeclaration","scope":71459,"src":"4478:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71411,"name":"uint","nodeType":"ElementaryTypeName","src":"4478:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71415,"mutability":"mutable","name":"_longSkewConfig","nameLocation":"4519:15:103","nodeType":"VariableDeclaration","scope":71459,"src":"4503:31:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71413,"name":"uint","nodeType":"ElementaryTypeName","src":"4503:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71414,"nodeType":"ArrayTypeName","src":"4503:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":71418,"mutability":"mutable","name":"_shortSkewConfig","nameLocation":"4560:16:103","nodeType":"VariableDeclaration","scope":71459,"src":"4544:32:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71416,"name":"uint","nodeType":"ElementaryTypeName","src":"4544:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71417,"nodeType":"ArrayTypeName","src":"4544:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4468:114:103"},"returnParameters":{"id":71422,"nodeType":"ParameterList","parameters":[],"src":"4604:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71515,"nodeType":"FunctionDefinition","src":"5257:476:103","nodes":[],"body":{"id":71514,"nodeType":"Block","src":"5424:309:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":71485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71475,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71463,"src":"5442:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5442:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":71477,"name":"valuesAbove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71466,"src":"5460:11:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5460:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5442:36:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":71480,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71463,"src":"5482:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5482:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":71482,"name":"valuesBelow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71469,"src":"5500:11:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5500:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5482:36:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5442:76:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f4c454e475448","id":71486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5520:14:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_74cd07887b4c11de577dcb0bd8a7698ac0067b6959b48bb2f773a28c3c68df4c","typeString":"literal_string \"WRONG_LENGTH\""},"value":"WRONG_LENGTH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74cd07887b4c11de577dcb0bd8a7698ac0067b6959b48bb2f773a28c3c68df4c","typeString":"literal_string \"WRONG_LENGTH\""}],"id":71474,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5434:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5434:101:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71488,"nodeType":"ExpressionStatement","src":"5434:101:103"},{"body":{"id":71512,"nodeType":"Block","src":"5580:147:103","statements":[{"expression":{"arguments":[{"baseExpression":{"id":71497,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71463,"src":"5614:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71499,"indexExpression":{"id":71498,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71490,"src":"5622:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5614:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":71500,"name":"valuesAbove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71466,"src":"5626:11:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71502,"indexExpression":{"id":71501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71490,"src":"5638:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5626:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":71503,"name":"valuesBelow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71469,"src":"5642:11:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71505,"indexExpression":{"id":71504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71490,"src":"5654:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5642:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71496,"name":"_setOnePercentDepth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73073,"src":"5594:19:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":71506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5594:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71507,"nodeType":"ExpressionStatement","src":"5594:63:103"},{"id":71511,"nodeType":"UncheckedBlock","src":"5671:46:103","statements":[{"expression":{"id":71509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5699:3:103","subExpression":{"id":71508,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71490,"src":"5701:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71510,"nodeType":"ExpressionStatement","src":"5699:3:103"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71492,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71490,"src":"5559:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":71493,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71463,"src":"5563:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":71494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5563:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5559:18:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71513,"initializationExpression":{"assignments":[71490],"declarations":[{"constant":false,"id":71490,"mutability":"mutable","name":"i","nameLocation":"5556:1:103","nodeType":"VariableDeclaration","scope":71513,"src":"5551:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71489,"name":"uint","nodeType":"ElementaryTypeName","src":"5551:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71491,"nodeType":"VariableDeclarationStatement","src":"5551:6:103"},"nodeType":"ForStatement","src":"5546:181:103"}]},"documentation":{"id":71460,"nodeType":"StructuredDocumentation","src":"4974:278:103","text":" @notice Sets the one percent depth values for a trading pairs\n @param indices The index array of the trading pair\n @param valuesAbove The value array above the one percent depth\n @param valuesBelow The value array below the one percent depth"},"functionSelector":"351533e7","implemented":true,"kind":"function","modifiers":[{"id":71472,"kind":"modifierInvocation","modifierName":{"id":71471,"name":"onlyManager","nodeType":"IdentifierPath","referencedDeclaration":71194,"src":"5412:11:103"},"nodeType":"ModifierInvocation","src":"5412:11:103"}],"name":"setOnePercentDepthArray","nameLocation":"5266:23:103","parameters":{"id":71470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71463,"mutability":"mutable","name":"indices","nameLocation":"5315:7:103","nodeType":"VariableDeclaration","scope":71515,"src":"5299:23:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71461,"name":"uint","nodeType":"ElementaryTypeName","src":"5299:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71462,"nodeType":"ArrayTypeName","src":"5299:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":71466,"mutability":"mutable","name":"valuesAbove","nameLocation":"5348:11:103","nodeType":"VariableDeclaration","scope":71515,"src":"5332:27:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71464,"name":"uint","nodeType":"ElementaryTypeName","src":"5332:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71465,"nodeType":"ArrayTypeName","src":"5332:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":71469,"mutability":"mutable","name":"valuesBelow","nameLocation":"5385:11:103","nodeType":"VariableDeclaration","scope":71515,"src":"5369:27:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":71467,"name":"uint","nodeType":"ElementaryTypeName","src":"5369:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71468,"nodeType":"ArrayTypeName","src":"5369:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5289:113:103"},"returnParameters":{"id":71473,"nodeType":"ParameterList","parameters":[],"src":"5424:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71549,"nodeType":"FunctionDefinition","src":"5903:374:103","nodes":[],"body":{"id":71548,"nodeType":"Block","src":"5985:292:103","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71520,"src":"6003:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"32356536","id":71527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6012:4:103","typeDescriptions":{"typeIdentifier":"t_rational_25000000_by_1","typeString":"int_const 25000000"},"value":"25e6"},"src":"6003:13:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"544f4f5f48494748","id":71529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6018:10:103","typeDescriptions":{"typeIdentifier":"t_stringliteral_432b991f6b32860dd4fe177b7702dde8fff802b77f33e78c76e8d467a846ffc7","typeString":"literal_string \"TOO_HIGH\""},"value":"TOO_HIGH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_432b991f6b32860dd4fe177b7702dde8fff802b77f33e78c76e8d467a846ffc7","typeString":"literal_string \"TOO_HIGH\""}],"id":71525,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5995:7:103","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":71530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5995:34:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71531,"nodeType":"ExpressionStatement","src":"5995:34:103"},{"expression":{"arguments":[{"id":71533,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71518,"src":"6138:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71532,"name":"_storeAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73136,"src":"6116:21:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":71534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6116:32:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71535,"nodeType":"ExpressionStatement","src":"6116:32:103"},{"expression":{"id":71541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":71536,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"6159:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":71538,"indexExpression":{"id":71537,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71518,"src":"6170:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6159:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":71539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rolloverFeePerBlockP","nodeType":"MemberAccess","referencedDeclaration":88542,"src":"6159:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":71540,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71520,"src":"6204:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6159:50:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71542,"nodeType":"ExpressionStatement","src":"6159:50:103"},{"eventCall":{"arguments":[{"id":71544,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71518,"src":"6253:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71520,"src":"6264:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71543,"name":"RolloverFeePerBlockPUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88604,"src":"6225:27:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":71546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6225:45:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71547,"nodeType":"EmitStatement","src":"6220:50:103"}]},"documentation":{"id":71516,"nodeType":"StructuredDocumentation","src":"5739:159:103","text":" @dev Set rollover fee per block for a trading pair.\n @param pairIndex Index of the trading pair.\n @param value Fee value to set."},"functionSelector":"b74243ba","implemented":true,"kind":"function","modifiers":[{"id":71523,"kind":"modifierInvocation","modifierName":{"id":71522,"name":"onlyManager","nodeType":"IdentifierPath","referencedDeclaration":71194,"src":"5973:11:103"},"nodeType":"ModifierInvocation","src":"5973:11:103"}],"name":"setRolloverFeePerBlockP","nameLocation":"5912:23:103","parameters":{"id":71521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71518,"mutability":"mutable","name":"pairIndex","nameLocation":"5941:9:103","nodeType":"VariableDeclaration","scope":71549,"src":"5936:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71517,"name":"uint","nodeType":"ElementaryTypeName","src":"5936:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71520,"mutability":"mutable","name":"value","nameLocation":"5957:5:103","nodeType":"VariableDeclaration","scope":71549,"src":"5952:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71519,"name":"uint","nodeType":"ElementaryTypeName","src":"5952:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5935:28:103"},"returnParameters":{"id":71524,"nodeType":"ParameterList","parameters":[],"src":"5985:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71629,"nodeType":"FunctionDefinition","src":"6560:1001:103","nodes":[],"body":{"id":71628,"nodeType":"Block","src":"6805:756:103","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":71574,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"6837:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"6837:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71573,"name":"_storeAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73136,"src":"6815:21:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":71576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6815:39:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71577,"nodeType":"ExpressionStatement","src":"6815:39:103"},{"assignments":[71579],"declarations":[{"constant":false,"id":71579,"mutability":"mutable","name":"r","nameLocation":"6870:1:103","nodeType":"VariableDeclaration","scope":71628,"src":"6865:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71578,"name":"uint","nodeType":"ElementaryTypeName","src":"6865:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71593,"initialValue":{"arguments":[{"expression":{"id":71581,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"6907:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"6907:13:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":71583,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"6934:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"6934:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":71585,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"6964:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"6964:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":71587,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"6990:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"6990:10:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71589,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71555,"src":"7014:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":71590,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"7038:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7038:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71580,"name":"getTradeRolloverFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72809,"src":"6874:19:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,bool,uint256,uint256) view returns (uint256)"}},"id":71592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6874:189:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6865:198:103"},{"assignments":[71595],"declarations":[{"constant":false,"id":71595,"mutability":"mutable","name":"lossProtection","nameLocation":"7078:14:103","nodeType":"VariableDeclaration","scope":71628,"src":"7073:19:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71594,"name":"uint","nodeType":"ElementaryTypeName","src":"7073:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71602,"initialValue":{"arguments":[{"expression":{"id":71598,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"7133:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"7133:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71600,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71561,"src":"7151:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71596,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"7095:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":71597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lossProtectionMultiplier","nodeType":"MemberAccess","referencedDeclaration":89007,"src":"7095:37:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":71601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7095:62:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7073:84:103"},{"expression":{"id":71614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":71603,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71567,"src":"7168:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71604,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71569,"src":"7176:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":71605,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71571,"src":"7181:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71606,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7167:19:103","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"tuple(uint256,int256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":71608,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71555,"src":"7220:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71609,"name":"percentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71557,"src":"7244:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":71610,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71579,"src":"7271:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71611,"name":"closingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71559,"src":"7286:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71612,"name":"lossProtection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71595,"src":"7310:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71607,"name":"getTradeValuePure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73038,"src":"7189:17:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"function (uint256,int256,uint256,uint256,uint256) view returns (uint256,int256,uint256)"}},"id":71613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7189:145:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"tuple(uint256,int256,uint256)"}},"src":"7167:167:103","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71615,"nodeType":"ExpressionStatement","src":"7167:167:103"},{"eventCall":{"arguments":[{"expression":{"id":71617,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"7383:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"7383:10:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71619,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71555,"src":"7407:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":71620,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71553,"src":"7432:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":71621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7432:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71622,"name":"percentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71557,"src":"7462:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":71623,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71579,"src":"7490:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71624,"name":"closingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71559,"src":"7506:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71625,"name":"lossProtection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71595,"src":"7530:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71616,"name":"FeesCharged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88642,"src":"7358:11:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bool,uint256,uint256,int256,uint256,uint256,uint256)"}},"id":71626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7358:196:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71627,"nodeType":"EmitStatement","src":"7353:201:103"}]},"baseFunctions":[88719],"documentation":{"id":71550,"nodeType":"StructuredDocumentation","src":"6283:272:103","text":" @dev Get trade value, PnL, and fees.\n @param _trade Details of the trade.\n @param collateral Amount of collateral.\n @param percentProfit Profit percentage.\n @param closingFee Closing fee.\n @param _tier Loss protection tier."},"functionSelector":"0b224e87","implemented":true,"kind":"function","modifiers":[{"id":71565,"kind":"modifierInvocation","modifierName":{"id":71564,"name":"onlyCallbacks","nodeType":"IdentifierPath","referencedDeclaration":71208,"src":"6749:13:103"},"nodeType":"ModifierInvocation","src":"6749:13:103"}],"name":"getTradeValue","nameLocation":"6569:13:103","overrides":{"id":71563,"nodeType":"OverrideSpecifier","overrides":[],"src":"6740:8:103"},"parameters":{"id":71562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71553,"mutability":"mutable","name":"_trade","nameLocation":"6621:6:103","nodeType":"VariableDeclaration","scope":71629,"src":"6592:35:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":71552,"nodeType":"UserDefinedTypeName","pathNode":{"id":71551,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"6592:21:103"},"referencedDeclaration":89438,"src":"6592:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"},{"constant":false,"id":71555,"mutability":"mutable","name":"collateral","nameLocation":"6642:10:103","nodeType":"VariableDeclaration","scope":71629,"src":"6637:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71554,"name":"uint","nodeType":"ElementaryTypeName","src":"6637:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71557,"mutability":"mutable","name":"percentProfit","nameLocation":"6666:13:103","nodeType":"VariableDeclaration","scope":71629,"src":"6662:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71556,"name":"int","nodeType":"ElementaryTypeName","src":"6662:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":71559,"mutability":"mutable","name":"closingFee","nameLocation":"6694:10:103","nodeType":"VariableDeclaration","scope":71629,"src":"6689:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71558,"name":"uint","nodeType":"ElementaryTypeName","src":"6689:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71561,"mutability":"mutable","name":"_tier","nameLocation":"6719:5:103","nodeType":"VariableDeclaration","scope":71629,"src":"6714:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71560,"name":"uint","nodeType":"ElementaryTypeName","src":"6714:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6582:148:103"},"returnParameters":{"id":71572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71567,"mutability":"mutable","name":"amount","nameLocation":"6777:6:103","nodeType":"VariableDeclaration","scope":71629,"src":"6772:11:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71566,"name":"uint","nodeType":"ElementaryTypeName","src":"6772:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71569,"mutability":"mutable","name":"pnl","nameLocation":"6789:3:103","nodeType":"VariableDeclaration","scope":71629,"src":"6785:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71568,"name":"int","nodeType":"ElementaryTypeName","src":"6785:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":71571,"mutability":"mutable","name":"fees","nameLocation":"6799:4:103","nodeType":"VariableDeclaration","scope":71629,"src":"6794:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71570,"name":"uint","nodeType":"ElementaryTypeName","src":"6794:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6771:33:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71689,"nodeType":"FunctionDefinition","src":"7865:527:103","nodes":[],"body":{"id":71688,"nodeType":"Block","src":"8024:368:103","nodes":[],"statements":[{"expression":{"arguments":[{"id":71645,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71634,"src":"8056:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71644,"name":"_storeAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73136,"src":"8034:21:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":71646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8034:32:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71647,"nodeType":"ExpressionStatement","src":"8034:32:103"},{"assignments":[71650],"declarations":[{"constant":false,"id":71650,"mutability":"mutable","name":"t","nameLocation":"8105:1:103","nodeType":"VariableDeclaration","scope":71688,"src":"8077:29:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees"},"typeName":{"id":71649,"nodeType":"UserDefinedTypeName","pathNode":{"id":71648,"name":"TradeInitialAccFees","nodeType":"IdentifierPath","referencedDeclaration":88555,"src":"8077:19:103"},"referencedDeclaration":88555,"src":"8077:19:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees"}},"visibility":"internal"}],"id":71658,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":71651,"name":"tradeInitialAccFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71154,"src":"8109:19:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)))"}},"id":71653,"indexExpression":{"id":71652,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71632,"src":"8129:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8109:27:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref))"}},"id":71655,"indexExpression":{"id":71654,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71634,"src":"8137:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8109:38:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$","typeString":"mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)"}},"id":71657,"indexExpression":{"id":71656,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71636,"src":"8148:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8109:45:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage","typeString":"struct IPairInfos.TradeInitialAccFees storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8077:77:103"},{"expression":{"id":71672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":71659,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71650,"src":"8165:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees storage pointer"}},"id":71661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"rollover","nodeType":"MemberAccess","referencedDeclaration":88552,"src":"8165:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":71662,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71638,"src":"8178:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"baseExpression":{"id":71667,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"8228:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":71669,"indexExpression":{"id":71668,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71634,"src":"8245:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8228:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"id":71670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiShort","nodeType":"MemberAccess","referencedDeclaration":88547,"src":"8228:41:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8178:91:103","trueExpression":{"expression":{"baseExpression":{"id":71663,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"8185:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":71665,"indexExpression":{"id":71664,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71634,"src":"8202:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8185:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"id":71666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiLong","nodeType":"MemberAccess","referencedDeclaration":88545,"src":"8185:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8165:104:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71673,"nodeType":"ExpressionStatement","src":"8165:104:103"},{"expression":{"id":71678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":71674,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71650,"src":"8280:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees storage pointer"}},"id":71676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"openedAfterUpdate","nodeType":"MemberAccess","referencedDeclaration":88554,"src":"8280:19:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":71677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8302:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8280:26:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71679,"nodeType":"ExpressionStatement","src":"8280:26:103"},{"eventCall":{"arguments":[{"id":71681,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71632,"src":"8348:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":71682,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71634,"src":"8356:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71683,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71636,"src":"8367:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":71684,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71650,"src":"8374:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees storage pointer"}},"id":71685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rollover","nodeType":"MemberAccess","referencedDeclaration":88552,"src":"8374:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71680,"name":"TradeInitialAccFeesStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88614,"src":"8322:25:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":71686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8322:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":71687,"nodeType":"EmitStatement","src":"8317:68:103"}]},"baseFunctions":[88667],"documentation":{"id":71630,"nodeType":"StructuredDocumentation","src":"7567:293:103","text":" @dev Called while registering trade. Stores margin fee accumulator at start of a trade\n @param trader Address of the trader.\n @param pairIndex Index of the trading pair.\n @param index Index of the trade.\n @param long Whether the trade is long or not."},"functionSelector":"0e6bc39a","implemented":true,"kind":"function","modifiers":[{"id":71642,"kind":"modifierInvocation","modifierName":{"id":71641,"name":"onlyCallbacks","nodeType":"IdentifierPath","referencedDeclaration":71208,"src":"8010:13:103"},"nodeType":"ModifierInvocation","src":"8010:13:103"}],"name":"storeTradeInitialAccFees","nameLocation":"7874:24:103","overrides":{"id":71640,"nodeType":"OverrideSpecifier","overrides":[],"src":"8001:8:103"},"parameters":{"id":71639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71632,"mutability":"mutable","name":"trader","nameLocation":"7916:6:103","nodeType":"VariableDeclaration","scope":71689,"src":"7908:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71631,"name":"address","nodeType":"ElementaryTypeName","src":"7908:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71634,"mutability":"mutable","name":"pairIndex","nameLocation":"7937:9:103","nodeType":"VariableDeclaration","scope":71689,"src":"7932:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71633,"name":"uint","nodeType":"ElementaryTypeName","src":"7932:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71636,"mutability":"mutable","name":"index","nameLocation":"7961:5:103","nodeType":"VariableDeclaration","scope":71689,"src":"7956:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71635,"name":"uint","nodeType":"ElementaryTypeName","src":"7956:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71638,"mutability":"mutable","name":"long","nameLocation":"7981:4:103","nodeType":"VariableDeclaration","scope":71689,"src":"7976:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":71637,"name":"bool","nodeType":"ElementaryTypeName","src":"7976:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7898:93:103"},"returnParameters":{"id":71643,"nodeType":"ParameterList","parameters":[],"src":"8024:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":71726,"nodeType":"FunctionDefinition","src":"8879:509:103","nodes":[],"body":{"id":71725,"nodeType":"Block","src":"9116:272:103","nodes":[],"statements":[{"expression":{"arguments":[{"id":71711,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71698,"src":"9191:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71712,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71700,"src":"9218:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71713,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71702,"src":"9240:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71714,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71704,"src":"9268:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":71716,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71692,"src":"9314:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":71717,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71694,"src":"9322:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71718,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71696,"src":"9333:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71719,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71700,"src":"9340:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71720,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71702,"src":"9346:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71721,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71704,"src":"9358:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71715,"name":"getTradeRolloverFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72809,"src":"9294:19:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,bool,uint256,uint256) view returns (uint256)"}},"id":71722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9294:73:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71710,"name":"getTradeLiquidationPricePure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72913,"src":"9145:28:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,bool,uint256,uint256,uint256) view returns (uint256)"}},"id":71723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9145:236:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":71709,"id":71724,"nodeType":"Return","src":"9126:255:103"}]},"baseFunctions":[88699],"documentation":{"id":71690,"nodeType":"StructuredDocumentation","src":"8398:476:103","text":" @notice Calculate liquidation price after trade rollover.\n @param trader Address of the trader.\n @param pairIndex Index of the trading pair.\n @param index Unique index for trade.\n @param openPrice Opening price of the trade.\n @param long True if it's a long position, false otherwise.\n @param collateral Amount of collateral.\n @param leverage Leverage used in the trade.\n @return Calculated liquidation price."},"functionSelector":"6bc84d59","implemented":true,"kind":"function","modifiers":[],"name":"getTradeLiquidationPrice","nameLocation":"8888:24:103","overrides":{"id":71706,"nodeType":"OverrideSpecifier","overrides":[],"src":"9092:8:103"},"parameters":{"id":71705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71692,"mutability":"mutable","name":"trader","nameLocation":"8930:6:103","nodeType":"VariableDeclaration","scope":71726,"src":"8922:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71691,"name":"address","nodeType":"ElementaryTypeName","src":"8922:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71694,"mutability":"mutable","name":"pairIndex","nameLocation":"8951:9:103","nodeType":"VariableDeclaration","scope":71726,"src":"8946:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71693,"name":"uint","nodeType":"ElementaryTypeName","src":"8946:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71696,"mutability":"mutable","name":"index","nameLocation":"8975:5:103","nodeType":"VariableDeclaration","scope":71726,"src":"8970:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71695,"name":"uint","nodeType":"ElementaryTypeName","src":"8970:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71698,"mutability":"mutable","name":"openPrice","nameLocation":"8995:9:103","nodeType":"VariableDeclaration","scope":71726,"src":"8990:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71697,"name":"uint","nodeType":"ElementaryTypeName","src":"8990:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71700,"mutability":"mutable","name":"long","nameLocation":"9019:4:103","nodeType":"VariableDeclaration","scope":71726,"src":"9014:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":71699,"name":"bool","nodeType":"ElementaryTypeName","src":"9014:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":71702,"mutability":"mutable","name":"collateral","nameLocation":"9038:10:103","nodeType":"VariableDeclaration","scope":71726,"src":"9033:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71701,"name":"uint","nodeType":"ElementaryTypeName","src":"9033:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71704,"mutability":"mutable","name":"leverage","nameLocation":"9063:8:103","nodeType":"VariableDeclaration","scope":71726,"src":"9058:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71703,"name":"uint","nodeType":"ElementaryTypeName","src":"9058:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8912:165:103"},"returnParameters":{"id":71709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":71726,"src":"9110:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71707,"name":"uint","nodeType":"ElementaryTypeName","src":"9110:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9109:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":71838,"nodeType":"FunctionDefinition","src":"9789:835:103","nodes":[],"body":{"id":71837,"nodeType":"Block","src":"9978:646:103","nodes":[],"statements":[{"assignments":[71742],"declarations":[{"constant":false,"id":71742,"mutability":"mutable","name":"priceImpactSpread","nameLocation":"9993:17:103","nodeType":"VariableDeclaration","scope":71837,"src":"9989:21:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71741,"name":"int","nodeType":"ElementaryTypeName","src":"9989:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71748,"initialValue":{"arguments":[{"id":71744,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71731,"src":"10034:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71745,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71733,"src":"10045:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71746,"name":"tradeOpenInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71735,"src":"10051:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71743,"name":"getPriceImpactSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71888,"src":"10013:20:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,bool,uint256) view returns (int256)"}},"id":71747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10013:56:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9989:80:103"},{"assignments":[71750],"declarations":[{"constant":false,"id":71750,"mutability":"mutable","name":"skewImpactSpread","nameLocation":"10083:16:103","nodeType":"VariableDeclaration","scope":71837,"src":"10079:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71749,"name":"int","nodeType":"ElementaryTypeName","src":"10079:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71756,"initialValue":{"arguments":[{"id":71752,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71731,"src":"10122:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71753,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71733,"src":"10133:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":71754,"name":"tradeOpenInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71735,"src":"10139:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71751,"name":"getSkewImpactSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72047,"src":"10102:19:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,bool,uint256) view returns (int256)"}},"id":71755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10102:55:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10079:78:103"},{"assignments":[71758],"declarations":[{"constant":false,"id":71758,"mutability":"mutable","name":"dynamicSpread","nameLocation":"10171:13:103","nodeType":"VariableDeclaration","scope":71837,"src":"10167:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71757,"name":"int","nodeType":"ElementaryTypeName","src":"10167:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71771,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":71763,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71731,"src":"10218:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71761,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"10193:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":71762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairSpreadP","nodeType":"MemberAccess","referencedDeclaration":88931,"src":"10193:24:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":71764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10193:35:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10189:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71759,"name":"int","nodeType":"ElementaryTypeName","src":"10189:3:103","typeDescriptions":{}}},"id":71765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10189:40:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71766,"name":"priceImpactSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71742,"src":"10232:17:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10189:60:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71768,"name":"skewImpactSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71750,"src":"10252:16:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10189:79:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":71770,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10188:81:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10167:102:103"},{"expression":{"id":71791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71772,"name":"dynamicSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71758,"src":"10287:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71773,"name":"dynamicSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71758,"src":"10303:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":71780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10319:21:103","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":71776,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"10324:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":71777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10337:2:103","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"10324:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10320:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71774,"name":"int","nodeType":"ElementaryTypeName","src":"10320:3:103","typeDescriptions":{}}},"id":71779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10320:20:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10303:37:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":71789,"name":"dynamicSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71758,"src":"10367:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":71790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10303:77:103","trueExpression":{"id":71788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10343:21:103","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":71784,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"10348:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":71785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10361:2:103","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"10348:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10344:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71782,"name":"int","nodeType":"ElementaryTypeName","src":"10344:3:103","typeDescriptions":{}}},"id":71787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10344:20:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10287:93:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":71792,"nodeType":"ExpressionStatement","src":"10287:93:103"},{"assignments":[71794],"declarations":[{"constant":false,"id":71794,"mutability":"mutable","name":"priceImpact","nameLocation":"10394:11:103","nodeType":"VariableDeclaration","scope":71837,"src":"10390:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71793,"name":"int","nodeType":"ElementaryTypeName","src":"10390:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71812,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71795,"name":"dynamicSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71758,"src":"10409:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":71798,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71729,"src":"10429:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10425:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71796,"name":"int","nodeType":"ElementaryTypeName","src":"10425:3:103","typeDescriptions":{}}},"id":71799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10425:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10409:30:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":71801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10408:32:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":71804,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"10447:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10443:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71802,"name":"int","nodeType":"ElementaryTypeName","src":"10443:3:103","typeDescriptions":{}}},"id":71805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10443:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10408:50:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"hexValue":"313030","id":71809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}],"id":71808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10461:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71807,"name":"int","nodeType":"ElementaryTypeName","src":"10461:3:103","typeDescriptions":{}}},"id":71810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10461:8:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10408:61:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10390:79:103"},{"assignments":[71814],"declarations":[{"constant":false,"id":71814,"mutability":"mutable","name":"pricePostImpact","nameLocation":"10483:15:103","nodeType":"VariableDeclaration","scope":71837,"src":"10479:19:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71813,"name":"int","nodeType":"ElementaryTypeName","src":"10479:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71829,"initialValue":{"condition":{"id":71815,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71733,"src":"10501:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":71824,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71729,"src":"10543:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10539:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71822,"name":"int","nodeType":"ElementaryTypeName","src":"10539:3:103","typeDescriptions":{}}},"id":71825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10539:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":71826,"name":"priceImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71794,"src":"10556:11:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10539:28:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":71828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10501:66:103","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":71818,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71729,"src":"10512:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10508:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71816,"name":"int","nodeType":"ElementaryTypeName","src":"10508:3:103","typeDescriptions":{}}},"id":71819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10508:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71820,"name":"priceImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71794,"src":"10525:11:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10508:28:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10479:88:103"},{"expression":{"id":71835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71830,"name":"priceAfterImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71739,"src":"10577:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":71833,"name":"pricePostImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71814,"src":"10601:15:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":71832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10596:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":71831,"name":"uint","nodeType":"ElementaryTypeName","src":"10596:4:103","typeDescriptions":{}}},"id":71834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10596:21:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10577:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71836,"nodeType":"ExpressionStatement","src":"10577:40:103"}]},"baseFunctions":[88680],"documentation":{"id":71727,"nodeType":"StructuredDocumentation","src":"9394:390:103","text":" @notice Calculate price impact on trade opening. Only for Crypto Group\n @param openPrice Opening price of the trade.\n @param pairIndex Index of the trading pair.\n @param long True if it's a long position, false otherwise.\n @param tradeOpenInterest Open interest of the trade.\n @return priceAfterImpact Price after taking impact into account."},"functionSelector":"7ea95f32","implemented":true,"kind":"function","modifiers":[],"name":"getTradePriceImpact","nameLocation":"9798:19:103","overrides":{"id":71737,"nodeType":"OverrideSpecifier","overrides":[],"src":"9937:8:103"},"parameters":{"id":71736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71729,"mutability":"mutable","name":"openPrice","nameLocation":"9832:9:103","nodeType":"VariableDeclaration","scope":71838,"src":"9827:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71728,"name":"uint","nodeType":"ElementaryTypeName","src":"9827:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71731,"mutability":"mutable","name":"pairIndex","nameLocation":"9856:9:103","nodeType":"VariableDeclaration","scope":71838,"src":"9851:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71730,"name":"uint","nodeType":"ElementaryTypeName","src":"9851:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71733,"mutability":"mutable","name":"long","nameLocation":"9880:4:103","nodeType":"VariableDeclaration","scope":71838,"src":"9875:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":71732,"name":"bool","nodeType":"ElementaryTypeName","src":"9875:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":71735,"mutability":"mutable","name":"tradeOpenInterest","nameLocation":"9899:17:103","nodeType":"VariableDeclaration","scope":71838,"src":"9894:22:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71734,"name":"uint","nodeType":"ElementaryTypeName","src":"9894:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9817:105:103"},"returnParameters":{"id":71740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71739,"mutability":"mutable","name":"priceAfterImpact","nameLocation":"9960:16:103","nodeType":"VariableDeclaration","scope":71838,"src":"9955:21:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71738,"name":"uint","nodeType":"ElementaryTypeName","src":"9955:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9954:23:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":71888,"nodeType":"FunctionDefinition","src":"10630:456:103","nodes":[],"body":{"id":71887,"nodeType":"Block","src":"10754:332:103","nodes":[],"statements":[{"assignments":[71850],"declarations":[{"constant":false,"id":71850,"mutability":"mutable","name":"b","nameLocation":"10770:1:103","nodeType":"VariableDeclaration","scope":71887,"src":"10765:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71849,"name":"uint","nodeType":"ElementaryTypeName","src":"10765:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71855,"initialValue":{"arguments":[{"id":71853,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71840,"src":"10813:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71851,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"10774:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":71852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairPriceImpactMultiplier","nodeType":"MemberAccess","referencedDeclaration":89047,"src":"10774:38:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":71854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10774:50:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10765:59:103"},{"assignments":[71857],"declarations":[{"constant":false,"id":71857,"mutability":"mutable","name":"onePercentDepth","nameLocation":"10840:15:103","nodeType":"VariableDeclaration","scope":71887,"src":"10835:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71856,"name":"uint","nodeType":"ElementaryTypeName","src":"10835:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71868,"initialValue":{"condition":{"id":71858,"name":"_isBuy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71842,"src":"10858:6:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"baseExpression":{"id":71863,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"10913:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":71865,"indexExpression":{"id":71864,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71840,"src":"10924:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10913:22:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":71866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"onePercentDepthBelow","nodeType":"MemberAccess","referencedDeclaration":88540,"src":"10913:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10858:98:103","trueExpression":{"expression":{"baseExpression":{"id":71859,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"10867:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":71861,"indexExpression":{"id":71860,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71840,"src":"10878:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10867:22:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":71862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"onePercentDepthAbove","nodeType":"MemberAccess","referencedDeclaration":88538,"src":"10867:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10835:121:103"},{"expression":{"id":71885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":71869,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71847,"src":"10966:6:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":71884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71872,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71850,"src":"10998:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":71873,"name":"_leveragePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71844,"src":"11000:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10998:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":71875,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"11020:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10998:32:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71877,"name":"onePercentDepth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71857,"src":"11031:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":71878,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"11048:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71870,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96085,"src":"10975:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ABDKMathQuadExt_$96085_$","typeString":"type(library ABDKMathQuadExt)"}},"id":71871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"expInt","nodeType":"MemberAccess","referencedDeclaration":96084,"src":"10975:22:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,uint256) pure returns (int256)"}},"id":71879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10975:84:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":71882,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"11066:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11062:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71880,"name":"int","nodeType":"ElementaryTypeName","src":"11062:3:103","typeDescriptions":{}}},"id":71883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11062:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10975:102:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10966:111:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":71886,"nodeType":"ExpressionStatement","src":"10966:111:103"}]},"functionSelector":"fcfe7378","implemented":true,"kind":"function","modifiers":[],"name":"getPriceImpactSpread","nameLocation":"10639:20:103","parameters":{"id":71845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71840,"mutability":"mutable","name":"_pairIndex","nameLocation":"10668:10:103","nodeType":"VariableDeclaration","scope":71888,"src":"10660:18:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71839,"name":"uint256","nodeType":"ElementaryTypeName","src":"10660:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71842,"mutability":"mutable","name":"_isBuy","nameLocation":"10685:6:103","nodeType":"VariableDeclaration","scope":71888,"src":"10680:11:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":71841,"name":"bool","nodeType":"ElementaryTypeName","src":"10680:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":71844,"mutability":"mutable","name":"_leveragePosition","nameLocation":"10701:17:103","nodeType":"VariableDeclaration","scope":71888,"src":"10693:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71843,"name":"uint256","nodeType":"ElementaryTypeName","src":"10693:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10659:60:103"},"returnParameters":{"id":71848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71847,"mutability":"mutable","name":"spread","nameLocation":"10747:6:103","nodeType":"VariableDeclaration","scope":71888,"src":"10740:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71846,"name":"int256","nodeType":"ElementaryTypeName","src":"10740:6:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"10739:15:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72047,"nodeType":"FunctionDefinition","src":"11092:1385:103","nodes":[],"body":{"id":72046,"nodeType":"Block","src":"11209:1268:103","nodes":[],"statements":[{"assignments":[71900],"declarations":[{"constant":false,"id":71900,"mutability":"mutable","name":"intPrecision","nameLocation":"11224:12:103","nodeType":"VariableDeclaration","scope":72046,"src":"11220:16:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71899,"name":"int","nodeType":"ElementaryTypeName","src":"11220:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71905,"initialValue":{"arguments":[{"id":71903,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"11244:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":71902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11240:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":71901,"name":"int","nodeType":"ElementaryTypeName","src":"11240:3:103","typeDescriptions":{}}},"id":71904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11240:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11220:35:103"},{"assignments":[71907],"declarations":[{"constant":false,"id":71907,"mutability":"mutable","name":"skewParam","nameLocation":"11269:9:103","nodeType":"VariableDeclaration","scope":72046,"src":"11265:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71906,"name":"int","nodeType":"ElementaryTypeName","src":"11265:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":71912,"initialValue":{"arguments":[{"id":71910,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71890,"src":"11319:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71908,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"11281:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":71909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairSkewImpactMultiplier","nodeType":"MemberAccess","referencedDeclaration":89054,"src":"11281:37:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256) view external returns (int256)"}},"id":71911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11281:49:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11265:65:103"},{"assignments":[71914],"declarations":[{"constant":false,"id":71914,"mutability":"mutable","name":"openInterestUSDCLong","nameLocation":"11346:20:103","nodeType":"VariableDeclaration","scope":72046,"src":"11341:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71913,"name":"uint","nodeType":"ElementaryTypeName","src":"11341:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71920,"initialValue":{"arguments":[{"id":71917,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71890,"src":"11395:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":71918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11407:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":71915,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"11369:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":71916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"11369:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":71919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11369:40:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11341:68:103"},{"assignments":[71922],"declarations":[{"constant":false,"id":71922,"mutability":"mutable","name":"openInterestUSDCShort","nameLocation":"11424:21:103","nodeType":"VariableDeclaration","scope":72046,"src":"11419:26:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71921,"name":"uint","nodeType":"ElementaryTypeName","src":"11419:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71928,"initialValue":{"arguments":[{"id":71925,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71890,"src":"11474:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":71926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":71923,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"11448:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":71924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"11448:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":71927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11448:40:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11419:69:103"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71929,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11501:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":71930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11525:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11501:25:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71934,"nodeType":"IfStatement","src":"11498:38:103","trueBody":{"expression":{"hexValue":"30","id":71932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11535:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":71898,"id":71933,"nodeType":"Return","src":"11528:8:103"}},{"assignments":[71936],"declarations":[{"constant":false,"id":71936,"mutability":"mutable","name":"skewPct","nameLocation":"11551:7:103","nodeType":"VariableDeclaration","scope":72046,"src":"11546:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71935,"name":"uint","nodeType":"ElementaryTypeName","src":"11546:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71957,"initialValue":{"condition":{"id":71937,"name":"_isBuy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71892,"src":"11561:6:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":71947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11701:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":71948,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"11707:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11701:27:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11700:29:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71951,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11733:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71952,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"11756:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11733:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71954,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11732:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11700:78:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11561:217:103","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":71938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":71939,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11602:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11596:26:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:28:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71942,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11627:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71943,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"11650:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11627:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11626:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11595:77:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11546:232:103"},{"assignments":[71959],"declarations":[{"constant":false,"id":71959,"mutability":"mutable","name":"skewPctAfter","nameLocation":"11793:12:103","nodeType":"VariableDeclaration","scope":72046,"src":"11788:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71958,"name":"uint","nodeType":"ElementaryTypeName","src":"11788:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":71990,"initialValue":{"condition":{"id":71960,"name":"_isBuy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71892,"src":"11808:6:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":71975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11991:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71976,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"11998:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71977,"name":"_leveragePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71894,"src":"12022:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11998:41:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11997:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11991:49:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11990:51:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71982,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"12045:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71983,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"12068:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12045:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71985,"name":"_leveragePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71894,"src":"12092:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12045:64:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71987,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12044:66:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11990:120:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":71989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11808:302:103","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":71961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11843:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71962,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11850:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71963,"name":"_leveragePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71894,"src":"11874:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11850:41:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11849:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11843:49:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71967,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11842:51:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":71970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":71968,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71914,"src":"11897:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71969,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71922,"src":"11920:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11897:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":71971,"name":"_leveragePosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71894,"src":"11944:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11897:64:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":71973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11896:66:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11842:120:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11788:322:103"},{"assignments":[71992],"declarations":[{"constant":false,"id":71992,"mutability":"mutable","name":"rawSpread","nameLocation":"12124:9:103","nodeType":"VariableDeclaration","scope":72046,"src":"12120:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71991,"name":"int","nodeType":"ElementaryTypeName","src":"12120:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72027,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":71995,"name":"skewPctAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71959,"src":"12160:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"316534","id":71996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12174:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},{"id":71997,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"12179:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71993,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96085,"src":"12137:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ABDKMathQuadExt_$96085_$","typeString":"type(library ABDKMathQuadExt)"}},"id":71994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"expInt","nodeType":"MemberAccess","referencedDeclaration":96084,"src":"12137:22:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,uint256) pure returns (int256)"}},"id":71998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12137:53:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":72001,"name":"skewPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71936,"src":"12216:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"316534","id":72002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12224:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},{"id":72003,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"12229:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":71999,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96085,"src":"12193:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ABDKMathQuadExt_$96085_$","typeString":"type(library ABDKMathQuadExt)"}},"id":72000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"expInt","nodeType":"MemberAccess","referencedDeclaration":96084,"src":"12193:22:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,uint256) pure returns (int256)"}},"id":72004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12193:47:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12137:103:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":72008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12267:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72009,"name":"skewPctAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71959,"src":"12273:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12267:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72011,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12266:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"316534","id":72012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12288:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},{"id":72013,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"12293:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72006,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96085,"src":"12243:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ABDKMathQuadExt_$96085_$","typeString":"type(library ABDKMathQuadExt)"}},"id":72007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"expInt","nodeType":"MemberAccess","referencedDeclaration":96084,"src":"12243:22:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,uint256) pure returns (int256)"}},"id":72014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12243:61:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12137:167:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"316534","id":72018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12331:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72019,"name":"skewPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71936,"src":"12337:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12331:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12330:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"316534","id":72022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12347:3:103","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},{"id":72023,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"12352:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72016,"name":"ABDKMathQuadExt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96085,"src":"12307:15:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ABDKMathQuadExt_$96085_$","typeString":"type(library ABDKMathQuadExt)"}},"id":72017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"expInt","nodeType":"MemberAccess","referencedDeclaration":96084,"src":"12307:22:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,uint256) pure returns (int256)"}},"id":72024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12307:56:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12137:226:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72026,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12136:228:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"12120:244:103"},{"expression":{"id":72035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72028,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71897,"src":"12373:6:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72029,"name":"skewParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71907,"src":"12383:9:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72030,"name":"rawSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"12393:9:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12383:19:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72032,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12382:21:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72033,"name":"intPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71900,"src":"12404:12:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12382:34:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12373:43:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":72036,"nodeType":"ExpressionStatement","src":"12373:43:103"},{"expression":{"id":72044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72037,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71897,"src":"12426:6:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72038,"name":"skewParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71907,"src":"12436:9:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72039,"name":"rawSpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"12446:9:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12436:19:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72041,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12435:21:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72042,"name":"intPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71900,"src":"12457:12:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12435:34:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12426:43:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":72045,"nodeType":"ExpressionStatement","src":"12426:43:103"}]},"functionSelector":"890801de","implemented":true,"kind":"function","modifiers":[],"name":"getSkewImpactSpread","nameLocation":"11101:19:103","parameters":{"id":71895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71890,"mutability":"mutable","name":"_pairIndex","nameLocation":"11126:10:103","nodeType":"VariableDeclaration","scope":72047,"src":"11121:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71889,"name":"uint","nodeType":"ElementaryTypeName","src":"11121:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":71892,"mutability":"mutable","name":"_isBuy","nameLocation":"11143:6:103","nodeType":"VariableDeclaration","scope":72047,"src":"11138:11:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":71891,"name":"bool","nodeType":"ElementaryTypeName","src":"11138:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":71894,"mutability":"mutable","name":"_leveragePosition","nameLocation":"11156:17:103","nodeType":"VariableDeclaration","scope":72047,"src":"11151:22:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71893,"name":"uint","nodeType":"ElementaryTypeName","src":"11151:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11120:54:103"},"returnParameters":{"id":71898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71897,"mutability":"mutable","name":"spread","nameLocation":"11202:6:103","nodeType":"VariableDeclaration","scope":72047,"src":"11195:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":71896,"name":"int256","nodeType":"ElementaryTypeName","src":"11195:6:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"11194:15:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72188,"nodeType":"FunctionDefinition","src":"12717:1367:103","nodes":[],"body":{"id":72187,"nodeType":"Block","src":"12820:1264:103","nodes":[],"statements":[{"assignments":[72058],"declarations":[{"constant":false,"id":72058,"mutability":"mutable","name":"openInterestUSDCLong","nameLocation":"12835:20:103","nodeType":"VariableDeclaration","scope":72187,"src":"12830:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72057,"name":"uint","nodeType":"ElementaryTypeName","src":"12830:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72065,"initialValue":{"arguments":[{"expression":{"id":72061,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"12884:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"12884:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":72063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12902:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":72059,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"12858:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":72060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"12858:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":72064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12858:46:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12830:74:103"},{"assignments":[72067],"declarations":[{"constant":false,"id":72067,"mutability":"mutable","name":"openInterestUSDCShort","nameLocation":"12919:21:103","nodeType":"VariableDeclaration","scope":72187,"src":"12914:26:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72066,"name":"uint","nodeType":"ElementaryTypeName","src":"12914:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72074,"initialValue":{"arguments":[{"expression":{"id":72070,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"12969:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"12969:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":72072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12987:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":72068,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"12943:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":72069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"12943:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":72073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12943:46:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12914:75:103"},{"assignments":[72076],"declarations":[{"constant":false,"id":72076,"mutability":"mutable","name":"updatedInterest","nameLocation":"13005:15:103","nodeType":"VariableDeclaration","scope":72187,"src":"13000:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72075,"name":"uint","nodeType":"ElementaryTypeName","src":"13000:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72083,"initialValue":{"arguments":[{"expression":{"id":72080,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13050:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"13050:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":72077,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13023:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"13023:22:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"13023:26:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":72082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13023:43:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13000:66:103"},{"condition":{"expression":{"id":72084,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13081:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"13081:10:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":72183,"nodeType":"Block","src":"13571:467:103","statements":[{"expression":{"id":72137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72135,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72067,"src":"13585:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":72136,"name":"updatedInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72076,"src":"13610:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13585:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72138,"nodeType":"ExpressionStatement","src":"13585:40:103"},{"assignments":[72140],"declarations":[{"constant":false,"id":72140,"mutability":"mutable","name":"openInterestUSDCLongPct","nameLocation":"13644:23:103","nodeType":"VariableDeclaration","scope":72183,"src":"13639:28:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72139,"name":"uint","nodeType":"ElementaryTypeName","src":"13639:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72150,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13671:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72142,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72058,"src":"13677:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13671:26:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13670:28:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72145,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72058,"src":"13718:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72146,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72067,"src":"13741:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13718:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72148,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13717:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13670:93:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13639:124:103"},{"body":{"id":72181,"nodeType":"Block","src":"13840:188:103","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72162,"name":"openInterestUSDCLongPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72140,"src":"13862:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"baseExpression":{"id":72163,"name":"longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71163,"src":"13889:14:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":72166,"indexExpression":{"expression":{"id":72164,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13904:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13904:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13889:32:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":72170,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72167,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72152,"src":"13922:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":72168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13926:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13922:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13889:39:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13862:66:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72176,"nodeType":"IfStatement","src":"13858:84:103","trueBody":{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72172,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72152,"src":"13937:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":72173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13941:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13937:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72056,"id":72175,"nodeType":"Return","src":"13930:12:103"}},{"id":72180,"nodeType":"UncheckedBlock","src":"13960:54:103","statements":[{"expression":{"id":72178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"13992:3:103","subExpression":{"id":72177,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72152,"src":"13994:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72179,"nodeType":"ExpressionStatement","src":"13992:3:103"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72152,"src":"13832:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":72160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13836:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13832:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72182,"initializationExpression":{"assignments":[72152],"declarations":[{"constant":false,"id":72152,"mutability":"mutable","name":"i","nameLocation":"13787:1:103","nodeType":"VariableDeclaration","scope":72182,"src":"13782:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72151,"name":"uint","nodeType":"ElementaryTypeName","src":"13782:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72158,"initialValue":{"expression":{"baseExpression":{"id":72153,"name":"longSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71163,"src":"13791:14:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":72156,"indexExpression":{"expression":{"id":72154,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13806:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13806:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13791:32:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":72157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13791:39:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13782:48:103"},"nodeType":"ForStatement","src":"13777:251:103"}]},"id":72184,"nodeType":"IfStatement","src":"13077:961:103","trueBody":{"id":72134,"nodeType":"Block","src":"13093:472:103","statements":[{"expression":{"id":72088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72086,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72058,"src":"13107:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":72087,"name":"updatedInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72076,"src":"13131:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13107:39:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72089,"nodeType":"ExpressionStatement","src":"13107:39:103"},{"assignments":[72091],"declarations":[{"constant":false,"id":72091,"mutability":"mutable","name":"openInterestUSDCShortPct","nameLocation":"13165:24:103","nodeType":"VariableDeclaration","scope":72134,"src":"13160:29:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72090,"name":"uint","nodeType":"ElementaryTypeName","src":"13160:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72101,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13193:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72093,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72067,"src":"13199:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13193:27:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72095,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13192:29:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72096,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72058,"src":"13241:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72097,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72067,"src":"13264:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13241:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13240:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13192:94:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13160:126:103"},{"body":{"id":72132,"nodeType":"Block","src":"13365:190:103","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72113,"name":"openInterestUSDCShortPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72091,"src":"13387:24:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"baseExpression":{"id":72114,"name":"shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71168,"src":"13415:15:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":72117,"indexExpression":{"expression":{"id":72115,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13431:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13431:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13415:33:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":72121,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72118,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72103,"src":"13449:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":72119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13453:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13449:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13415:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13387:68:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72127,"nodeType":"IfStatement","src":"13383:86:103","trueBody":{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72123,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72103,"src":"13464:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":72124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13468:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13464:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72056,"id":72126,"nodeType":"Return","src":"13457:12:103"}},{"id":72131,"nodeType":"UncheckedBlock","src":"13487:54:103","statements":[{"expression":{"id":72129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"13519:3:103","subExpression":{"id":72128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72103,"src":"13521:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72130,"nodeType":"ExpressionStatement","src":"13519:3:103"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72110,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72103,"src":"13357:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":72111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13361:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13357:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72133,"initializationExpression":{"assignments":[72103],"declarations":[{"constant":false,"id":72103,"mutability":"mutable","name":"i","nameLocation":"13311:1:103","nodeType":"VariableDeclaration","scope":72133,"src":"13306:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72102,"name":"uint","nodeType":"ElementaryTypeName","src":"13306:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72109,"initialValue":{"expression":{"baseExpression":{"id":72104,"name":"shortSkewConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71168,"src":"13315:15:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":72107,"indexExpression":{"expression":{"id":72105,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72051,"src":"13331:6:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":72106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13331:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13315:33:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":72108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13315:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13306:49:103"},"nodeType":"ForStatement","src":"13301:254:103"}]}},{"expression":{"hexValue":"30","id":72185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14054:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":72056,"id":72186,"nodeType":"Return","src":"14047:8:103"}]},"baseFunctions":[88744],"documentation":{"id":72048,"nodeType":"StructuredDocumentation","src":"12482:230:103","text":"@notice Calculate and return the loss protection tier for a given trade based on current skew\n @param _trade The trade object containing details of the trade\n @return The index of the loss protection tier"},"functionSelector":"82d317b2","implemented":true,"kind":"function","modifiers":[],"name":"lossProtectionTier","nameLocation":"12726:18:103","overrides":{"id":72053,"nodeType":"OverrideSpecifier","overrides":[],"src":"12796:8:103"},"parameters":{"id":72052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72051,"mutability":"mutable","name":"_trade","nameLocation":"12774:6:103","nodeType":"VariableDeclaration","scope":72188,"src":"12745:35:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":72050,"nodeType":"UserDefinedTypeName","pathNode":{"id":72049,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"12745:21:103"},"referencedDeclaration":89438,"src":"12745:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"12744:37:103"},"returnParameters":{"id":72056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72188,"src":"12814:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72054,"name":"uint","nodeType":"ElementaryTypeName","src":"12814:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72269,"nodeType":"FunctionDefinition","src":"14376:589:103","nodes":[],"body":{"id":72268,"nodeType":"Block","src":"14508:457:103","nodes":[],"statements":[{"assignments":[72207],"declarations":[{"constant":false,"id":72207,"mutability":"mutable","name":"params","nameLocation":"14538:6:103","nodeType":"VariableDeclaration","scope":72268,"src":"14518:26:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairParams[]"},"typeName":{"baseType":{"id":72205,"nodeType":"UserDefinedTypeName","pathNode":{"id":72204,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"14518:10:103"},"referencedDeclaration":88543,"src":"14518:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"id":72206,"nodeType":"ArrayTypeName","src":"14518:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairParams[]"}},"visibility":"internal"}],"id":72215,"initialValue":{"arguments":[{"expression":{"id":72212,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72192,"src":"14564:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":72213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14564:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14547:16:103","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IPairInfos.PairParams memory[] memory)"},"typeName":{"baseType":{"id":72209,"nodeType":"UserDefinedTypeName","pathNode":{"id":72208,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"14551:10:103"},"referencedDeclaration":88543,"src":"14551:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"id":72210,"nodeType":"ArrayTypeName","src":"14551:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairParams[]"}}},"id":72214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14547:32:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairParams memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14518:61:103"},{"assignments":[72220],"declarations":[{"constant":false,"id":72220,"mutability":"mutable","name":"rolloverFees","nameLocation":"14615:12:103","nodeType":"VariableDeclaration","scope":72268,"src":"14589:38:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees[]"},"typeName":{"baseType":{"id":72218,"nodeType":"UserDefinedTypeName","pathNode":{"id":72217,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"14589:16:103"},"referencedDeclaration":88550,"src":"14589:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}},"id":72219,"nodeType":"ArrayTypeName","src":"14589:18:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees[]"}},"visibility":"internal"}],"id":72228,"initialValue":{"arguments":[{"expression":{"id":72225,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72192,"src":"14653:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":72226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14653:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14630:22:103","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IPairInfos.PairRolloverFees memory[] memory)"},"typeName":{"baseType":{"id":72222,"nodeType":"UserDefinedTypeName","pathNode":{"id":72221,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"14634:16:103"},"referencedDeclaration":88550,"src":"14634:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}},"id":72223,"nodeType":"ArrayTypeName","src":"14634:18:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees[]"}}},"id":72227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14630:38:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14589:79:103"},{"body":{"id":72262,"nodeType":"Block","src":"14713:206:103","statements":[{"assignments":[72237],"declarations":[{"constant":false,"id":72237,"mutability":"mutable","name":"index","nameLocation":"14732:5:103","nodeType":"VariableDeclaration","scope":72262,"src":"14727:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72236,"name":"uint","nodeType":"ElementaryTypeName","src":"14727:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72241,"initialValue":{"baseExpression":{"id":72238,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72192,"src":"14740:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":72240,"indexExpression":{"id":72239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72230,"src":"14748:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14740:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14727:23:103"},{"expression":{"id":72248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":72242,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72207,"src":"14765:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairParams memory[] memory"}},"id":72244,"indexExpression":{"id":72243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72230,"src":"14772:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14765:9:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_memory_ptr","typeString":"struct IPairInfos.PairParams memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":72245,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"14777:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72247,"indexExpression":{"id":72246,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72237,"src":"14788:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14777:17:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"src":"14765:29:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_memory_ptr","typeString":"struct IPairInfos.PairParams memory"}},"id":72249,"nodeType":"ExpressionStatement","src":"14765:29:103"},{"expression":{"id":72256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":72250,"name":"rolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72220,"src":"14808:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees memory[] memory"}},"id":72252,"indexExpression":{"id":72251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72230,"src":"14821:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14808:15:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":72253,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"14826:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":72255,"indexExpression":{"id":72254,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72237,"src":"14843:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14826:23:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"src":"14808:41:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees memory"}},"id":72257,"nodeType":"ExpressionStatement","src":"14808:41:103"},{"id":72261,"nodeType":"UncheckedBlock","src":"14863:46:103","statements":[{"expression":{"id":72259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14891:3:103","subExpression":{"id":72258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72230,"src":"14893:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72260,"nodeType":"ExpressionStatement","src":"14891:3:103"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72230,"src":"14692:1:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":72233,"name":"indices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72192,"src":"14696:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":72234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14696:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14692:18:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72263,"initializationExpression":{"assignments":[72230],"declarations":[{"constant":false,"id":72230,"mutability":"mutable","name":"i","nameLocation":"14689:1:103","nodeType":"VariableDeclaration","scope":72263,"src":"14684:6:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72229,"name":"uint","nodeType":"ElementaryTypeName","src":"14684:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72231,"nodeType":"VariableDeclarationStatement","src":"14684:6:103"},"nodeType":"ForStatement","src":"14679:240:103"},{"expression":{"components":[{"id":72264,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72207,"src":"14937:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairParams memory[] memory"}},{"id":72265,"name":"rolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72220,"src":"14945:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees memory[] memory"}}],"id":72266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14936:22:103","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(struct IPairInfos.PairParams memory[] memory,struct IPairInfos.PairRolloverFees memory[] memory)"}},"functionReturnParameters":72202,"id":72267,"nodeType":"Return","src":"14929:29:103"}]},"documentation":{"id":72189,"nodeType":"StructuredDocumentation","src":"14090:281:103","text":"@notice Fetches and returns trading pair information for specified indices\n @param indices An array of indices for which to fetch the pair information\n @return PairParams[] and PairRolloverFees[] arrays containing trading pair parameters and rollover fees"},"functionSelector":"0ea77770","implemented":true,"kind":"function","modifiers":[],"name":"getPairInfos","nameLocation":"14385:12:103","parameters":{"id":72193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72192,"mutability":"mutable","name":"indices","nameLocation":"14423:7:103","nodeType":"VariableDeclaration","scope":72269,"src":"14407:23:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":72190,"name":"uint","nodeType":"ElementaryTypeName","src":"14407:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72191,"nodeType":"ArrayTypeName","src":"14407:6:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14397:39:103"},"returnParameters":{"id":72202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72197,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72269,"src":"14460:19:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairParams[]"},"typeName":{"baseType":{"id":72195,"nodeType":"UserDefinedTypeName","pathNode":{"id":72194,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"14460:10:103"},"referencedDeclaration":88543,"src":"14460:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"id":72196,"nodeType":"ArrayTypeName","src":"14460:12:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairParams_$88543_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairParams[]"}},"visibility":"internal"},{"constant":false,"id":72201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72269,"src":"14481:25:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_memory_ptr_$dyn_memory_ptr","typeString":"struct IPairInfos.PairRolloverFees[]"},"typeName":{"baseType":{"id":72199,"nodeType":"UserDefinedTypeName","pathNode":{"id":72198,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"14481:16:103"},"referencedDeclaration":88550,"src":"14481:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}},"id":72200,"nodeType":"ArrayTypeName","src":"14481:18:103","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PairRolloverFees_$88550_storage_$dyn_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees[]"}},"visibility":"internal"}],"src":"14459:48:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72283,"nodeType":"FunctionDefinition","src":"15186:144:103","nodes":[],"body":{"id":72282,"nodeType":"Block","src":"15264:66:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72277,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"15281:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72279,"indexExpression":{"id":72278,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72272,"src":"15292:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15281:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":72280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"onePercentDepthAbove","nodeType":"MemberAccess","referencedDeclaration":88538,"src":"15281:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72276,"id":72281,"nodeType":"Return","src":"15274:49:103"}]},"documentation":{"id":72270,"nodeType":"StructuredDocumentation","src":"14970:211:103","text":"@notice Get the one percent depth above the current price for the given pair index\n @param pairIndex The index of the trading pair\n @return The one percent depth above the current price"},"functionSelector":"cfc23e9e","implemented":true,"kind":"function","modifiers":[],"name":"getOnePercentDepthAbove","nameLocation":"15195:23:103","parameters":{"id":72273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72272,"mutability":"mutable","name":"pairIndex","nameLocation":"15224:9:103","nodeType":"VariableDeclaration","scope":72283,"src":"15219:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72271,"name":"uint","nodeType":"ElementaryTypeName","src":"15219:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15218:16:103"},"returnParameters":{"id":72276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72283,"src":"15258:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72274,"name":"uint","nodeType":"ElementaryTypeName","src":"15258:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15257:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72297,"nodeType":"FunctionDefinition","src":"15561:144:103","nodes":[],"body":{"id":72296,"nodeType":"Block","src":"15639:66:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72291,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"15656:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72293,"indexExpression":{"id":72292,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72286,"src":"15667:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15656:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":72294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"onePercentDepthBelow","nodeType":"MemberAccess","referencedDeclaration":88540,"src":"15656:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72290,"id":72295,"nodeType":"Return","src":"15649:49:103"}]},"documentation":{"id":72284,"nodeType":"StructuredDocumentation","src":"15336:220:103","text":" @notice Retrieves the one percent depth below the current price for a given pair index\n @param pairIndex The index of the trading pair\n @return The one percent depth below the current price"},"functionSelector":"2b180a7d","implemented":true,"kind":"function","modifiers":[],"name":"getOnePercentDepthBelow","nameLocation":"15570:23:103","parameters":{"id":72287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72286,"mutability":"mutable","name":"pairIndex","nameLocation":"15599:9:103","nodeType":"VariableDeclaration","scope":72297,"src":"15594:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72285,"name":"uint","nodeType":"ElementaryTypeName","src":"15594:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15593:16:103"},"returnParameters":{"id":72290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72297,"src":"15633:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72288,"name":"uint","nodeType":"ElementaryTypeName","src":"15633:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15632:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72311,"nodeType":"FunctionDefinition","src":"15898:144:103","nodes":[],"body":{"id":72310,"nodeType":"Block","src":"15976:66:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72305,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"15993:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72307,"indexExpression":{"id":72306,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72300,"src":"16004:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15993:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":72308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rolloverFeePerBlockP","nodeType":"MemberAccess","referencedDeclaration":88542,"src":"15993:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72304,"id":72309,"nodeType":"Return","src":"15986:49:103"}]},"documentation":{"id":72298,"nodeType":"StructuredDocumentation","src":"15711:182:103","text":" @notice Retrieves the rollover fee per block for a given pair index\n @param pairIndex The index of the trading pair\n @return The rollover fee per block"},"functionSelector":"338139ad","implemented":true,"kind":"function","modifiers":[],"name":"getRolloverFeePerBlockP","nameLocation":"15907:23:103","parameters":{"id":72301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72300,"mutability":"mutable","name":"pairIndex","nameLocation":"15936:9:103","nodeType":"VariableDeclaration","scope":72311,"src":"15931:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72299,"name":"uint","nodeType":"ElementaryTypeName","src":"15931:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15930:16:103"},"returnParameters":{"id":72304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72311,"src":"15970:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72302,"name":"uint","nodeType":"ElementaryTypeName","src":"15970:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15969:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72325,"nodeType":"FunctionDefinition","src":"16279:141:103","nodes":[],"body":{"id":72324,"nodeType":"Block","src":"16356:64:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72319,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"16373:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":72321,"indexExpression":{"id":72320,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72314,"src":"16390:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16373:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"id":72322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiLong","nodeType":"MemberAccess","referencedDeclaration":88545,"src":"16373:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72318,"id":72323,"nodeType":"Return","src":"16366:47:103"}]},"documentation":{"id":72312,"nodeType":"StructuredDocumentation","src":"16048:226:103","text":" @notice Retrieves the accumulated rollover fees for long positions for a given pair index\n @param pairIndex The index of the trading pair\n @return The accumulated rollover fees for long positions"},"functionSelector":"7d827137","implemented":true,"kind":"function","modifiers":[],"name":"getAccRolloverFeesLong","nameLocation":"16288:22:103","parameters":{"id":72315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72314,"mutability":"mutable","name":"pairIndex","nameLocation":"16316:9:103","nodeType":"VariableDeclaration","scope":72325,"src":"16311:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72313,"name":"uint","nodeType":"ElementaryTypeName","src":"16311:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16310:16:103"},"returnParameters":{"id":72318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72325,"src":"16350:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72316,"name":"uint","nodeType":"ElementaryTypeName","src":"16350:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16349:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72339,"nodeType":"FunctionDefinition","src":"16659:143:103","nodes":[],"body":{"id":72338,"nodeType":"Block","src":"16737:65:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72333,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"16754:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":72335,"indexExpression":{"id":72334,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72328,"src":"16771:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16754:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"id":72336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiShort","nodeType":"MemberAccess","referencedDeclaration":88547,"src":"16754:41:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72332,"id":72337,"nodeType":"Return","src":"16747:48:103"}]},"documentation":{"id":72326,"nodeType":"StructuredDocumentation","src":"16426:228:103","text":" @notice Retrieves the accumulated rollover fees for short positions for a given pair index\n @param pairIndex The index of the trading pair\n @return The accumulated rollover fees for short positions"},"functionSelector":"726219f3","implemented":true,"kind":"function","modifiers":[],"name":"getAccRolloverFeesShort","nameLocation":"16668:23:103","parameters":{"id":72329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72328,"mutability":"mutable","name":"pairIndex","nameLocation":"16697:9:103","nodeType":"VariableDeclaration","scope":72339,"src":"16692:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72327,"name":"uint","nodeType":"ElementaryTypeName","src":"16692:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16691:16:103"},"returnParameters":{"id":72332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72339,"src":"16731:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72330,"name":"uint","nodeType":"ElementaryTypeName","src":"16731:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16730:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72353,"nodeType":"FunctionDefinition","src":"17076:151:103","nodes":[],"body":{"id":72352,"nodeType":"Block","src":"17160:67:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":72347,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"17177:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":72349,"indexExpression":{"id":72348,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72342,"src":"17194:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17177:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"id":72350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastUpdateBlock","nodeType":"MemberAccess","referencedDeclaration":88549,"src":"17177:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72346,"id":72351,"nodeType":"Return","src":"17170:50:103"}]},"documentation":{"id":72340,"nodeType":"StructuredDocumentation","src":"16808:263:103","text":" @notice Retrieves the last block where the accumulated rollover fees were updated for a given pair index\n @param pairIndex The index of the trading pair\n @return The last block number where the accumulated rollover fees were updated"},"functionSelector":"0e0052fc","implemented":true,"kind":"function","modifiers":[],"name":"getAccRolloverFeesUpdateBlock","nameLocation":"17085:29:103","parameters":{"id":72343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72342,"mutability":"mutable","name":"pairIndex","nameLocation":"17120:9:103","nodeType":"VariableDeclaration","scope":72353,"src":"17115:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72341,"name":"uint","nodeType":"ElementaryTypeName","src":"17115:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17114:16:103"},"returnParameters":{"id":72346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72353,"src":"17154:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72344,"name":"uint","nodeType":"ElementaryTypeName","src":"17154:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17153:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72375,"nodeType":"FunctionDefinition","src":"17530:234:103","nodes":[],"body":{"id":72374,"nodeType":"Block","src":"17686:78:103","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":72365,"name":"tradeInitialAccFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71154,"src":"17703:19:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)))"}},"id":72367,"indexExpression":{"id":72366,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72356,"src":"17723:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17703:27:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref))"}},"id":72369,"indexExpression":{"id":72368,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72358,"src":"17731:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17703:38:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$","typeString":"mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)"}},"id":72371,"indexExpression":{"id":72370,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72360,"src":"17742:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17703:45:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage","typeString":"struct IPairInfos.TradeInitialAccFees storage ref"}},"id":72372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rollover","nodeType":"MemberAccess","referencedDeclaration":88552,"src":"17703:54:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72364,"id":72373,"nodeType":"Return","src":"17696:61:103"}]},"documentation":{"id":72354,"nodeType":"StructuredDocumentation","src":"17233:292:103","text":" @notice Retrieves the starting rollover fee accumulator of a trade\n @param trader Address of the trader\n @param pairIndex The index of the trading pair\n @param index The index of the trade\n @return The initial accumulated rollover fees for the trade"},"functionSelector":"fe3cfd8c","implemented":true,"kind":"function","modifiers":[],"name":"getTradeInitialAccRolloverFeesPerCollateral","nameLocation":"17539:43:103","parameters":{"id":72361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72356,"mutability":"mutable","name":"trader","nameLocation":"17600:6:103","nodeType":"VariableDeclaration","scope":72375,"src":"17592:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":72355,"name":"address","nodeType":"ElementaryTypeName","src":"17592:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":72358,"mutability":"mutable","name":"pairIndex","nameLocation":"17621:9:103","nodeType":"VariableDeclaration","scope":72375,"src":"17616:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72357,"name":"uint","nodeType":"ElementaryTypeName","src":"17616:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72360,"mutability":"mutable","name":"index","nameLocation":"17645:5:103","nodeType":"VariableDeclaration","scope":72375,"src":"17640:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72359,"name":"uint","nodeType":"ElementaryTypeName","src":"17640:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17582:74:103"},"returnParameters":{"id":72364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72375,"src":"17680:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72362,"name":"uint","nodeType":"ElementaryTypeName","src":"17680:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17679:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":72431,"nodeType":"FunctionDefinition","src":"18029:431:103","nodes":[],"body":{"id":72430,"nodeType":"Block","src":"18139:321:103","nodes":[],"statements":[{"assignments":[72388],"declarations":[{"constant":false,"id":72388,"mutability":"mutable","name":"groupUtilization","nameLocation":"18163:16:103","nodeType":"VariableDeclaration","scope":72430,"src":"18158:21:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72387,"name":"uint","nodeType":"ElementaryTypeName","src":"18158:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72402,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72389,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72380,"src":"18184:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72390,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72382,"src":"18194:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18184:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72392,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18183:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72393,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"18206:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18183:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18182:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"arguments":[{"id":72398,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72378,"src":"18257:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72396,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"18233:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":72397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"groupMaxOI","nodeType":"MemberAccess","referencedDeclaration":88952,"src":"18233:23:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":72399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18233:35:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72400,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18232:37:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18182:87:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18158:111:103"},{"assignments":[72404],"declarations":[{"constant":false,"id":72404,"mutability":"mutable","name":"pairUtilization","nameLocation":"18284:15:103","nodeType":"VariableDeclaration","scope":72430,"src":"18279:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72403,"name":"uint","nodeType":"ElementaryTypeName","src":"18279:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72418,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72405,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72380,"src":"18304:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72406,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72382,"src":"18314:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18304:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18303:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72409,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"18326:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18303:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18302:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"arguments":[{"id":72414,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72378,"src":"18376:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72412,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"18353:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":72413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMaxOI","nodeType":"MemberAccess","referencedDeclaration":89021,"src":"18353:22:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":72415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18353:34:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72416,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18352:36:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18302:86:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18279:109:103"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3735","id":72419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18407:2:103","typeDescriptions":{"typeIdentifier":"t_rational_75_by_1","typeString":"int_const 75"},"value":"75"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72420,"name":"groupUtilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72388,"src":"18410:16:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18407:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3235","id":72422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18429:2:103","typeDescriptions":{"typeIdentifier":"t_rational_25_by_1","typeString":"int_const 25"},"value":"25"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72423,"name":"pairUtilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72404,"src":"18432:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18429:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18407:40:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72426,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18406:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":72427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18449:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"18406:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72386,"id":72429,"nodeType":"Return","src":"18399:53:103"}]},"documentation":{"id":72376,"nodeType":"StructuredDocumentation","src":"17770:254:103","text":" @notice Retrieves the blended utlization ratio\n @param _pairIndex The index of the trading pair\n @param _longOI Long Open Interest\n @param _shortOI Short Open Interest\n @return Utlization Ratio in 1e10 precision"},"functionSelector":"c9533ebc","implemented":true,"kind":"function","modifiers":[],"name":"getBlendedUtilizationRatio","nameLocation":"18038:26:103","parameters":{"id":72383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72378,"mutability":"mutable","name":"_pairIndex","nameLocation":"18070:10:103","nodeType":"VariableDeclaration","scope":72431,"src":"18065:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72377,"name":"uint","nodeType":"ElementaryTypeName","src":"18065:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72380,"mutability":"mutable","name":"_longOI","nameLocation":"18087:7:103","nodeType":"VariableDeclaration","scope":72431,"src":"18082:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72379,"name":"uint","nodeType":"ElementaryTypeName","src":"18082:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72382,"mutability":"mutable","name":"_shortOI","nameLocation":"18101:8:103","nodeType":"VariableDeclaration","scope":72431,"src":"18096:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72381,"name":"uint","nodeType":"ElementaryTypeName","src":"18096:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18064:46:103"},"returnParameters":{"id":72386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72431,"src":"18131:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72384,"name":"uint256","nodeType":"ElementaryTypeName","src":"18131:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18130:9:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72579,"nodeType":"FunctionDefinition","src":"18634:951:103","nodes":[],"body":{"id":72578,"nodeType":"Block","src":"18745:840:103","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72445,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"18758:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72446,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"18768:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18758:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":72448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18780:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18758:23:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72452,"nodeType":"IfStatement","src":"18755:36:103","trueBody":{"expression":{"hexValue":"30","id":72450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18790:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":72444,"id":72451,"nodeType":"Return","src":"18783:8:103"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72455,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72434,"src":"18832:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72453,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"18804:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":72454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairGroupIndex","nodeType":"MemberAccess","referencedDeclaration":88908,"src":"18804:27:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":72456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18804:39:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":72457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18847:1:103","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18804:44:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":72576,"nodeType":"Block","src":"19426:153:103","statements":[{"assignments":[72552],"declarations":[{"constant":false,"id":72552,"mutability":"mutable","name":"assetSkew","nameLocation":"19445:9:103","nodeType":"VariableDeclaration","scope":72576,"src":"19440:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72551,"name":"uint","nodeType":"ElementaryTypeName","src":"19440:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72573,"initialValue":{"condition":{"id":72553,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72436,"src":"19457:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19503:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72564,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19507:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19503:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19502:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72567,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19518:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72568,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19529:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19518:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72570,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19517:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19502:36:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19457:81:103","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19466:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72555,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19470:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19466:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72557,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19465:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72558,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19480:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72559,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19491:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19480:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72561,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19479:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19465:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19440:98:103"},{"expression":{"id":72574,"name":"assetSkew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72552,"src":"19559:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72444,"id":72575,"nodeType":"Return","src":"19552:16:103"}]},"id":72577,"nodeType":"IfStatement","src":"18801:778:103","trueBody":{"id":72550,"nodeType":"Block","src":"18849:564:103","statements":[{"assignments":[72464],"declarations":[{"constant":false,"id":72464,"mutability":"mutable","name":"usdOI","nameLocation":"18891:5:103","nodeType":"VariableDeclaration","scope":72550,"src":"18876:20:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":72462,"name":"uint","nodeType":"ElementaryTypeName","src":"18876:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72463,"length":{"hexValue":"32","id":72461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18881:1:103","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"18876:7:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"id":72468,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":72465,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"18899:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":72466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUsdOI","nodeType":"MemberAccess","referencedDeclaration":89937,"src":"18899:17:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_uint256_$2_memory_ptr_$","typeString":"function () view external returns (uint256[2] memory)"}},"id":72467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18899:19:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"nodeType":"VariableDeclarationStatement","src":"18876:42:103"},{"assignments":[72470],"declarations":[{"constant":false,"id":72470,"mutability":"mutable","name":"index","nameLocation":"18941:5:103","nodeType":"VariableDeclaration","scope":72550,"src":"18936:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72469,"name":"uint","nodeType":"ElementaryTypeName","src":"18936:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72475,"initialValue":{"condition":{"id":72471,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72436,"src":"18949:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":72473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18961:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":72474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18949:13:103","trueExpression":{"hexValue":"30","id":72472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18957:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18936:26:103"},{"assignments":[72477],"declarations":[{"constant":false,"id":72477,"mutability":"mutable","name":"indexOI","nameLocation":"18985:7:103","nodeType":"VariableDeclaration","scope":72550,"src":"18980:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72476,"name":"uint","nodeType":"ElementaryTypeName","src":"18980:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72489,"initialValue":{"baseExpression":{"id":72478,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72464,"src":"18995:5:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":72488,"indexExpression":{"condition":{"arguments":[{"id":72481,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72434,"src":"19028:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72479,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"19001:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":72480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isUSDCAligned","nodeType":"MemberAccess","referencedDeclaration":89040,"src":"19001:26:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":72482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19001:38:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":72484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19050:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72485,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72470,"src":"19054:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19050:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19001:58:103","trueExpression":{"id":72483,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72470,"src":"19042:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18995:65:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18980:80:103"},{"assignments":[72491],"declarations":[{"constant":false,"id":72491,"mutability":"mutable","name":"nonIndexOI","nameLocation":"19083:10:103","nodeType":"VariableDeclaration","scope":72550,"src":"19078:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72490,"name":"uint","nodeType":"ElementaryTypeName","src":"19078:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72503,"initialValue":{"baseExpression":{"id":72492,"name":"usdOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72464,"src":"19096:5:103","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":72502,"indexExpression":{"condition":{"arguments":[{"id":72495,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72434,"src":"19129:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72493,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71129,"src":"19102:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":72494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isUSDCAligned","nodeType":"MemberAccess","referencedDeclaration":89040,"src":"19102:26:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":72496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19102:38:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":72500,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72470,"src":"19155:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19102:58:103","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":72497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19143:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72498,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72470,"src":"19147:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19143:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19096:65:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19078:83:103"},{"assignments":[72505],"declarations":[{"constant":false,"id":72505,"mutability":"mutable","name":"usdSkew","nameLocation":"19184:7:103","nodeType":"VariableDeclaration","scope":72550,"src":"19179:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72504,"name":"uint","nodeType":"ElementaryTypeName","src":"19179:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72515,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19195:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72507,"name":"indexOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72477,"src":"19199:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19195:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72509,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19194:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72510,"name":"nonIndexOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72491,"src":"19209:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72511,"name":"indexOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72477,"src":"19221:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19209:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72513,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19208:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19194:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19179:50:103"},{"assignments":[72517],"declarations":[{"constant":false,"id":72517,"mutability":"mutable","name":"assetSkew","nameLocation":"19252:9:103","nodeType":"VariableDeclaration","scope":72550,"src":"19247:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72516,"name":"uint","nodeType":"ElementaryTypeName","src":"19247:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72538,"initialValue":{"condition":{"id":72518,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72436,"src":"19264:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19310:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72529,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19314:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19310:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72531,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19309:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72532,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19325:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72533,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19336:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19325:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19324:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19309:36:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19264:81:103","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19273:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72520,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19277:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19273:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19272:13:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72523,"name":"_longOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72438,"src":"19287:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72524,"name":"_shortOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72440,"src":"19298:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19287:19:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72526,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19286:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19272:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19247:98:103"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3735","id":72539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19372:2:103","typeDescriptions":{"typeIdentifier":"t_rational_75_by_1","typeString":"int_const 75"},"value":"75"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72540,"name":"usdSkew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72505,"src":"19375:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19372:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3235","id":72542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19385:2:103","typeDescriptions":{"typeIdentifier":"t_rational_25_by_1","typeString":"int_const 25"},"value":"25"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72543,"name":"assetSkew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72517,"src":"19388:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19385:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19372:25:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19371:27:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":72547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19399:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19371:31:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72444,"id":72549,"nodeType":"Return","src":"19364:38:103"}]}}]},"documentation":{"id":72432,"nodeType":"StructuredDocumentation","src":"18465:164:103","text":" @notice Retrieves the blended skew ratio\n @param _pairIndex The index of the trading pair\n @return Utlization Ratio in 1e10 precision"},"functionSelector":"6676d850","implemented":true,"kind":"function","modifiers":[],"name":"getBlendedSkew","nameLocation":"18643:14:103","parameters":{"id":72441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72434,"mutability":"mutable","name":"_pairIndex","nameLocation":"18663:10:103","nodeType":"VariableDeclaration","scope":72579,"src":"18658:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72433,"name":"uint","nodeType":"ElementaryTypeName","src":"18658:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72436,"mutability":"mutable","name":"_long","nameLocation":"18680:5:103","nodeType":"VariableDeclaration","scope":72579,"src":"18675:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":72435,"name":"bool","nodeType":"ElementaryTypeName","src":"18675:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":72438,"mutability":"mutable","name":"_longOI","nameLocation":"18693:7:103","nodeType":"VariableDeclaration","scope":72579,"src":"18688:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72437,"name":"uint","nodeType":"ElementaryTypeName","src":"18688:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72440,"mutability":"mutable","name":"_shortOI","nameLocation":"18707:8:103","nodeType":"VariableDeclaration","scope":72579,"src":"18702:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72439,"name":"uint","nodeType":"ElementaryTypeName","src":"18702:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18657:59:103"},"returnParameters":{"id":72444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72579,"src":"18737:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72442,"name":"uint256","nodeType":"ElementaryTypeName","src":"18737:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18736:9:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72752,"nodeType":"FunctionDefinition","src":"19915:1799:103","nodes":[],"body":{"id":72751,"nodeType":"Block","src":"20020:1694:103","nodes":[],"statements":[{"assignments":[72591],"declarations":[{"constant":false,"id":72591,"mutability":"mutable","name":"f","nameLocation":"20055:1:103","nodeType":"VariableDeclaration","scope":72751,"src":"20030:26:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"},"typeName":{"id":72590,"nodeType":"UserDefinedTypeName","pathNode":{"id":72589,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"20030:16:103"},"referencedDeclaration":88550,"src":"20030:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}},"visibility":"internal"}],"id":72595,"initialValue":{"baseExpression":{"id":72592,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"20059:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":72594,"indexExpression":{"id":72593,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20076:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20059:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20030:56:103"},{"assignments":[72597],"declarations":[{"constant":false,"id":72597,"mutability":"mutable","name":"blendedUtilizationRatio","nameLocation":"20104:23:103","nodeType":"VariableDeclaration","scope":72751,"src":"20096:31:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72596,"name":"uint256","nodeType":"ElementaryTypeName","src":"20096:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72598,"nodeType":"VariableDeclarationStatement","src":"20096:31:103"},{"expression":{"id":72602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72599,"name":"valueLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72585,"src":"20146:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":72600,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72591,"src":"20158:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":72601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiLong","nodeType":"MemberAccess","referencedDeclaration":88545,"src":"20158:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20146:26:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72603,"nodeType":"ExpressionStatement","src":"20146:26:103"},{"expression":{"id":72607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72604,"name":"valueShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72587,"src":"20182:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":72605,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72591,"src":"20195:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":72606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiShort","nodeType":"MemberAccess","referencedDeclaration":88547,"src":"20195:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20182:28:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72608,"nodeType":"ExpressionStatement","src":"20182:28:103"},{"assignments":[72610],"declarations":[{"constant":false,"id":72610,"mutability":"mutable","name":"openInterestUSDCLong","nameLocation":"20226:20:103","nodeType":"VariableDeclaration","scope":72751,"src":"20221:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72609,"name":"uint","nodeType":"ElementaryTypeName","src":"20221:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72616,"initialValue":{"arguments":[{"id":72613,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20275:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":72614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20286:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":72611,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"20249:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":72612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"20249:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":72615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20249:39:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20221:67:103"},{"assignments":[72618],"declarations":[{"constant":false,"id":72618,"mutability":"mutable","name":"openInterestUSDCShort","nameLocation":"20303:21:103","nodeType":"VariableDeclaration","scope":72751,"src":"20298:26:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72617,"name":"uint","nodeType":"ElementaryTypeName","src":"20298:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72624,"initialValue":{"arguments":[{"id":72621,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20353:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":72622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20364:1:103","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":72619,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71126,"src":"20327:8:103","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":72620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"20327:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":72623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20327:39:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20298:68:103"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72625,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72610,"src":"20381:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":72626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20404:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20381:24:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72691,"nodeType":"IfStatement","src":"20377:718:103","trueBody":{"id":72690,"nodeType":"Block","src":"20407:688:103","statements":[{"expression":{"id":72634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72628,"name":"blendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72597,"src":"20421:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":72630,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20474:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72631,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72610,"src":"20484:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72632,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72618,"src":"20506:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72629,"name":"getBlendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72431,"src":"20447:26:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":72633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20447:81:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20421:107:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72635,"nodeType":"ExpressionStatement","src":"20421:107:103"},{"assignments":[72637],"declarations":[{"constant":false,"id":72637,"mutability":"mutable","name":"skewRatio","nameLocation":"20547:9:103","nodeType":"VariableDeclaration","scope":72690,"src":"20542:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72636,"name":"uint","nodeType":"ElementaryTypeName","src":"20542:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72644,"initialValue":{"arguments":[{"id":72639,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20574:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":72640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20585:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":72641,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72610,"src":"20591:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72642,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72618,"src":"20613:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72638,"name":"getBlendedSkew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72579,"src":"20559:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,bool,uint256,uint256) view returns (uint256)"}},"id":72643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20559:76:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20542:93:103"},{"assignments":[72646],"declarations":[{"constant":false,"id":72646,"mutability":"mutable","name":"longMultiplier","nameLocation":"20654:14:103","nodeType":"VariableDeclaration","scope":72690,"src":"20649:19:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72645,"name":"uint","nodeType":"ElementaryTypeName","src":"20649:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72662,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72647,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"20671:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72648,"name":"blendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72597,"src":"20683:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72649,"name":"skewRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72637,"src":"20707:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20683:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20682:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20671:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":72653,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"20719:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"316532","id":72654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20730:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"1e2"},"src":"20719:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72656,"name":"blendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72597,"src":"20736:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72657,"name":"skewRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72637,"src":"20760:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20736:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20719:50:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20718:52:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20671:99:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20649:121:103"},{"assignments":[72664],"declarations":[{"constant":false,"id":72664,"mutability":"mutable","name":"rolloverFeesPaidByLongs","nameLocation":"20790:23:103","nodeType":"VariableDeclaration","scope":72690,"src":"20785:28:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72663,"name":"uint","nodeType":"ElementaryTypeName","src":"20785:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72685,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72665,"name":"longMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72646,"src":"20817:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72666,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"20850:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20817:43:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":72668,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"20879:5:103","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":72669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"20879:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":72670,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72591,"src":"20894:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":72671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastUpdateBlock","nodeType":"MemberAccess","referencedDeclaration":88549,"src":"20894:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20879:32:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20878:34:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20817:95:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":72675,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"20931:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72677,"indexExpression":{"id":72676,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"20942:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20931:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":72678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rolloverFeePerBlockP","nodeType":"MemberAccess","referencedDeclaration":88542,"src":"20931:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20817:156:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20816:158:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72681,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"20993:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20816:187:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72683,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21022:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20816:216:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20785:247:103"},{"expression":{"id":72688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72686,"name":"valueLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72585,"src":"21048:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":72687,"name":"rolloverFeesPaidByLongs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72664,"src":"21061:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21048:36:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72689,"nodeType":"ExpressionStatement","src":"21048:36:103"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72692,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72618,"src":"21109:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":72693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21133:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21109:25:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72750,"nodeType":"IfStatement","src":"21105:603:103","trueBody":{"id":72749,"nodeType":"Block","src":"21136:572:103","statements":[{"assignments":[72696],"declarations":[{"constant":false,"id":72696,"mutability":"mutable","name":"skewRatio","nameLocation":"21156:9:103","nodeType":"VariableDeclaration","scope":72749,"src":"21151:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72695,"name":"uint","nodeType":"ElementaryTypeName","src":"21151:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72703,"initialValue":{"arguments":[{"id":72698,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"21183:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":72699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21194:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":72700,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72610,"src":"21201:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72701,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72618,"src":"21223:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72697,"name":"getBlendedSkew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72579,"src":"21168:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,bool,uint256,uint256) view returns (uint256)"}},"id":72702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21168:77:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21151:94:103"},{"assignments":[72705],"declarations":[{"constant":false,"id":72705,"mutability":"mutable","name":"shortMultiplier","nameLocation":"21264:15:103","nodeType":"VariableDeclaration","scope":72749,"src":"21259:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72704,"name":"uint","nodeType":"ElementaryTypeName","src":"21259:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72721,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72706,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21282:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72707,"name":"blendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72597,"src":"21294:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72708,"name":"skewRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72696,"src":"21318:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21294:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72710,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21293:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21282:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":72712,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21330:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"316532","id":72713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21341:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"1e2"},"src":"21330:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72715,"name":"blendedUtilizationRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72597,"src":"21347:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72716,"name":"skewRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72696,"src":"21371:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21347:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21330:50:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72719,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21329:52:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21282:99:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21259:122:103"},{"assignments":[72723],"declarations":[{"constant":false,"id":72723,"mutability":"mutable","name":"rolloverFeesPaidByShort","nameLocation":"21400:23:103","nodeType":"VariableDeclaration","scope":72749,"src":"21395:28:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72722,"name":"uint","nodeType":"ElementaryTypeName","src":"21395:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72744,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72724,"name":"shortMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72705,"src":"21427:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72725,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21461:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21427:44:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":72727,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21491:5:103","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":72728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"21491:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":72729,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72591,"src":"21506:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":72730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lastUpdateBlock","nodeType":"MemberAccess","referencedDeclaration":88549,"src":"21506:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21491:32:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21490:34:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21427:97:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":72734,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"21543:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":72736,"indexExpression":{"id":72735,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72582,"src":"21554:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21543:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":72737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rolloverFeePerBlockP","nodeType":"MemberAccess","referencedDeclaration":88542,"src":"21543:42:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21427:158:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72739,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21426:160:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72740,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21605:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21426:189:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72742,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"21634:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21426:218:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21395:249:103"},{"expression":{"id":72747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72745,"name":"valueShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72587,"src":"21660:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":72746,"name":"rolloverFeesPaidByShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72723,"src":"21674:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21660:37:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72748,"nodeType":"ExpressionStatement","src":"21660:37:103"}]}}]},"documentation":{"id":72580,"nodeType":"StructuredDocumentation","src":"19591:319:103","text":" @notice Retrieves the pending accumulated rollover fees for a given trading pair\n @param pairIndex The index of the trading pair\n @return valueLong The pending accumulated rollover fees for long positions\n @return valueShort The pending accumulated rollover fees for short positions"},"functionSelector":"ab21a05c","implemented":true,"kind":"function","modifiers":[],"name":"getPendingAccRolloverFees","nameLocation":"19924:25:103","parameters":{"id":72583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72582,"mutability":"mutable","name":"pairIndex","nameLocation":"19955:9:103","nodeType":"VariableDeclaration","scope":72752,"src":"19950:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72581,"name":"uint","nodeType":"ElementaryTypeName","src":"19950:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19949:16:103"},"returnParameters":{"id":72588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72585,"mutability":"mutable","name":"valueLong","nameLocation":"19992:9:103","nodeType":"VariableDeclaration","scope":72752,"src":"19987:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72584,"name":"uint","nodeType":"ElementaryTypeName","src":"19987:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72587,"mutability":"mutable","name":"valueShort","nameLocation":"20008:10:103","nodeType":"VariableDeclaration","scope":72752,"src":"20003:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72586,"name":"uint","nodeType":"ElementaryTypeName","src":"20003:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19986:33:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72809,"nodeType":"FunctionDefinition","src":"22155:563:103","nodes":[],"body":{"id":72808,"nodeType":"Block","src":"22361:357:103","nodes":[],"statements":[{"assignments":[72773],"declarations":[{"constant":false,"id":72773,"mutability":"mutable","name":"t","nameLocation":"22398:1:103","nodeType":"VariableDeclaration","scope":72808,"src":"22371:28:103","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_memory_ptr","typeString":"struct IPairInfos.TradeInitialAccFees"},"typeName":{"id":72772,"nodeType":"UserDefinedTypeName","pathNode":{"id":72771,"name":"TradeInitialAccFees","nodeType":"IdentifierPath","referencedDeclaration":88555,"src":"22371:19:103"},"referencedDeclaration":88555,"src":"22371:19:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage_ptr","typeString":"struct IPairInfos.TradeInitialAccFees"}},"visibility":"internal"}],"id":72781,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":72774,"name":"tradeInitialAccFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71154,"src":"22402:19:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)))"}},"id":72776,"indexExpression":{"id":72775,"name":"trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72755,"src":"22422:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22402:27:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref))"}},"id":72778,"indexExpression":{"id":72777,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72757,"src":"22430:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22402:38:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TradeInitialAccFees_$88555_storage_$","typeString":"mapping(uint256 => struct IPairInfos.TradeInitialAccFees storage ref)"}},"id":72780,"indexExpression":{"id":72779,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72759,"src":"22441:5:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22402:45:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_storage","typeString":"struct IPairInfos.TradeInitialAccFees storage ref"}},"nodeType":"VariableDeclarationStatement","src":"22371:76:103"},{"condition":{"id":72784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"22461:20:103","subExpression":{"expression":{"id":72782,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72773,"src":"22462:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_memory_ptr","typeString":"struct IPairInfos.TradeInitialAccFees memory"}},"id":72783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openedAfterUpdate","nodeType":"MemberAccess","referencedDeclaration":88554,"src":"22462:19:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72788,"nodeType":"IfStatement","src":"22457:59:103","trueBody":{"id":72787,"nodeType":"Block","src":"22483:33:103","statements":[{"expression":{"hexValue":"30","id":72785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22504:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":72770,"id":72786,"nodeType":"Return","src":"22497:8:103"}]}},{"assignments":[72790,72792],"declarations":[{"constant":false,"id":72790,"mutability":"mutable","name":"pendingLong","nameLocation":"22532:11:103","nodeType":"VariableDeclaration","scope":72808,"src":"22527:16:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72789,"name":"uint","nodeType":"ElementaryTypeName","src":"22527:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72792,"mutability":"mutable","name":"pendingShort","nameLocation":"22550:12:103","nodeType":"VariableDeclaration","scope":72808,"src":"22545:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72791,"name":"uint","nodeType":"ElementaryTypeName","src":"22545:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":72796,"initialValue":{"arguments":[{"id":72794,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72757,"src":"22592:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72793,"name":"getPendingAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72752,"src":"22566:25:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) view returns (uint256,uint256)"}},"id":72795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22566:36:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22526:76:103"},{"expression":{"arguments":[{"expression":{"id":72798,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72773,"src":"22643:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInitialAccFees_$88555_memory_ptr","typeString":"struct IPairInfos.TradeInitialAccFees memory"}},"id":72799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"rollover","nodeType":"MemberAccess","referencedDeclaration":88552,"src":"22643:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"id":72800,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72761,"src":"22655:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":72802,"name":"pendingShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72792,"src":"22676:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22655:33:103","trueExpression":{"id":72801,"name":"pendingLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72790,"src":"22662:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72804,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72763,"src":"22690:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":72805,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72765,"src":"22702:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72797,"name":"getTradeRolloverFeePure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72837,"src":"22619:23:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":72806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22619:92:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72770,"id":72807,"nodeType":"Return","src":"22612:99:103"}]},"baseFunctions":[88736],"documentation":{"id":72753,"nodeType":"StructuredDocumentation","src":"21719:431:103","text":" @notice Calculates the trade rollover fee for a given trader and trading pair\n @param trader Address of the trader\n @param pairIndex The index of the trading pair\n @param index The index of the trade\n @param long Indicates if the position is long\n @param collateral The collateral for the trade\n @param leverage The leverage for the trade\n @return The trade rollover fee"},"functionSelector":"05098272","implemented":true,"kind":"function","modifiers":[],"name":"getTradeRolloverFee","nameLocation":"22164:19:103","overrides":{"id":72767,"nodeType":"OverrideSpecifier","overrides":[],"src":"22337:8:103"},"parameters":{"id":72766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72755,"mutability":"mutable","name":"trader","nameLocation":"22201:6:103","nodeType":"VariableDeclaration","scope":72809,"src":"22193:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":72754,"name":"address","nodeType":"ElementaryTypeName","src":"22193:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":72757,"mutability":"mutable","name":"pairIndex","nameLocation":"22222:9:103","nodeType":"VariableDeclaration","scope":72809,"src":"22217:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72756,"name":"uint","nodeType":"ElementaryTypeName","src":"22217:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72759,"mutability":"mutable","name":"index","nameLocation":"22246:5:103","nodeType":"VariableDeclaration","scope":72809,"src":"22241:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72758,"name":"uint","nodeType":"ElementaryTypeName","src":"22241:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72761,"mutability":"mutable","name":"long","nameLocation":"22266:4:103","nodeType":"VariableDeclaration","scope":72809,"src":"22261:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":72760,"name":"bool","nodeType":"ElementaryTypeName","src":"22261:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":72763,"mutability":"mutable","name":"collateral","nameLocation":"22285:10:103","nodeType":"VariableDeclaration","scope":72809,"src":"22280:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72762,"name":"uint","nodeType":"ElementaryTypeName","src":"22280:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72765,"mutability":"mutable","name":"leverage","nameLocation":"22310:8:103","nodeType":"VariableDeclaration","scope":72809,"src":"22305:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72764,"name":"uint","nodeType":"ElementaryTypeName","src":"22305:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22183:141:103"},"returnParameters":{"id":72770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72809,"src":"22355:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72768,"name":"uint","nodeType":"ElementaryTypeName","src":"22355:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22354:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":72837,"nodeType":"FunctionDefinition","src":"23127:305:103","nodes":[],"body":{"id":72836,"nodeType":"Block","src":"23314:118:103","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72823,"name":"endAccRolloverFeesPerOi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72814,"src":"23337:23:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72824,"name":"accRolloverFeesPerOi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72812,"src":"23363:20:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23337:46:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23336:48:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":72829,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72818,"src":"23402:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72827,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72816,"src":"23387:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"23387:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":72830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23387:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23336:75:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23335:77:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":72833,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"23415:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23335:90:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72822,"id":72835,"nodeType":"Return","src":"23328:97:103"}]},"documentation":{"id":72810,"nodeType":"StructuredDocumentation","src":"22724:398:103","text":" @notice Calculates the trade rollover fee for accumulated Roll over fees\n @param accRolloverFeesPerOi Accumulated rollover fees per open interest\n @param endAccRolloverFeesPerOi End accumulated rollover fees per open interest\n @param collateral The collateral for the trade\n @param leverage The leverage for the trade\n @return The trade rollover fee"},"functionSelector":"fdd3265f","implemented":true,"kind":"function","modifiers":[],"name":"getTradeRolloverFeePure","nameLocation":"23136:23:103","parameters":{"id":72819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72812,"mutability":"mutable","name":"accRolloverFeesPerOi","nameLocation":"23174:20:103","nodeType":"VariableDeclaration","scope":72837,"src":"23169:25:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72811,"name":"uint","nodeType":"ElementaryTypeName","src":"23169:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72814,"mutability":"mutable","name":"endAccRolloverFeesPerOi","nameLocation":"23209:23:103","nodeType":"VariableDeclaration","scope":72837,"src":"23204:28:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72813,"name":"uint","nodeType":"ElementaryTypeName","src":"23204:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72816,"mutability":"mutable","name":"collateral","nameLocation":"23247:10:103","nodeType":"VariableDeclaration","scope":72837,"src":"23242:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72815,"name":"uint","nodeType":"ElementaryTypeName","src":"23242:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72818,"mutability":"mutable","name":"leverage","nameLocation":"23272:8:103","nodeType":"VariableDeclaration","scope":72837,"src":"23267:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72817,"name":"uint","nodeType":"ElementaryTypeName","src":"23267:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23159:127:103"},"returnParameters":{"id":72822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72837,"src":"23308:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72820,"name":"uint","nodeType":"ElementaryTypeName","src":"23308:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23307:6:103"},"scope":73137,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":72913,"nodeType":"FunctionDefinition","src":"23823:503:103","nodes":[],"body":{"id":72912,"nodeType":"Block","src":"24011:315:103","nodes":[],"statements":[{"assignments":[72854],"declarations":[{"constant":false,"id":72854,"mutability":"mutable","name":"liqPriceDistance","nameLocation":"24025:16:103","nodeType":"VariableDeclaration","scope":72912,"src":"24021:20:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72853,"name":"int","nodeType":"ElementaryTypeName","src":"24021:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72884,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72857,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72840,"src":"24049:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24045:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72855,"name":"int","nodeType":"ElementaryTypeName","src":"24045:3:103","typeDescriptions":{}}},"id":72858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24045:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72861,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72844,"src":"24068:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72862,"name":"liqThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71135,"src":"24081:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24068:25:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":72864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24067:27:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":72865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24097:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"24067:33:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24063:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72859,"name":"int","nodeType":"ElementaryTypeName","src":"24063:3:103","typeDescriptions":{}}},"id":72867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24063:38:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":72870,"name":"rolloverFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72848,"src":"24108:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24104:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72868,"name":"int","nodeType":"ElementaryTypeName","src":"24104:3:103","typeDescriptions":{}}},"id":72871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24104:16:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24063:57:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72873,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24062:59:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24045:76:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72875,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24044:78:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"arguments":[{"id":72880,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72846,"src":"24156:8:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":72878,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72844,"src":"24141:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":72879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"24141:14:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":72881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24141:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24137:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72876,"name":"int","nodeType":"ElementaryTypeName","src":"24137:3:103","typeDescriptions":{}}},"id":72882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24137:29:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24044:122:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"24021:145:103"},{"assignments":[72886],"declarations":[{"constant":false,"id":72886,"mutability":"mutable","name":"liqPrice","nameLocation":"24181:8:103","nodeType":"VariableDeclaration","scope":72912,"src":"24177:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72885,"name":"int","nodeType":"ElementaryTypeName","src":"24177:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72901,"initialValue":{"condition":{"id":72887,"name":"long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72842,"src":"24192:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72896,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72840,"src":"24239:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24235:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72894,"name":"int","nodeType":"ElementaryTypeName","src":"24235:3:103","typeDescriptions":{}}},"id":72897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24235:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72898,"name":"liqPriceDistance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72854,"src":"24252:16:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24235:33:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":72900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24192:76:103","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72890,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72840,"src":"24203:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24199:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72888,"name":"int","nodeType":"ElementaryTypeName","src":"24199:3:103","typeDescriptions":{}}},"id":72891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24199:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72892,"name":"liqPriceDistance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72854,"src":"24216:16:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24199:33:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"24177:91:103"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72902,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72886,"src":"24286:8:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":72903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24297:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24286:12:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":72909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24318:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":72910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24286:33:103","trueExpression":{"arguments":[{"id":72907,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72886,"src":"24306:8:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":72906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24301:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":72905,"name":"uint","nodeType":"ElementaryTypeName","src":"24301:4:103","typeDescriptions":{}}},"id":72908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24301:14:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":72852,"id":72911,"nodeType":"Return","src":"24279:40:103"}]},"documentation":{"id":72838,"nodeType":"StructuredDocumentation","src":"23439:379:103","text":" @notice Calculates the liquidation price of the trade \n @param openPrice The opening price of the trade\n @param long Indicates if the position is long\n @param collateral The collateral for the trade\n @param leverage The leverage for the trade\n @param rolloverFee The rollover fee for the trade\n @return The liquidation price"},"functionSelector":"7d36dda8","implemented":true,"kind":"function","modifiers":[],"name":"getTradeLiquidationPricePure","nameLocation":"23832:28:103","parameters":{"id":72849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72840,"mutability":"mutable","name":"openPrice","nameLocation":"23875:9:103","nodeType":"VariableDeclaration","scope":72913,"src":"23870:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72839,"name":"uint","nodeType":"ElementaryTypeName","src":"23870:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72842,"mutability":"mutable","name":"long","nameLocation":"23899:4:103","nodeType":"VariableDeclaration","scope":72913,"src":"23894:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":72841,"name":"bool","nodeType":"ElementaryTypeName","src":"23894:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":72844,"mutability":"mutable","name":"collateral","nameLocation":"23918:10:103","nodeType":"VariableDeclaration","scope":72913,"src":"23913:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72843,"name":"uint","nodeType":"ElementaryTypeName","src":"23913:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72846,"mutability":"mutable","name":"leverage","nameLocation":"23943:8:103","nodeType":"VariableDeclaration","scope":72913,"src":"23938:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72845,"name":"uint","nodeType":"ElementaryTypeName","src":"23938:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72848,"mutability":"mutable","name":"rolloverFee","nameLocation":"23966:11:103","nodeType":"VariableDeclaration","scope":72913,"src":"23961:16:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72847,"name":"uint","nodeType":"ElementaryTypeName","src":"23961:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23860:123:103"},"returnParameters":{"id":72852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":72913,"src":"24005:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72850,"name":"uint","nodeType":"ElementaryTypeName","src":"24005:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24004:6:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":73038,"nodeType":"FunctionDefinition","src":"24764:690:103","nodes":[],"body":{"id":73037,"nodeType":"Block","src":"24967:487:103","nodes":[],"statements":[{"assignments":[72934],"declarations":[{"constant":false,"id":72934,"mutability":"mutable","name":"pnl","nameLocation":"24981:3:103","nodeType":"VariableDeclaration","scope":73037,"src":"24977:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72933,"name":"int","nodeType":"ElementaryTypeName","src":"24977:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72949,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72937,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72916,"src":"24992:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24988:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72935,"name":"int","nodeType":"ElementaryTypeName","src":"24988:3:103","typeDescriptions":{}}},"id":72938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24988:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":72939,"name":"percentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72918,"src":"25006:13:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24988:31:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24987:33:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":72944,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71123,"src":"25027:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25023:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72942,"name":"int","nodeType":"ElementaryTypeName","src":"25023:3:103","typeDescriptions":{}}},"id":72945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25023:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24987:51:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":72947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25041:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"24987:57:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"24977:67:103"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72950,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25058:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":72951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25064:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25058:7:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":72966,"nodeType":"IfStatement","src":"25054:77:103","trueBody":{"id":72965,"nodeType":"Block","src":"25067:64:103","statements":[{"expression":{"id":72963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":72953,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25081:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72954,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25088:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":72957,"name":"lossProtection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72924,"src":"25098:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25094:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72955,"name":"int","nodeType":"ElementaryTypeName","src":"25094:3:103","typeDescriptions":{}}},"id":72958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25094:19:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25088:25:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":72960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25087:27:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":72961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25117:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"25087:33:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25081:39:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":72964,"nodeType":"ExpressionStatement","src":"25081:39:103"}]}},{"assignments":[72968],"declarations":[{"constant":false,"id":72968,"mutability":"mutable","name":"fees","nameLocation":"25144:4:103","nodeType":"VariableDeclaration","scope":73037,"src":"25140:8:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72967,"name":"int","nodeType":"ElementaryTypeName","src":"25140:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72978,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72971,"name":"rolloverFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72920,"src":"25155:11:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25151:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72969,"name":"int","nodeType":"ElementaryTypeName","src":"25151:3:103","typeDescriptions":{}}},"id":72972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25151:16:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":72975,"name":"closingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72922,"src":"25174:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25170:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72973,"name":"int","nodeType":"ElementaryTypeName","src":"25170:3:103","typeDescriptions":{}}},"id":72976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25170:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25151:34:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"25140:45:103"},{"assignments":[72980],"declarations":[{"constant":false,"id":72980,"mutability":"mutable","name":"value","nameLocation":"25199:5:103","nodeType":"VariableDeclaration","scope":73037,"src":"25195:9:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72979,"name":"int","nodeType":"ElementaryTypeName","src":"25195:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":72989,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":72986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72983,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72916,"src":"25211:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25207:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72981,"name":"int","nodeType":"ElementaryTypeName","src":"25207:3:103","typeDescriptions":{}}},"id":72984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25207:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":72985,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25225:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25207:21:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72987,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72968,"src":"25231:4:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25207:28:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"25195:40:103"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":73005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":72990,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72980,"src":"25249:5:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":73004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":73001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72993,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72916,"src":"25263:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25259:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72991,"name":"int","nodeType":"ElementaryTypeName","src":"25259:3:103","typeDescriptions":{}}},"id":72994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25259:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":72999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":72997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25281:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":72998,"name":"liqThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71135,"src":"25287:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25281:18:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":72996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25277:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":72995,"name":"int","nodeType":"ElementaryTypeName","src":"25277:3:103","typeDescriptions":{}}},"id":73000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25277:23:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25259:41:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":73002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25258:43:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":73003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25304:3:103","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"25258:49:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25249:58:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73020,"nodeType":"IfStatement","src":"25245:140:103","trueBody":{"id":73019,"nodeType":"Block","src":"25309:76:103","statements":[{"expression":{"id":73008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72980,"src":"25323:5:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":73007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25323:9:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":73009,"nodeType":"ExpressionStatement","src":"25323:9:103"},{"expression":{"id":73017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73010,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25346:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":73016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73011,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72968,"src":"25352:4:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":73014,"name":"collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72916,"src":"25363:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25359:3:103","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":73012,"name":"int","nodeType":"ElementaryTypeName","src":"25359:3:103","typeDescriptions":{}}},"id":73015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25359:15:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25352:22:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25346:28:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":73018,"nodeType":"ExpressionStatement","src":"25346:28:103"}]}},{"expression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":73023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72980,"src":"25402:5:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25410:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25402:9:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":73028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25428:1:103","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":73029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25402:27:103","trueExpression":{"arguments":[{"id":73026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72980,"src":"25419:5:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":73025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25414:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":73024,"name":"uint","nodeType":"ElementaryTypeName","src":"25414:4:103","typeDescriptions":{}}},"id":73027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25414:11:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":73030,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72934,"src":"25431:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"arguments":[{"id":73033,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72968,"src":"25441:4:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":73032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25436:4:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":73031,"name":"uint","nodeType":"ElementaryTypeName","src":"25436:4:103","typeDescriptions":{}}},"id":73034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25436:10:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25401:46:103","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"tuple(uint256,int256,uint256)"}},"functionReturnParameters":72932,"id":73036,"nodeType":"Return","src":"25394:53:103"}]},"documentation":{"id":72914,"nodeType":"StructuredDocumentation","src":"24332:427:103","text":" @notice Calculates the Pnl, fees and pnl adjusted collateral\n @param collateral The collateral for the trade\n @param percentProfit The percent profit for the trade\n @param rolloverFee The rollover fee for the trade\n @param closingFee The closing fee for the trade\n @param lossProtection The loss protection for the trade\n @return The trade value, profit and loss, and fees"},"functionSelector":"75923b9d","implemented":true,"kind":"function","modifiers":[],"name":"getTradeValuePure","nameLocation":"24773:17:103","parameters":{"id":72925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72916,"mutability":"mutable","name":"collateral","nameLocation":"24805:10:103","nodeType":"VariableDeclaration","scope":73038,"src":"24800:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72915,"name":"uint","nodeType":"ElementaryTypeName","src":"24800:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72918,"mutability":"mutable","name":"percentProfit","nameLocation":"24829:13:103","nodeType":"VariableDeclaration","scope":73038,"src":"24825:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72917,"name":"int","nodeType":"ElementaryTypeName","src":"24825:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":72920,"mutability":"mutable","name":"rolloverFee","nameLocation":"24857:11:103","nodeType":"VariableDeclaration","scope":73038,"src":"24852:16:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72919,"name":"uint","nodeType":"ElementaryTypeName","src":"24852:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72922,"mutability":"mutable","name":"closingFee","nameLocation":"24883:10:103","nodeType":"VariableDeclaration","scope":73038,"src":"24878:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72921,"name":"uint","nodeType":"ElementaryTypeName","src":"24878:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72924,"mutability":"mutable","name":"lossProtection","nameLocation":"24908:14:103","nodeType":"VariableDeclaration","scope":73038,"src":"24903:19:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72923,"name":"uint","nodeType":"ElementaryTypeName","src":"24903:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24790:138:103"},"returnParameters":{"id":72932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73038,"src":"24950:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72926,"name":"uint","nodeType":"ElementaryTypeName","src":"24950:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73038,"src":"24956:3:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":72928,"name":"int","nodeType":"ElementaryTypeName","src":"24956:3:103","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":72931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73038,"src":"24961:4:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72930,"name":"uint","nodeType":"ElementaryTypeName","src":"24961:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24949:17:103"},"scope":73137,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":73073,"nodeType":"FunctionDefinition","src":"25460:313:103","nodes":[],"body":{"id":73072,"nodeType":"Block","src":"25548:225:103","nodes":[],"statements":[{"assignments":[73049],"declarations":[{"constant":false,"id":73049,"mutability":"mutable","name":"p","nameLocation":"25577:1:103","nodeType":"VariableDeclaration","scope":73072,"src":"25558:20:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"},"typeName":{"id":73048,"nodeType":"UserDefinedTypeName","pathNode":{"id":73047,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"25558:10:103"},"referencedDeclaration":88543,"src":"25558:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"visibility":"internal"}],"id":73053,"initialValue":{"baseExpression":{"id":73050,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"25581:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":73052,"indexExpression":{"id":73051,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73040,"src":"25592:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25581:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25558:44:103"},{"expression":{"id":73058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73054,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73049,"src":"25613:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams storage pointer"}},"id":73056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"onePercentDepthAbove","nodeType":"MemberAccess","referencedDeclaration":88538,"src":"25613:22:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73057,"name":"valueAbove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73042,"src":"25638:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25613:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73059,"nodeType":"ExpressionStatement","src":"25613:35:103"},{"expression":{"id":73064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73060,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73049,"src":"25658:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams storage pointer"}},"id":73062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"onePercentDepthBelow","nodeType":"MemberAccess","referencedDeclaration":88540,"src":"25658:22:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73063,"name":"valueBelow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73044,"src":"25683:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25658:35:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73065,"nodeType":"ExpressionStatement","src":"25658:35:103"},{"eventCall":{"arguments":[{"id":73067,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73040,"src":"25732:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":73068,"name":"valueAbove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73042,"src":"25743:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":73069,"name":"valueBelow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73044,"src":"25755:10:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73066,"name":"OnePercentDepthUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88598,"src":"25709:22:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":73070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25709:57:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73071,"nodeType":"EmitStatement","src":"25704:62:103"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setOnePercentDepth","nameLocation":"25469:19:103","parameters":{"id":73045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73040,"mutability":"mutable","name":"pairIndex","nameLocation":"25494:9:103","nodeType":"VariableDeclaration","scope":73073,"src":"25489:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73039,"name":"uint","nodeType":"ElementaryTypeName","src":"25489:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73042,"mutability":"mutable","name":"valueAbove","nameLocation":"25510:10:103","nodeType":"VariableDeclaration","scope":73073,"src":"25505:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73041,"name":"uint","nodeType":"ElementaryTypeName","src":"25505:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73044,"mutability":"mutable","name":"valueBelow","nameLocation":"25527:10:103","nodeType":"VariableDeclaration","scope":73073,"src":"25522:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73043,"name":"uint","nodeType":"ElementaryTypeName","src":"25522:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25488:50:103"},"returnParameters":{"id":73046,"nodeType":"ParameterList","parameters":[],"src":"25548:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":73097,"nodeType":"FunctionDefinition","src":"25779:214:103","nodes":[],"body":{"id":73096,"nodeType":"Block","src":"25854:139:103","nodes":[],"statements":[{"expression":{"arguments":[{"id":73082,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73075,"src":"25886:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73081,"name":"_storeAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73136,"src":"25864:21:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25864:32:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73084,"nodeType":"ExpressionStatement","src":"25864:32:103"},{"expression":{"id":73089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73085,"name":"pairParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71140,"src":"25907:10:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairParams_$88543_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairParams storage ref)"}},"id":73087,"indexExpression":{"id":73086,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73075,"src":"25918:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25907:21:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73078,"src":"25931:5:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}},"src":"25907:29:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage","typeString":"struct IPairInfos.PairParams storage ref"}},"id":73090,"nodeType":"ExpressionStatement","src":"25907:29:103"},{"eventCall":{"arguments":[{"id":73092,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73075,"src":"25969:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":73093,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73078,"src":"25980:5:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams calldata"}],"id":73091,"name":"PairParamsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88590,"src":"25951:17:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_struct$_PairParams_$88543_memory_ptr_$returns$__$","typeString":"function (uint256,struct IPairInfos.PairParams memory)"}},"id":73094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25951:35:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73095,"nodeType":"EmitStatement","src":"25946:40:103"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setPairParams","nameLocation":"25788:14:103","parameters":{"id":73079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73075,"mutability":"mutable","name":"pairIndex","nameLocation":"25808:9:103","nodeType":"VariableDeclaration","scope":73097,"src":"25803:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73074,"name":"uint","nodeType":"ElementaryTypeName","src":"25803:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73078,"mutability":"mutable","name":"value","nameLocation":"25839:5:103","nodeType":"VariableDeclaration","scope":73097,"src":"25819:25:103","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_calldata_ptr","typeString":"struct IPairInfos.PairParams"},"typeName":{"id":73077,"nodeType":"UserDefinedTypeName","pathNode":{"id":73076,"name":"PairParams","nodeType":"IdentifierPath","referencedDeclaration":88543,"src":"25819:10:103"},"referencedDeclaration":88543,"src":"25819:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairParams_$88543_storage_ptr","typeString":"struct IPairInfos.PairParams"}},"visibility":"internal"}],"src":"25802:43:103"},"returnParameters":{"id":73080,"nodeType":"ParameterList","parameters":[],"src":"25854:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":73136,"nodeType":"FunctionDefinition","src":"25999:334:103","nodes":[],"body":{"id":73135,"nodeType":"Block","src":"26054:279:103","nodes":[],"statements":[{"assignments":[73104],"declarations":[{"constant":false,"id":73104,"mutability":"mutable","name":"f","nameLocation":"26089:1:103","nodeType":"VariableDeclaration","scope":73135,"src":"26064:26:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"},"typeName":{"id":73103,"nodeType":"UserDefinedTypeName","pathNode":{"id":73102,"name":"PairRolloverFees","nodeType":"IdentifierPath","referencedDeclaration":88550,"src":"26064:16:103"},"referencedDeclaration":88550,"src":"26064:16:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees"}},"visibility":"internal"}],"id":73108,"initialValue":{"baseExpression":{"id":73105,"name":"pairRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71145,"src":"26093:16:103","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PairRolloverFees_$88550_storage_$","typeString":"mapping(uint256 => struct IPairInfos.PairRolloverFees storage ref)"}},"id":73107,"indexExpression":{"id":73106,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73099,"src":"26110:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26093:27:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage","typeString":"struct IPairInfos.PairRolloverFees storage ref"}},"nodeType":"VariableDeclarationStatement","src":"26064:56:103"},{"expression":{"id":73118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":73109,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73104,"src":"26132:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":73111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accPerOiLong","nodeType":"MemberAccess","referencedDeclaration":88545,"src":"26132:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73112,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73104,"src":"26148:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":73113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"accPerOiShort","nodeType":"MemberAccess","referencedDeclaration":88547,"src":"26148:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73114,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"26131:33:103","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":73116,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73099,"src":"26193:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73115,"name":"getPendingAccRolloverFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72752,"src":"26167:25:103","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) view returns (uint256,uint256)"}},"id":73117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26167:36:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"26131:72:103","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73119,"nodeType":"ExpressionStatement","src":"26131:72:103"},{"expression":{"id":73125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73120,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73104,"src":"26213:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":73122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"lastUpdateBlock","nodeType":"MemberAccess","referencedDeclaration":88549,"src":"26213:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":73123,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26233:5:103","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":73124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"26233:12:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26213:32:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73126,"nodeType":"ExpressionStatement","src":"26213:32:103"},{"eventCall":{"arguments":[{"id":73128,"name":"pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73099,"src":"26283:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73129,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73104,"src":"26294:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":73130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiLong","nodeType":"MemberAccess","referencedDeclaration":88545,"src":"26294:14:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73131,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73104,"src":"26310:1:103","typeDescriptions":{"typeIdentifier":"t_struct$_PairRolloverFees_$88550_storage_ptr","typeString":"struct IPairInfos.PairRolloverFees storage pointer"}},"id":73132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"accPerOiShort","nodeType":"MemberAccess","referencedDeclaration":88547,"src":"26310:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73127,"name":"AccRolloverFeesStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88622,"src":"26261:21:103","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":73133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"26261:65:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73134,"nodeType":"EmitStatement","src":"26256:70:103"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_storeAccRolloverFees","nameLocation":"26008:21:103","parameters":{"id":73100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73099,"mutability":"mutable","name":"pairIndex","nameLocation":"26035:9:103","nodeType":"VariableDeclaration","scope":73136,"src":"26030:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73098,"name":"uint","nodeType":"ElementaryTypeName","src":"26030:4:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26029:16:103"},"returnParameters":{"id":73101,"nodeType":"ParameterList","parameters":[],"src":"26054:0:103"},"scope":73137,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":71114,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":43537,"src":"450:13:103"},"id":71115,"nodeType":"InheritanceSpecifier","src":"450:13:103"},{"baseName":{"id":71116,"name":"IPairInfos","nodeType":"IdentifierPath","referencedDeclaration":88745,"src":"465:10:103"},"id":71117,"nodeType":"InheritanceSpecifier","src":"465:10:103"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[73137,88745,43537],"name":"PairInfos","nameLocation":"437:9:103","scope":73138,"usedErrors":[]}],"license":"MIT"},"id":103}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAccRolloverFeesLong","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAccRolloverFeesShort","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAccRolloverFeesUpdateBlock","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlendedSkew","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_long","type":"bool","internalType":"bool"},{"name":"_longOI","type":"uint256","internalType":"uint256"},{"name":"_shortOI","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlendedUtilizationRatio","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_longOI","type":"uint256","internalType":"uint256"},{"name":"_shortOI","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnePercentDepthAbove","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnePercentDepthBelow","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPairInfos","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IPairInfos.PairParams[]","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]},{"name":"","type":"tuple[]","internalType":"struct IPairInfos.PairRolloverFees[]","components":[{"name":"accPerOiLong","type":"uint256","internalType":"uint256"},{"name":"accPerOiShort","type":"uint256","internalType":"uint256"},{"name":"lastUpdateBlock","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingAccRolloverFees","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"valueLong","type":"uint256","internalType":"uint256"},{"name":"valueShort","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPriceImpactSpread","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isBuy","type":"bool","internalType":"bool"},{"name":"_leveragePosition","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"spread","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getRolloverFeePerBlockP","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSkewImpactSpread","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isBuy","type":"bool","internalType":"bool"},{"name":"_leveragePosition","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"spread","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getTradeInitialAccRolloverFeesPerCollateral","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeLiquidationPrice","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeLiquidationPricePure","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"rolloverFee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradePriceImpact","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"tradeOpenInterest","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"priceAfterImpact","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeRolloverFee","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeRolloverFeePure","inputs":[{"name":"accRolloverFeesPerOi","type":"uint256","internalType":"uint256"},{"name":"endAccRolloverFeesPerOi","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getTradeValue","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"percentProfit","type":"int256","internalType":"int256"},{"name":"closingFee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"pnl","type":"int256","internalType":"int256"},{"name":"fees","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTradeValuePure","inputs":[{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"percentProfit","type":"int256","internalType":"int256"},{"name":"rolloverFee","type":"uint256","internalType":"uint256"},{"name":"closingFee","type":"uint256","internalType":"uint256"},{"name":"lossProtection","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairsStorage","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"keeper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"liqThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"longSkewConfig","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionNumTiers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionTier","inputs":[{"name":"_trade","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairParams","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairRolloverFees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"accPerOiLong","type":"uint256","internalType":"uint256"},{"name":"accPerOiShort","type":"uint256","internalType":"uint256"},{"name":"lastUpdateBlock","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairsStorage","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairStorage"}],"stateMutability":"view"},{"type":"function","name":"resetTradeInitialAccess","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setKeeper","inputs":[{"name":"_keeper","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLossProtectionConfig","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_longSkewConfig","type":"uint256[]","internalType":"uint256[]"},{"name":"_shortSkewConfig","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","inputs":[{"name":"_manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOnePercentDepth","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"valueAbove","type":"uint256","internalType":"uint256"},{"name":"valueBelow","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOnePercentDepthArray","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"},{"name":"valuesAbove","type":"uint256[]","internalType":"uint256[]"},{"name":"valuesBelow","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairParams","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"value","type":"tuple","internalType":"struct IPairInfos.PairParams","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairParamsArray","inputs":[{"name":"indices","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"tuple[]","internalType":"struct IPairInfos.PairParams[]","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRolloverFeePerBlockP","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shortSkewConfig","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"storeTradeInitialAccFees","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"long","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tradeInitialAccFees","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"rollover","type":"uint256","internalType":"uint256"},{"name":"openedAfterUpdate","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"udpateLiquidationThreshold","inputs":[{"name":"_newThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePairStorage","inputs":[{"name":"_newPairStorage","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AccRolloverFeesStored","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueLong","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueShort","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CoeffUpdated","inputs":[{"name":"multiplierCoeffMax","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DenomUpdated","inputs":[{"name":"multiplierDenom","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeesCharged","inputs":[{"name":"buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"leverage","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"r","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"closingFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtection","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"KeeperUpdated","inputs":[{"name":"keeper","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"LiqThresholdUpdated","inputs":[{"name":"newThreshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LossProtectionConfigSet","inputs":[{"name":"numTiers","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"longSkewConfig","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"shortSkewConfig","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"ManagerUpdated","inputs":[{"name":"value","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MaxNegativePnlOnOpenPUpdated","inputs":[{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MultiplierUpdated","inputs":[{"name":"minMultiplierRate","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMultiplierRate","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"groupId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OnePercentDepthUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueAbove","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueBelow","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PairParamsUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"tuple","indexed":false,"internalType":"struct IPairInfos.PairParams","components":[{"name":"onePercentDepthAbove","type":"uint256","internalType":"uint256"},{"name":"onePercentDepthBelow","type":"uint256","internalType":"uint256"},{"name":"rolloverFeePerBlockP","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"PairStorageUpdated","inputs":[{"name":"newPairStorage","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RolloverFeePerBlockPUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TradeInitialAccFeesStored","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"rollover","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6155f380620000f36000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806375923b9d1161015c578063b74243ba116100ce578063cfc23e9e11610087578063cfc23e9e1461069f578063d0ebdbe7146106bf578063eb95e10c146106d2578063f6960654146106e5578063fdd3265f146106f8578063fe3cfd8c1461070b57600080fd5b8063b74243ba14610611578063bf1db1f614610624578063c04254ec14610653578063c21fbef814610666578063c9533ebc14610679578063cf2befd21461068c57600080fd5b806390999397116101205780639099939714610594578063a8feac6e146105a7578063ab21a05c146105ba578063aced1661146105e2578063ae2293d7146105f5578063aee94fcf146105fe57600080fd5b806375923b9d146105285780637d36dda81461053b5780637d8271371461054e57806380242e511461056e578063867a60c21461058157600080fd5b806342dee1ad116101f557806368286d36116101b957806368286d36146104a65780636a3ca5fd146104b95780636bc84d59146104cc578063726219f3146104df5780637390b23614610502578063748747e61461051557600080fd5b806342dee1ad146103d3578063481c6a751461041d578063485cc955146104305780635ed5804e146104435780636676d8501461049357600080fd5b8063183566d411610247578063183566d4146103345780631f4934a1146103475780632b180a7d14610367578063338139ad1461038a578063351533e7146103ad57806335b03c17146103c057600080fd5b806305098272146102845780630e0052fc146102aa5780630e6bc39a146102cd5780630ea77770146102e257806316fff07414610303575b600080fd5b610297610292366004614b03565b61074c565b6040519081526020015b60405180910390f35b6102976102b8366004614ee0565b60009081526006602052604090206002015490565b6102e06102db366004614ab9565b61087d565b005b6102f56102f0366004614c4f565b610a08565b6040516102a19291906151da565b60005461031c906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b6102976103423660046150aa565b610be2565b610297610355366004614ee0565b60086020526000908152604090205481565b610297610375366004614ee0565b60009081526005602052604090206001015490565b610297610398366004614ee0565b60009081526005602052604090206002015490565b6102e06103bb366004614d2b565b610c13565b60015461031c906001600160a01b031681565b6104026103e1366004614ee0565b60056020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102a1565b60025461031c906001600160a01b031681565b6102e061043e366004614a4b565b610cf5565b61047e610451366004614a84565b60076020908152600093845260408085208252928452828420905282529020805460019091015460ff1682565b604080519283529015156020830152016102a1565b6102976104a1366004614fb2565b610e46565b6104026104b4366004614ea2565b6111de565b6102976104c73660046150aa565b61149a565b6102976104da366004614b5f565b6114b6565b6102976104ed366004614ee0565b60009081526006602052604090206001015490565b610297610510366004614e73565b6114d9565b6102e0610523366004614a11565b61179b565b610402610536366004615037565b6118cc565b610297610549366004614fef565b6119b6565b61029761055c366004614ee0565b60009081526006602052604090205490565b61029761057c3660046150f0565b611a3a565b6102e061058f366004614c91565b611c32565b6102e06105a2366004614a84565b611ced565b6102e06105b5366004614a11565b611de0565b6105cd6105c8366004614ee0565b611f0a565b604080519283526020830191909152016102a1565b60035461031c906001600160a01b031681565b61029760045481565b61029761060c366004614f73565b612239565b6102e061061f3660046150aa565b61232c565b610402610632366004614ee0565b60066020526000908152604090208054600182015460029092015490919083565b610297610661366004614f73565b6123f1565b6102e0610674366004614ee0565b61271d565b610297610687366004615146565b612808565b6102e061069a366004614ef9565b6129f2565b6102976106ad366004614ee0565b60009081526005602052604090205490565b6102e06106cd366004614a11565b612aaf565b6102e06106e0366004615072565b612bd9565b6102e06106f3366004615146565b612c11565b610297610706366004615172565b612c64565b610297610719366004614a84565b6001600160a01b038316600090815260076020908152604080832085845282528083208484529091529020549392505050565b6001546040516362faca8d60e11b81526001600160a01b0388811660048301526024820188905260448201879052600092839291169063c5f5951a9060640160206040518083038186803b1580156107a357600080fd5b505afa1580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db9190614dc5565b6001600160a01b03891660009081526007602090815260408083208b845282528083208a84528252918290208251808401909352805483526001015460ff161580159183019190915291925090806108305750815b1561084057600092505050610873565b60008061084c8a611f0a565b9150915061086c8360000151896108635782610865565b835b8989612c64565b9450505050505b9695505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ca57600080fd5b505afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190614a2e565b6001600160a01b0316336001600160a01b03161461093b5760405162461bcd60e51b81526004016109329061528d565b60405180910390fd5b61094483612cad565b6001600160a01b0384166000908152600760209081526040808320868452825280832085845290915290208161098b5760008481526006602052604090206001015461099b565b6000848152600660205260409020545b8082556001808301805460ff19169091179055604080516001600160a01b03881681526020810187905290810185905260608101919091527f835af8708eb91d2079c09e00124475ffca3f81cbef1e074867d53e5c9ec0ed98906080015b60405180910390a15050505050565b60608060008367ffffffffffffffff811115610a2657610a26615581565b604051908082528060200260200182016040528015610a7b57816020015b610a6860405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610a445790505b50905060008467ffffffffffffffff811115610a9957610a99615581565b604051908082528060200260200182016040528015610aee57816020015b610adb60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610ab75790505b50905060005b85811015610bd4576000878783818110610b1057610b1061556b565b905060200201359050600560008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848381518110610b6757610b6761556b565b6020026020010181905250600660008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050838381518110610bc057610bc061556b565b602090810291909101015250600101610af4565b5090925090505b9250929050565b600a6020528160005260406000208181548110610bfe57600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610c3d5760405162461bcd60e51b8152600401610932906152b5565b8483148015610c4b57508481145b610c865760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610932565b60005b85811015610cec57610ce4878783818110610ca657610ca661556b565b90506020020135868684818110610cbf57610cbf61556b565b90506020020135858585818110610cd857610cd861556b565b90506020020135612d10565b600101610c89565b50505050505050565b600054610100900460ff1615808015610d155750600054600160ff909116105b80610d2f5750303b158015610d2f575060005460ff166001145b610d925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610932565b6000805460ff191660011790558015610db5576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560556004558015610e41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610e5282846153b8565b610e5e575060006111d6565b600154604051633c44d0a360e01b8152600481018790526001600160a01b0390911690633c44d0a39060240160206040518083038186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190614de2565b600214156111835760008060029054906101000a90046001600160a01b03166001600160a01b0316638ecf3f5a6040518163ffffffff1660e01b8152600401604080518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190614bc7565b9050600085610f78576001610f7b565b60005b600154604051636dc37de360e01b8152600481018a905260ff92909216925060009184916001600160a01b031690636dc37de39060240160206040518083038186803b158015610fca57600080fd5b505afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110029190614dc5565b611016576110118360016154f5565b611018565b825b600281106110285761102861556b565b6020020151600154604051636dc37de360e01b8152600481018b905291925060009185916001600160a01b031690636dc37de39060240160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190614dc5565b6110b957836110c4565b6110c48460016154f5565b600281106110d4576110d461556b565b6020020151905060006110e783836153b8565b6110f2846064615497565b6110fc91906153fe565b90506000896111295761110f888a6153b8565b61111a896064615497565b61112491906153fe565b611148565b611133888a6153b8565b61113e8a6064615497565b61114891906153fe565b90506064611157826019615497565b61116284604b615497565b61116c91906153b8565b61117691906153fe565b96505050505050506111d6565b6000846111ae5761119483856153b8565b61119f846064615497565b6111a991906153fe565b6111cd565b6111b883856153b8565b6111c3856064615497565b6111cd91906153fe565b91506111d69050565b949350505050565b60008060008060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561122f57600080fd5b505afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190614a2e565b6001600160a01b0316336001600160a01b0316146112975760405162461bcd60e51b81526004016109329061528d565b60008054885160208a01516040808c01519051638c8ff1d560e01b81526001600160a01b03938416600482015260248101929092526044820152620100009092041690638c8ff1d59060640160a06040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190614dfb565b6080015190506113468860200151612cad565b600061136a89600001518a602001518b604001518c60c001518c8e60e0015161074c565b60015460208b0151604051632b1cbe9d60e01b81529293506000926001600160a01b0390921691632b1cbe9d916113ae918790600401918252602082015260400190565b60206040518083038186803b1580156113c657600080fd5b505afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe9190614de2565b905061140d8989848a856118cc565b60c08d015160e08e0151604051949a509298509096507fb70bf101b761b8a0fe59428f8a894321d6639ef13ab81b9bf16d19764a7dba6692611485928d918d9088908e9089909615158752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60405180910390a15050509450945094915050565b60096020528160005260406000208181548110610bfe57600080fd5b60006114cd858585856105498d8d8d8c8c8c61074c565b98975050505050505050565b600081156114e957506000611795565b600080546020850151604051639cb87f2360e01b8152600481019190915260248101839052620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561154057600080fd5b505afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190614de2565b600080546020870151604051639cb87f2360e01b81526004810191909152600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156115d457600080fd5b505afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190614de2565b9050600061162b8660e001518760600151612d7090919063ffffffff16565b90508560c00151156116ea5761164181846153b8565b9250600061164f83856153b8565b61165a846064615497565b61166491906153fe565b6020808901516000908152600a90915260409020549091505b80156116e3576020808901516000908152600a909152604090206116a26001836154f5565b815481106116b2576116b261556b565b906000526020600020015482106116da576116ce6001826154f5565b95505050505050611795565b6000190161167d565b505061178d565b6116f481836153b8565b9150600061170283856153b8565b61170d856064615497565b61171791906153fe565b6020808901516000908152600990915260409020549091505b801561178a5760208089015160009081526009909152604090206117556001836154f5565b815481106117655761176561556b565b90600052602060002001548210611781576116ce6001826154f5565b60001901611730565b50505b600093505050505b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e957600080fd5b505afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118219190614a2e565b6001600160a01b0316336001600160a01b0316146118515760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b0381166118775760405162461bcd60e51b8152600401610932906152db565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e906020015b60405180910390a150565b600080808060646402540be4006118e38a8c615412565b6118ed91906153d0565b6118f791906153d0565b905080600081121561191c57606461190f8784615412565b61191991906153d0565b90505b6000611928888a615377565b9050600081611937848e615377565b61194191906154b6565b90506064600454606461195491906154f5565b61195e908e615412565b61196891906153d0565b81136119925761197884846154b6565b9050806119858d846154b6565b61198f9190615377565b92505b600081136119a15760006119a3565b805b9c929b5090995090975050505050505050565b6000806119c38585612d70565b836064600454886119d49190615497565b6119de91906153fe565b6119e891906154b6565b6119f29089615412565b6119fc91906153d0565b9050600086611a1457611a0f8289615377565b611a1e565b611a1e82896154b6565b905060008113611a2f5760006114cd565b979650505050505050565b600154604051631ae07f6160e31b815260048101869052600091829182916001600160a01b03169063d703fb0890602401604080518083038186803b158015611a8257600080fd5b505afa158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba91906150cc565b915091506000611acc88888888612239565b90506000611adc898989896123f1565b6001546040516312f070cd60e01b8152600481018c90528815156024820152919250600091839185916001600160a01b03909116906312f070cd9060440160206040518083038186803b158015611b3257600080fd5b505afa158015611b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6a9190614de2565b611b749190615377565b611b7e9190615377565b9050611b8b600a866153fe565b611b949061550c565b8112611bc157611ba5600a856153fe565b8113611bb15780611bd5565b611bbc600a856153fe565b611bd5565b611bcc600a866153fe565b611bd59061550c565b9050600060646402540be400611beb8e85615412565b611bf591906153d0565b611bff91906153d0565b905060008a611c1757611c12828e6154b6565b611c21565b611c21828e615377565b9d9c50505050505050505050505050565b6002546001600160a01b03163314611c5c5760405162461bcd60e51b8152600401610932906152b5565b828114611c9a5760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610932565b60005b83811015611ce657611cde858583818110611cba57611cba61556b565b90506020020135848484818110611cd357611cd361556b565b905060600201612d93565b600101611c9d565b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3a57600080fd5b505afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d729190614a2e565b6001600160a01b0316336001600160a01b031614611da25760405162461bcd60e51b81526004016109329061528d565b6001600160a01b039092166000908152600760209081526040808320938352928152828220938252929092528120908155600101805460ff19169055565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2e57600080fd5b505afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190614a2e565b6001600160a01b0316336001600160a01b031614611e965760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b038116611ebc5760405162461bcd60e51b8152600401610932906152db565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f5eabd50379e54b19420d1c67256a5d9b1200c1c4c44d14af4540bae519b58b06906020016118c1565b6000818152600660205260408082208054600182015484549351639cb87f2360e01b81526004810187905260248101869052919490939091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611f7457600080fd5b505afa158015611f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fac9190614de2565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561200257600080fd5b505afa158015612016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203a9190614de2565b905060008061204983856153b8565b11612055576000612060565b612060878484612808565b905082156121495760006120778860018686610e46565b905060006120858284615497565b6120956402540be4006064615497565b61209f91906154f5565b6120a98385615497565b6120b8906402540be400615497565b6120c291906153fe565b9050600060646402540be40080600560008e8152602001908152602001600020600201548a60020154436120f691906154f5565b6121056402540be40088615497565b61210f9190615497565b6121199190615497565b61212391906153fe565b61212d91906153fe565b61213791906153fe565b9050612143818a6153b8565b98505050505b811561223057600061215e8860008686610e46565b9050600061216c8284615497565b61217c6402540be4006064615497565b61218691906154f5565b6121908385615497565b61219f906402540be400615497565b6121a991906153fe565b9050600060646402540be40080600560008e8152602001908152602001600020600201548a60020154436121dd91906154f5565b6121ec6402540be40088615497565b6121f69190615497565b6122009190615497565b61220a91906153fe565b61221491906153fe565b61221e91906153fe565b905061222a81896153b8565b97505050505b50505050915091565b60008115612249575060006111d6565b600154604051630bf919a560e31b8152600481018790526000916001600160a01b031690635fc8cd289060240160206040518083038186803b15801561228e57600080fd5b505afa1580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c69190614de2565b90506000856122e6576000878152600560205260409020600101546122f6565b6000878152600560205260409020545b90506402540be4006123228161230c8886615497565b61231691906153fe565b836402540be400612e1b565b611a2f91906154b6565b6002546001600160a01b031633146123565760405162461bcd60e51b8152600401610932906152b5565b63017d78408111156123955760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe90928e960c31b6044820152606401610932565b61239e82612cad565b60008281526005602090815260409182902060020183905581518481529081018390527f048ce436ab4f2632f2aac62af26be3383ebdf5efc9a63f0bbeb6d6c9762d708991015b60405180910390a15050565b60008115612401575060006111d6565b600154604051633a2d43e160e21b8152600481018790526402540be400916000916001600160a01b039091169063e8b50f849060240160206040518083038186803b15801561244f57600080fd5b505afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190614de2565b60008054604051639cb87f2360e01b8152600481018b9052602481018390529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156124dd57600080fd5b505afa1580156124f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125159190614de2565b60008054604051639cb87f2360e01b8152600481018c9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561256b57600080fd5b505afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190614de2565b90506125af81836153b8565b6125c05760009450505050506111d6565b6000886125ec576125d182846153b8565b6125dd83612710615497565b6125e791906153fe565b61260c565b6125f682846153b8565b61260284612710615497565b61260c91906153fe565b905060008961264f578861262084866153b8565b61262a91906153b8565b6126348a856153b8565b61264090612710615497565b61264a91906153fe565b612684565b8861265a84866153b8565b61266491906153b8565b61266e8a866153b8565b61267a90612710615497565b61268491906153fe565b905060006126a5612697846127106154f5565b6127106402540be400612e1b565b6126b4612697846127106154f5565b6126c6856127106402540be400612e1b565b6126d8856127106402540be400612e1b565b6126e291906154b6565b6126ec9190615377565b6126f691906154b6565b9050866127038288615412565b61270d91906153d0565b9c9b505050505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a39190614a2e565b6001600160a01b0316336001600160a01b0316146127d35760405162461bcd60e51b8152600401610932906152fe565b60048190556040518181527fb7e4406c7dbd1b93965e7b215a33b02672c462728044a364e16b2b47d321aee0906020016118c1565b60015460405163232683a960e21b81526004810185905260009182916001600160a01b0390911690638c9a0ea49060240160206040518083038186803b15801561285157600080fd5b505afa158015612865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128899190614de2565b600154604051635e4f8f5960e01b8152600481018890526402540be400916001600160a01b031690635e4f8f599060240160206040518083038186803b1580156128d257600080fd5b505afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190614de2565b6129149190615497565b61291e91906153fe565b600154604051635970d96b60e11b8152600481018890529192506000916001600160a01b039091169063b2e1b2d69060240160206040518083038186803b15801561296857600080fd5b505afa15801561297c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a09190614de2565b6402540be4006129b086886153b8565b6129ba9190615497565b6129c491906153fe565b905060646129d3826019615497565b6129de84604b615497565b6129e891906153b8565b61087391906153fe565b6002546001600160a01b03163314612a1c5760405162461bcd60e51b8152600401610932906152b5565b828114612a2857600080fd5b600085815260086020908152604080832086905560099091529020612a4e9085856148b7565b506000858152600a60205260409020612a689083836148b7565b50600085815260086020526040908190205490517f7441144ceb286becc54eb23d4ba7d881ec8f99733a2ef397bcefc8a89bb5bd78916109f9918790879087908790615320565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612afd57600080fd5b505afa158015612b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b359190614a2e565b6001600160a01b0316336001600160a01b031614612b655760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b038116612b8b5760405162461bcd60e51b8152600401610932906152db565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d906020016118c1565b6002546001600160a01b03163314612c035760405162461bcd60e51b8152600401610932906152b5565b612c0d8282612d93565b5050565b6003546001600160a01b03163314612c595760405162461bcd60e51b815260206004820152600b60248201526a4b45455045525f4f4e4c5960a81b6044820152606401610932565b610e41838383612d10565b600083851115612c76575060006111d6565b6402540be400612c868484612d70565b612c9087876154f5565b612c9a9190615497565b612ca491906153fe565b95945050505050565b6000818152600660205260409020612cc482611f0a565b600183018190558183554360028401556040805185815260208101939093528201527fda1d5f1f1aab631c047218e2f5f973b6c12729f4181103a91459dda3d1603c38906060016123e5565b6000838152600560209081526040918290208481556001810184905582518681529182018590529181018390527f1daeaff85d4d7cfda495ef83720a04b81df77e38711ca570061e16efa6ffa2759060600160405180910390a150505050565b60006402540be400612d828385615497565b612d8c91906153fe565b9392505050565b612d9c82612cad565b60008281526005602052604090208190612dcd82828135815560208201356001820155604082013560028201555050565b5050604080518381528235602080830191909152830135818301529082013560608201527fa25aa2e7710f36dc1fc81eae36e26c3554faca8ba5af724112efee783e2f75ee906080016123e5565b600080612e2785612e7d565b90506000612e3485612e7d565b90506000612e428383612ee6565b90506000612e4f8261319e565b90506000612e6582612e6089612e7d565b6131c5565b9050612e7081613420565b9998505050505050505050565b600081612e8c57506000919050565b816000612e98826134c7565b90506070811015612eb1578060700382901b9150612ec4565b6070811115612ec4576070810382901c91505b613fff0160701b6001600160701b03919091161760801b92915050565b919050565b6000617fff60f084811c8216919084901c811690821415612f2c5780617fff1415612f1b575061ffff60ef1b91506117959050565b505050600160ff1b81168218611795565b80617fff1415612f70576dffffffffffffffffffffffffffff60801b841615612f5f575061ffff60ef1b91506117959050565b505050808218600160ff1b16611795565b600160801b600160ff1b038416612fba57600160801b600160ff1b038516612fa2575061ffff60ef1b91506117959050565b505050808218600160ff1b16617fff60f01b17611795565b6001600160701b03608085901c1681612fd65760019150612fdd565b600160701b175b6001600160701b03608087901c168361301c578015613017576000613001826134c7565b6001955060e20393840160711901939190911b90505b613026565b600160701b1760721b5b81818161303557613035615555565b0490508061306257600160ff1b87871816613051576000613057565b600160ff1b5b945050505050611795565b6001606c1b81101561307657613076615529565b6000600160731b8210156130b557600160721b8210156130aa57600160711b8210156130a35760706130ad565b60716130ad565b60725b60ff166130be565b6130be826134c7565b9050836140710181860111156130dc57617fff94506000915061316f565b83818601613ffc0110156130f757600094506000915061316f565b83818601613f8c011015613144578385613ffc011115613122578385613ffc010382901b915061313b565b8385613ffc01101561313b57613ffc8585030382901c91505b6000945061316f565b6070811115613157576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050611795565b60006117956131c0836f1fffb8aa3b295c17f0bbbe87fed0691d60811b6131c5565b613565565b6000617fff60f084811c8216919084901c8116908214156132645780617fff1415613243576001600160801b0319858116908516141561321057505050600160ff1b81168218611795565b600160ff1b6001600160801b031986861816141561323357505050818117611795565b5061ffff60ef1b91506117959050565b600160801b600160ff1b038416612f1b575061ffff60ef1b91506117959050565b80617fff14156132a057600160801b600160ff1b03851661328f575061ffff60ef1b91506117959050565b505050600160ff1b82168118611795565b6001600160701b03608086901c16826132bc57600192506132c3565b600160701b175b6001600160701b03608086901c16826132df57600192506132e6565b600160701b175b908102908161330357600160ff1b87871816613051576000613057565b928201926000600160e11b83101561333657600160e01b83101561332f5761332a836134c7565b613339565b60e0613339565b60e15b905061407081860110156133545760009450600092506133f1565b6140e081860110156133975761407085101561337957846140700383901c925061338e565b61407085111561338e57614070850383901b92505b600094506133f1565b61c0dd81860111156133b157617fff9450600092506133f1565b60708111156133c8576070810383901c92506133db565b60708110156133db578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050611795565b6000617fff60f083901c166140fe81111561343a57600080fd5b613fff81101561344d5750600092915050565b600160701b6001600160701b03608085901c161761406f8210156134775761406f8290031c613489565b61406f8211156134895761406e1982011b5b6001607f1b608085901c106134b357600160ff1b8111156134a957600080fd5b6000039392505050565b6001600160ff1b03811115612d8c57600080fd5b60008082116134d557600080fd5b6000600160801b83106134ea57608092831c92015b600160401b83106134fd57604092831c92015b640100000000831061351157602092831c92015b62010000831061352357601092831c92015b610100831061353457600892831c92015b6010831061354457600492831c92015b6004831061355457600292831c92015b600283106117955760010192915050565b60006001607f1b608083901c90811190617fff60f085901c8116916001600160701b0316908214801561359757508015155b156135ab575061ffff60ef1b949350505050565b61400d8211156135d057826135c557617fff60f01b612ca4565b600095945050505050565b613f7f8210156135e95750613fff60f01b949350505050565b816135f757600191506135fe565b600160701b175b613fef82111561361457613fee1982011b613626565b613fef82101561362657613fef8290031c5b828015613637575061203760811b81115b1561364757506000949350505050565b821580156136665750713fffffffffffffffffffffffffffffffffff81115b1561367a5750617fff60f01b949350505050565b6001600160801b0381169060801c83801561369457508115155b156136a0579019906001015b6001607f1b828116156136c45770016a09e667f3bcc908b2fb1366ea957d3e0260801c5b6001607e1b8316156136e7577001306fe0a31b7152de8d5a46305c85edec0260801c5b6001607d1b83161561370a577001172b83c7d517adcdf7c8c50eb14a791f0260801c5b6001607c1b83161561372d5770010b5586cf9890f6298b92b71842a983630260801c5b6001607b1b831615613750577001059b0d31585743ae7c548eb68ca417fd0260801c5b6001607a1b83161561377357700102c9a3e778060ee6f7caca4f7a29bde80260801c5b600160791b8316156137965770010163da9fb33356d84a66ae336dcdfa3f0260801c5b600160781b8316156137b957700100b1afa5abcbed6129ab13ec11dc95430260801c5b600160771b8316156137dc5770010058c86da1c09ea1ff19d294cf2f679b0260801c5b600160761b8316156137ff577001002c605e2e8cec506d21bfc89a23a00f0260801c5b600160751b83161561382257700100162f3904051fa128bca9c55c31e5df0260801c5b600160741b831615613845577001000b175effdc76ba38e31671ca9397250260801c5b600160731b83161561386857700100058ba01fb9f96d6cacd4b180917c3d0260801c5b600160721b83161561388b5770010002c5cc37da9491d0985c348c68e7b30260801c5b600160711b8316156138ae577001000162e525ee054754457d59952920260260801c5b600160701b8316156138d15770010000b17255775c040618bf4a4ade83fc0260801c5b6001606f1b8316156138f4577001000058b91b5bc9ae2eed81e9b7d4cfab0260801c5b6001606e1b83161561391757700100002c5c89d5ec6ca4d7c8acc017b7c90260801c5b6001606d1b83161561393a5770010000162e43f4f831060e02d839a9d16d0260801c5b6001606c1b83161561395d57700100000b1721bcfc99d9f890ea069117630260801c5b6001606b1b8316156139805770010000058b90cf1e6d97f9ca14dbcc16280260801c5b6001606a1b8316156139a3577001000002c5c863b73f016468f6bac5ca2b0260801c5b600160691b8316156139c657700100000162e430e5a18f6119e3c02282a50260801c5b600160681b8316156139e9577001000000b1721835514b86e6d96efd1bfe0260801c5b600160671b831615613a0c57700100000058b90c0b48c6be5df846c5b2ef0260801c5b600160661b831615613a2f5770010000002c5c8601cc6b9e94213c72737a0260801c5b600160651b831615613a52577001000000162e42fff037df38aa2b219f060260801c5b600160641b831615613a755770010000000b17217fba9c739aa5819f44f90260801c5b600160631b831615613a98577001000000058b90bfcdee5acd3c1cedc8230260801c5b600160621b831615613abb57700100000002c5c85fe31f35a6a30da1be500260801c5b600160611b831615613ade5770010000000162e42ff0999ce3541b9fffcf0260801c5b600160601b831615613b0157700100000000b17217f80f4ef5aadda455540260801c5b6001605f1b831615613b245770010000000058b90bfbf8479bd5a81b51ad0260801c5b6001605e1b831615613b47577001000000002c5c85fdf84bd62ae30a74cc0260801c5b6001605d1b831615613b6a57700100000000162e42fefb2fed257559bdaa0260801c5b6001605c1b831615613b8d577001000000000b17217f7d5a7716bba4a9ae0260801c5b6001605b1b831615613bb057700100000000058b90bfbe9ddbac5e109cce0260801c5b6001605a1b831615613bd35770010000000002c5c85fdf4b15de6f17eb0d0260801c5b600160591b831615613bf6577001000000000162e42fefa494f1478fde050260801c5b600160581b831615613c195770010000000000b17217f7d20cf927c8e94c0260801c5b600160571b831615613c3c577001000000000058b90bfbe8f71cb4e4b33d0260801c5b600160561b831615613c5f57700100000000002c5c85fdf477b662b269450260801c5b600160551b831615613c825770010000000000162e42fefa3ae53369388c0260801c5b600160541b831615613ca557700100000000000b17217f7d1d351a389d400260801c5b600160531b831615613cc85770010000000000058b90bfbe8e8b2d3d4ede0260801c5b600160521b831615613ceb577001000000000002c5c85fdf4741bea6e77e0260801c5b600160511b831615613d0e57700100000000000162e42fefa39fe95583c20260801c5b600160501b831615613d31577001000000000000b17217f7d1cfb72b45e10260801c5b6980000000000000000000831615613d5a57700100000000000058b90bfbe8e7cc35c3f00260801c5b6940000000000000000000831615613d835770010000000000002c5c85fdf473e242ea380260801c5b6920000000000000000000831615613dac577001000000000000162e42fefa39f02b772c0260801c5b6910000000000000000000831615613dd55770010000000000000b17217f7d1cf7d83c1a0260801c5b6908000000000000000000831615613dfe577001000000000000058b90bfbe8e7bdcbe2e0260801c5b6904000000000000000000831615613e2757700100000000000002c5c85fdf473dea871f0260801c5b6902000000000000000000831615613e505770010000000000000162e42fefa39ef44d910260801c5b6901000000000000000000831615613e7957700100000000000000b17217f7d1cf79e9490260801c5b68800000000000000000831615613ea15770010000000000000058b90bfbe8e7bce5440260801c5b68400000000000000000831615613ec9577001000000000000002c5c85fdf473de6eca0260801c5b68200000000000000000831615613ef157700100000000000000162e42fefa39ef366f0260801c5b68100000000000000000831615613f19577001000000000000000b17217f7d1cf79afa0260801c5b68080000000000000000831615613f4157700100000000000000058b90bfbe8e7bcd6d0260801c5b68040000000000000000831615613f695770010000000000000002c5c85fdf473de6b20260801c5b68020000000000000000831615613f91577001000000000000000162e42fefa39ef3580260801c5b600160401b831615613fb45770010000000000000000b17217f7d1cf79ab0260801c5b678000000000000000831615613fdb577001000000000000000058b90bfbe8e7bcd50260801c5b67400000000000000083161561400257700100000000000000002c5c85fdf473de6a0260801c5b6720000000000000008316156140295770010000000000000000162e42fefa39ef340260801c5b67100000000000000083161561405057700100000000000000000b17217f7d1cf7990260801c5b6708000000000000008316156140775770010000000000000000058b90bfbe8e7bcc0260801c5b67040000000000000083161561409e577001000000000000000002c5c85fdf473de50260801c5b6702000000000000008316156140c557700100000000000000000162e42fefa39ef20260801c5b6701000000000000008316156140ec577001000000000000000000b17217f7d1cf780260801c5b668000000000000083161561411257700100000000000000000058b90bfbe8e7bb0260801c5b66400000000000008316156141385770010000000000000000002c5c85fdf473dd0260801c5b662000000000000083161561415e577001000000000000000000162e42fefa39ee0260801c5b66100000000000008316156141845770010000000000000000000b17217f7d1cf60260801c5b66080000000000008316156141aa577001000000000000000000058b90bfbe8e7a0260801c5b66040000000000008316156141d057700100000000000000000002c5c85fdf473c0260801c5b66020000000000008316156141f65770010000000000000000000162e42fefa39d0260801c5b660100000000000083161561421c57700100000000000000000000b17217f7d1ce0260801c5b658000000000008316156142415770010000000000000000000058b90bfbe8e60260801c5b65400000000000831615614266577001000000000000000000002c5c85fdf4720260801c5b6520000000000083161561428b57700100000000000000000000162e42fefa380260801c5b651000000000008316156142b0577001000000000000000000000b17217f7d1b0260801c5b650800000000008316156142d557700100000000000000000000058b90bfbe8d0260801c5b650400000000008316156142fa5770010000000000000000000002c5c85fdf460260801c5b6502000000000083161561431f577001000000000000000000000162e42fefa20260801c5b650100000000008316156143445770010000000000000000000000b17217f7d00260801c5b648000000000831615614368577001000000000000000000000058b90bfbe70260801c5b64400000000083161561438c57700100000000000000000000002c5c85fdf30260801c5b6420000000008316156143b05770010000000000000000000000162e42fef90260801c5b6410000000008316156143d457700100000000000000000000000b17217f7c0260801c5b6408000000008316156143f85770010000000000000000000000058b90bfbd0260801c5b64040000000083161561441c577001000000000000000000000002c5c85fde0260801c5b64020000000083161561444057700100000000000000000000000162e42fee0260801c5b640100000000831615614464577001000000000000000000000000b17217f60260801c5b638000000083161561448757700100000000000000000000000058b90bfa0260801c5b63400000008316156144aa5770010000000000000000000000002c5c85fc0260801c5b63200000008316156144cd577001000000000000000000000000162e42fd0260801c5b63100000008316156144f05770010000000000000000000000000b17217e0260801c5b6308000000831615614513577001000000000000000000000000058b90be0260801c5b630400000083161561453657700100000000000000000000000002c5c85e0260801c5b63020000008316156145595770010000000000000000000000000162e42e0260801c5b630100000083161561457c57700100000000000000000000000000b172160260801c5b6280000083161561459e5770010000000000000000000000000058b90a0260801c5b624000008316156145c0577001000000000000000000000000002c5c840260801c5b622000008316156145e257700100000000000000000000000000162e410260801c5b62100000831615614604577001000000000000000000000000000b17200260801c5b6208000083161561462657700100000000000000000000000000058b8f0260801c5b620400008316156146485770010000000000000000000000000002c5c70260801c5b6202000083161561466a577001000000000000000000000000000162e30260801c5b6201000083161561468c5770010000000000000000000000000000b1710260801c5b6180008316156146ad577001000000000000000000000000000058b80260801c5b6140008316156146ce57700100000000000000000000000000002c5b0260801c5b6120008316156146ef5770010000000000000000000000000000162d0260801c5b61100083161561471057700100000000000000000000000000000b160260801c5b6108008316156147315770010000000000000000000000000000058a0260801c5b610400831615614752577001000000000000000000000000000002c40260801c5b610200831615614773577001000000000000000000000000000001610260801c5b610100831615614794577001000000000000000000000000000000b00260801c5b60808316156147b4577001000000000000000000000000000000570260801c5b60408316156147d45770010000000000000000000000000000002b0260801c5b60208316156147f4577001000000000000000000000000000000150260801c5b60108316156148145770010000000000000000000000000000000a0260801c5b6008831615614834577001000000000000000000000000000000040260801c5b6004831615614854577001000000000000000000000000000000010260801c5b8461487557600f81901c6001600160701b03169050613fff820191506148a4565b613ffe821161489a57600f81901c6001600160701b0316905081613fff0391506148a4565b600091613fee19011c5b60709190911b1760801b95945050505050565b8280548282559060005260206000209081019282156148f2579160200282015b828111156148f25782358255916020019190600101906148d7565b506148fe929150614902565b5090565b5b808211156148fe5760008155600101614903565b8035612ee181615597565b60008083601f84011261493457600080fd5b50813567ffffffffffffffff81111561494c57600080fd5b6020830191508360208260051b8501011115610bdb57600080fd5b8035612ee1816155af565b6000610160828403121561498557600080fd5b61498d61534d565b905061499882614917565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a08201526149d860c08301614967565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b600060208284031215614a2357600080fd5b8135612d8c81615597565b600060208284031215614a4057600080fd5b8151612d8c81615597565b60008060408385031215614a5e57600080fd5b8235614a6981615597565b91506020830135614a7981615597565b809150509250929050565b600080600060608486031215614a9957600080fd5b8335614aa481615597565b95602085013595506040909401359392505050565b60008060008060808587031215614acf57600080fd5b8435614ada81615597565b935060208501359250604085013591506060850135614af8816155af565b939692955090935050565b60008060008060008060c08789031215614b1c57600080fd5b8635614b2781615597565b955060208701359450604087013593506060870135614b45816155af565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a031215614b7a57600080fd5b8735614b8581615597565b96506020880135955060408801359450606088013593506080880135614baa816155af565b9699959850939692959460a0840135945060c09093013592915050565b600060408284031215614bd957600080fd5b82601f830112614be857600080fd5b6040516040810181811067ffffffffffffffff82111715614c0b57614c0b615581565b8060405250808385604086011115614c2257600080fd5b60005b6002811015614c44578151835260209283019290910190600101614c25565b509195945050505050565b60008060208385031215614c6257600080fd5b823567ffffffffffffffff811115614c7957600080fd5b614c8585828601614922565b90969095509350505050565b60008060008060408587031215614ca757600080fd5b843567ffffffffffffffff80821115614cbf57600080fd5b614ccb88838901614922565b90965094506020870135915080821115614ce457600080fd5b818701915087601f830112614cf857600080fd5b813581811115614d0757600080fd5b886020606083028501011115614d1c57600080fd5b95989497505060200194505050565b60008060008060008060608789031215614d4457600080fd5b863567ffffffffffffffff80821115614d5c57600080fd5b614d688a838b01614922565b90985096506020890135915080821115614d8157600080fd5b614d8d8a838b01614922565b90965094506040890135915080821115614da657600080fd5b50614db389828a01614922565b979a9699509497509295939492505050565b600060208284031215614dd757600080fd5b8151612d8c816155af565b600060208284031215614df457600080fd5b5051919050565b600060a08284031215614e0d57600080fd5b60405160a0810181811067ffffffffffffffff82111715614e3057614e30615581565b80604052508251815260208301516020820152604083015160408201526060830151614e5b816155af565b60608201526080928301519281019290925250919050565b6000806101808385031215614e8757600080fd5b614e918484614972565b9150610160830135614a79816155af565b6000806000806101c08587031215614eb957600080fd5b614ec38686614972565b966101608601359650610180860135956101a00135945092505050565b600060208284031215614ef257600080fd5b5035919050565b600080600080600060608688031215614f1157600080fd5b85359450602086013567ffffffffffffffff80821115614f3057600080fd5b614f3c89838a01614922565b90965094506040880135915080821115614f5557600080fd5b50614f6288828901614922565b969995985093965092949392505050565b60008060008060808587031215614f8957600080fd5b843593506020850135614f9b816155af565b9250604085013591506060850135614af8816155af565b60008060008060808587031215614fc857600080fd5b843593506020850135614fda816155af565b93969395505050506040820135916060013590565b600080600080600060a0868803121561500757600080fd5b853594506020860135615019816155af565b94979496505050506040830135926060810135926080909101359150565b600080600080600060a0868803121561504f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080828403608081121561508657600080fd5b833592506060601f198201121561509c57600080fd5b506020830190509250929050565b600080604083850312156150bd57600080fd5b50508035926020909101359150565b600080604083850312156150df57600080fd5b505080516020909101519092909150565b600080600080600060a0868803121561510857600080fd5b85359450602086013593506040860135615121816155af565b9250606086013591506080860135615138816155af565b809150509295509295909350565b60008060006060848603121561515b57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561518857600080fd5b5050823594602084013594506040840135936060013592509050565b81835260006001600160fb1b038311156151bd57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408082528351908201819052600090606090818401906020808801855b8381101561522f5761521f8583518051825260208082015190830152604090810151910152565b93850193908201906001016151f8565b5050858303818701528651808452878201938201925060005b8181101561527f5761526f8486518051825260208082015190830152604090810151910152565b9382019392850192600101615248565b509198975050505050505050565b6020808252600e908201526d43414c4c4241434b535f4f4e4c5960901b604082015260600190565b6020808252600c908201526b4d414e414745525f4f4e4c5960a01b604082015260600190565b6020808252600990820152682d22a927afa0a2222960b91b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b85815260606020820152600061533a6060830186886151a4565b82810360408401526114cd8185876151a4565b604051610160810167ffffffffffffffff8111828210171561537157615371615581565b60405290565b600080821280156001600160ff1b03849003851316156153995761539961553f565b600160ff1b83900384128116156153b2576153b261553f565b50500190565b600082198211156153cb576153cb61553f565b500190565b6000826153df576153df615555565b600160ff1b8214600019841416156153f9576153f961553f565b500590565b60008261540d5761540d615555565b500490565b60006001600160ff1b03818413828413808216868404861116156154385761543861553f565b600160ff1b60008712828116878305891216156154575761545761553f565b600087129250878205871284841616156154735761547361553f565b878505871281841616156154895761548961553f565b505050929093029392505050565b60008160001904831182151516156154b1576154b161553f565b500290565b60008083128015600160ff1b8501841216156154d4576154d461553f565b6001600160ff1b03840183138116156154ef576154ef61553f565b50500390565b6000828210156155075761550761553f565b500390565b6000600160ff1b8214156155225761552261553f565b5060000390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146155ac57600080fd5b50565b80151581146155ac57600080fdfea2646970667358221220d5906593077b75d31f8b8ebe7d7e0d64f0a55ff4108c4ddacf12ef67d4dfc5a164736f6c63430008070033","sourceMap":"428:27202:108:-:0;;;1593:53;;;;;;;;;-1:-1:-1;1617:22:108;:20;:22::i;:::-;428:27202;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:156;5998:66:24;;;198:21:156;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:156;;;338:37;5998:66:24;;;;;;392:19:156;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:156;;;6174:28:24;;;;;;552:2:156;6174:28:24;;;6074:139;5939:280::o;422:184:156:-;428:27202:108;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061027f5760003560e01c806375923b9d1161015c578063b74243ba116100ce578063cfc23e9e11610087578063cfc23e9e1461069f578063d0ebdbe7146106bf578063eb95e10c146106d2578063f6960654146106e5578063fdd3265f146106f8578063fe3cfd8c1461070b57600080fd5b8063b74243ba14610611578063bf1db1f614610624578063c04254ec14610653578063c21fbef814610666578063c9533ebc14610679578063cf2befd21461068c57600080fd5b806390999397116101205780639099939714610594578063a8feac6e146105a7578063ab21a05c146105ba578063aced1661146105e2578063ae2293d7146105f5578063aee94fcf146105fe57600080fd5b806375923b9d146105285780637d36dda81461053b5780637d8271371461054e57806380242e511461056e578063867a60c21461058157600080fd5b806342dee1ad116101f557806368286d36116101b957806368286d36146104a65780636a3ca5fd146104b95780636bc84d59146104cc578063726219f3146104df5780637390b23614610502578063748747e61461051557600080fd5b806342dee1ad146103d3578063481c6a751461041d578063485cc955146104305780635ed5804e146104435780636676d8501461049357600080fd5b8063183566d411610247578063183566d4146103345780631f4934a1146103475780632b180a7d14610367578063338139ad1461038a578063351533e7146103ad57806335b03c17146103c057600080fd5b806305098272146102845780630e0052fc146102aa5780630e6bc39a146102cd5780630ea77770146102e257806316fff07414610303575b600080fd5b610297610292366004614b03565b61074c565b6040519081526020015b60405180910390f35b6102976102b8366004614ee0565b60009081526006602052604090206002015490565b6102e06102db366004614ab9565b61087d565b005b6102f56102f0366004614c4f565b610a08565b6040516102a19291906151da565b60005461031c906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b6102976103423660046150aa565b610be2565b610297610355366004614ee0565b60086020526000908152604090205481565b610297610375366004614ee0565b60009081526005602052604090206001015490565b610297610398366004614ee0565b60009081526005602052604090206002015490565b6102e06103bb366004614d2b565b610c13565b60015461031c906001600160a01b031681565b6104026103e1366004614ee0565b60056020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102a1565b60025461031c906001600160a01b031681565b6102e061043e366004614a4b565b610cf5565b61047e610451366004614a84565b60076020908152600093845260408085208252928452828420905282529020805460019091015460ff1682565b604080519283529015156020830152016102a1565b6102976104a1366004614fb2565b610e46565b6104026104b4366004614ea2565b6111de565b6102976104c73660046150aa565b61149a565b6102976104da366004614b5f565b6114b6565b6102976104ed366004614ee0565b60009081526006602052604090206001015490565b610297610510366004614e73565b6114d9565b6102e0610523366004614a11565b61179b565b610402610536366004615037565b6118cc565b610297610549366004614fef565b6119b6565b61029761055c366004614ee0565b60009081526006602052604090205490565b61029761057c3660046150f0565b611a3a565b6102e061058f366004614c91565b611c32565b6102e06105a2366004614a84565b611ced565b6102e06105b5366004614a11565b611de0565b6105cd6105c8366004614ee0565b611f0a565b604080519283526020830191909152016102a1565b60035461031c906001600160a01b031681565b61029760045481565b61029761060c366004614f73565b612239565b6102e061061f3660046150aa565b61232c565b610402610632366004614ee0565b60066020526000908152604090208054600182015460029092015490919083565b610297610661366004614f73565b6123f1565b6102e0610674366004614ee0565b61271d565b610297610687366004615146565b612808565b6102e061069a366004614ef9565b6129f2565b6102976106ad366004614ee0565b60009081526005602052604090205490565b6102e06106cd366004614a11565b612aaf565b6102e06106e0366004615072565b612bd9565b6102e06106f3366004615146565b612c11565b610297610706366004615172565b612c64565b610297610719366004614a84565b6001600160a01b038316600090815260076020908152604080832085845282528083208484529091529020549392505050565b6001546040516362faca8d60e11b81526001600160a01b0388811660048301526024820188905260448201879052600092839291169063c5f5951a9060640160206040518083038186803b1580156107a357600080fd5b505afa1580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db9190614dc5565b6001600160a01b03891660009081526007602090815260408083208b845282528083208a84528252918290208251808401909352805483526001015460ff161580159183019190915291925090806108305750815b1561084057600092505050610873565b60008061084c8a611f0a565b9150915061086c8360000151896108635782610865565b835b8989612c64565b9450505050505b9695505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ca57600080fd5b505afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190614a2e565b6001600160a01b0316336001600160a01b03161461093b5760405162461bcd60e51b81526004016109329061528d565b60405180910390fd5b61094483612cad565b6001600160a01b0384166000908152600760209081526040808320868452825280832085845290915290208161098b5760008481526006602052604090206001015461099b565b6000848152600660205260409020545b8082556001808301805460ff19169091179055604080516001600160a01b03881681526020810187905290810185905260608101919091527f835af8708eb91d2079c09e00124475ffca3f81cbef1e074867d53e5c9ec0ed98906080015b60405180910390a15050505050565b60608060008367ffffffffffffffff811115610a2657610a26615581565b604051908082528060200260200182016040528015610a7b57816020015b610a6860405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610a445790505b50905060008467ffffffffffffffff811115610a9957610a99615581565b604051908082528060200260200182016040528015610aee57816020015b610adb60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610ab75790505b50905060005b85811015610bd4576000878783818110610b1057610b1061556b565b905060200201359050600560008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848381518110610b6757610b6761556b565b6020026020010181905250600660008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050838381518110610bc057610bc061556b565b602090810291909101015250600101610af4565b5090925090505b9250929050565b600a6020528160005260406000208181548110610bfe57600080fd5b90600052602060002001600091509150505481565b6002546001600160a01b03163314610c3d5760405162461bcd60e51b8152600401610932906152b5565b8483148015610c4b57508481145b610c865760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610932565b60005b85811015610cec57610ce4878783818110610ca657610ca661556b565b90506020020135868684818110610cbf57610cbf61556b565b90506020020135858585818110610cd857610cd861556b565b90506020020135612d10565b600101610c89565b50505050505050565b600054610100900460ff1615808015610d155750600054600160ff909116105b80610d2f5750303b158015610d2f575060005460ff166001145b610d925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610932565b6000805460ff191660011790558015610db5576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560556004558015610e41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610e5282846153b8565b610e5e575060006111d6565b600154604051633c44d0a360e01b8152600481018790526001600160a01b0390911690633c44d0a39060240160206040518083038186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190614de2565b600214156111835760008060029054906101000a90046001600160a01b03166001600160a01b0316638ecf3f5a6040518163ffffffff1660e01b8152600401604080518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190614bc7565b9050600085610f78576001610f7b565b60005b600154604051636dc37de360e01b8152600481018a905260ff92909216925060009184916001600160a01b031690636dc37de39060240160206040518083038186803b158015610fca57600080fd5b505afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110029190614dc5565b611016576110118360016154f5565b611018565b825b600281106110285761102861556b565b6020020151600154604051636dc37de360e01b8152600481018b905291925060009185916001600160a01b031690636dc37de39060240160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190614dc5565b6110b957836110c4565b6110c48460016154f5565b600281106110d4576110d461556b565b6020020151905060006110e783836153b8565b6110f2846064615497565b6110fc91906153fe565b90506000896111295761110f888a6153b8565b61111a896064615497565b61112491906153fe565b611148565b611133888a6153b8565b61113e8a6064615497565b61114891906153fe565b90506064611157826019615497565b61116284604b615497565b61116c91906153b8565b61117691906153fe565b96505050505050506111d6565b6000846111ae5761119483856153b8565b61119f846064615497565b6111a991906153fe565b6111cd565b6111b883856153b8565b6111c3856064615497565b6111cd91906153fe565b91506111d69050565b949350505050565b60008060008060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561122f57600080fd5b505afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190614a2e565b6001600160a01b0316336001600160a01b0316146112975760405162461bcd60e51b81526004016109329061528d565b60008054885160208a01516040808c01519051638c8ff1d560e01b81526001600160a01b03938416600482015260248101929092526044820152620100009092041690638c8ff1d59060640160a06040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190614dfb565b6080015190506113468860200151612cad565b600061136a89600001518a602001518b604001518c60c001518c8e60e0015161074c565b60015460208b0151604051632b1cbe9d60e01b81529293506000926001600160a01b0390921691632b1cbe9d916113ae918790600401918252602082015260400190565b60206040518083038186803b1580156113c657600080fd5b505afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe9190614de2565b905061140d8989848a856118cc565b60c08d015160e08e0151604051949a509298509096507fb70bf101b761b8a0fe59428f8a894321d6639ef13ab81b9bf16d19764a7dba6692611485928d918d9088908e9089909615158752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60405180910390a15050509450945094915050565b60096020528160005260406000208181548110610bfe57600080fd5b60006114cd858585856105498d8d8d8c8c8c61074c565b98975050505050505050565b600081156114e957506000611795565b600080546020850151604051639cb87f2360e01b8152600481019190915260248101839052620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561154057600080fd5b505afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190614de2565b600080546020870151604051639cb87f2360e01b81526004810191909152600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156115d457600080fd5b505afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190614de2565b9050600061162b8660e001518760600151612d7090919063ffffffff16565b90508560c00151156116ea5761164181846153b8565b9250600061164f83856153b8565b61165a846064615497565b61166491906153fe565b6020808901516000908152600a90915260409020549091505b80156116e3576020808901516000908152600a909152604090206116a26001836154f5565b815481106116b2576116b261556b565b906000526020600020015482106116da576116ce6001826154f5565b95505050505050611795565b6000190161167d565b505061178d565b6116f481836153b8565b9150600061170283856153b8565b61170d856064615497565b61171791906153fe565b6020808901516000908152600990915260409020549091505b801561178a5760208089015160009081526009909152604090206117556001836154f5565b815481106117655761176561556b565b90600052602060002001548210611781576116ce6001826154f5565b60001901611730565b50505b600093505050505b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e957600080fd5b505afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118219190614a2e565b6001600160a01b0316336001600160a01b0316146118515760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b0381166118775760405162461bcd60e51b8152600401610932906152db565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e906020015b60405180910390a150565b600080808060646402540be4006118e38a8c615412565b6118ed91906153d0565b6118f791906153d0565b905080600081121561191c57606461190f8784615412565b61191991906153d0565b90505b6000611928888a615377565b9050600081611937848e615377565b61194191906154b6565b90506064600454606461195491906154f5565b61195e908e615412565b61196891906153d0565b81136119925761197884846154b6565b9050806119858d846154b6565b61198f9190615377565b92505b600081136119a15760006119a3565b805b9c929b5090995090975050505050505050565b6000806119c38585612d70565b836064600454886119d49190615497565b6119de91906153fe565b6119e891906154b6565b6119f29089615412565b6119fc91906153d0565b9050600086611a1457611a0f8289615377565b611a1e565b611a1e82896154b6565b905060008113611a2f5760006114cd565b979650505050505050565b600154604051631ae07f6160e31b815260048101869052600091829182916001600160a01b03169063d703fb0890602401604080518083038186803b158015611a8257600080fd5b505afa158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba91906150cc565b915091506000611acc88888888612239565b90506000611adc898989896123f1565b6001546040516312f070cd60e01b8152600481018c90528815156024820152919250600091839185916001600160a01b03909116906312f070cd9060440160206040518083038186803b158015611b3257600080fd5b505afa158015611b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6a9190614de2565b611b749190615377565b611b7e9190615377565b9050611b8b600a866153fe565b611b949061550c565b8112611bc157611ba5600a856153fe565b8113611bb15780611bd5565b611bbc600a856153fe565b611bd5565b611bcc600a866153fe565b611bd59061550c565b9050600060646402540be400611beb8e85615412565b611bf591906153d0565b611bff91906153d0565b905060008a611c1757611c12828e6154b6565b611c21565b611c21828e615377565b9d9c50505050505050505050505050565b6002546001600160a01b03163314611c5c5760405162461bcd60e51b8152600401610932906152b5565b828114611c9a5760405162461bcd60e51b815260206004820152600c60248201526b0aea49e9c8ebe988a9c8ea8960a31b6044820152606401610932565b60005b83811015611ce657611cde858583818110611cba57611cba61556b565b90506020020135848484818110611cd357611cd361556b565b905060600201612d93565b600101611c9d565b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3a57600080fd5b505afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d729190614a2e565b6001600160a01b0316336001600160a01b031614611da25760405162461bcd60e51b81526004016109329061528d565b6001600160a01b039092166000908152600760209081526040808320938352928152828220938252929092528120908155600101805460ff19169055565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2e57600080fd5b505afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190614a2e565b6001600160a01b0316336001600160a01b031614611e965760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b038116611ebc5760405162461bcd60e51b8152600401610932906152db565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f5eabd50379e54b19420d1c67256a5d9b1200c1c4c44d14af4540bae519b58b06906020016118c1565b6000818152600660205260408082208054600182015484549351639cb87f2360e01b81526004810187905260248101869052919490939091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b158015611f7457600080fd5b505afa158015611f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fac9190614de2565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561200257600080fd5b505afa158015612016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203a9190614de2565b905060008061204983856153b8565b11612055576000612060565b612060878484612808565b905082156121495760006120778860018686610e46565b905060006120858284615497565b6120956402540be4006064615497565b61209f91906154f5565b6120a98385615497565b6120b8906402540be400615497565b6120c291906153fe565b9050600060646402540be40080600560008e8152602001908152602001600020600201548a60020154436120f691906154f5565b6121056402540be40088615497565b61210f9190615497565b6121199190615497565b61212391906153fe565b61212d91906153fe565b61213791906153fe565b9050612143818a6153b8565b98505050505b811561223057600061215e8860008686610e46565b9050600061216c8284615497565b61217c6402540be4006064615497565b61218691906154f5565b6121908385615497565b61219f906402540be400615497565b6121a991906153fe565b9050600060646402540be40080600560008e8152602001908152602001600020600201548a60020154436121dd91906154f5565b6121ec6402540be40088615497565b6121f69190615497565b6122009190615497565b61220a91906153fe565b61221491906153fe565b61221e91906153fe565b905061222a81896153b8565b97505050505b50505050915091565b60008115612249575060006111d6565b600154604051630bf919a560e31b8152600481018790526000916001600160a01b031690635fc8cd289060240160206040518083038186803b15801561228e57600080fd5b505afa1580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c69190614de2565b90506000856122e6576000878152600560205260409020600101546122f6565b6000878152600560205260409020545b90506402540be4006123228161230c8886615497565b61231691906153fe565b836402540be400612e1b565b611a2f91906154b6565b6002546001600160a01b031633146123565760405162461bcd60e51b8152600401610932906152b5565b63017d78408111156123955760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe90928e960c31b6044820152606401610932565b61239e82612cad565b60008281526005602090815260409182902060020183905581518481529081018390527f048ce436ab4f2632f2aac62af26be3383ebdf5efc9a63f0bbeb6d6c9762d708991015b60405180910390a15050565b60008115612401575060006111d6565b600154604051633a2d43e160e21b8152600481018790526402540be400916000916001600160a01b039091169063e8b50f849060240160206040518083038186803b15801561244f57600080fd5b505afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190614de2565b60008054604051639cb87f2360e01b8152600481018b9052602481018390529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156124dd57600080fd5b505afa1580156124f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125159190614de2565b60008054604051639cb87f2360e01b8152600481018c9052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b15801561256b57600080fd5b505afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190614de2565b90506125af81836153b8565b6125c05760009450505050506111d6565b6000886125ec576125d182846153b8565b6125dd83612710615497565b6125e791906153fe565b61260c565b6125f682846153b8565b61260284612710615497565b61260c91906153fe565b905060008961264f578861262084866153b8565b61262a91906153b8565b6126348a856153b8565b61264090612710615497565b61264a91906153fe565b612684565b8861265a84866153b8565b61266491906153b8565b61266e8a866153b8565b61267a90612710615497565b61268491906153fe565b905060006126a5612697846127106154f5565b6127106402540be400612e1b565b6126b4612697846127106154f5565b6126c6856127106402540be400612e1b565b6126d8856127106402540be400612e1b565b6126e291906154b6565b6126ec9190615377565b6126f691906154b6565b9050866127038288615412565b61270d91906153d0565b9c9b505050505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a39190614a2e565b6001600160a01b0316336001600160a01b0316146127d35760405162461bcd60e51b8152600401610932906152fe565b60048190556040518181527fb7e4406c7dbd1b93965e7b215a33b02672c462728044a364e16b2b47d321aee0906020016118c1565b60015460405163232683a960e21b81526004810185905260009182916001600160a01b0390911690638c9a0ea49060240160206040518083038186803b15801561285157600080fd5b505afa158015612865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128899190614de2565b600154604051635e4f8f5960e01b8152600481018890526402540be400916001600160a01b031690635e4f8f599060240160206040518083038186803b1580156128d257600080fd5b505afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190614de2565b6129149190615497565b61291e91906153fe565b600154604051635970d96b60e11b8152600481018890529192506000916001600160a01b039091169063b2e1b2d69060240160206040518083038186803b15801561296857600080fd5b505afa15801561297c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a09190614de2565b6402540be4006129b086886153b8565b6129ba9190615497565b6129c491906153fe565b905060646129d3826019615497565b6129de84604b615497565b6129e891906153b8565b61087391906153fe565b6002546001600160a01b03163314612a1c5760405162461bcd60e51b8152600401610932906152b5565b828114612a2857600080fd5b600085815260086020908152604080832086905560099091529020612a4e9085856148b7565b506000858152600a60205260409020612a689083836148b7565b50600085815260086020526040908190205490517f7441144ceb286becc54eb23d4ba7d881ec8f99733a2ef397bcefc8a89bb5bd78916109f9918790879087908790615320565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612afd57600080fd5b505afa158015612b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b359190614a2e565b6001600160a01b0316336001600160a01b031614612b655760405162461bcd60e51b8152600401610932906152fe565b6001600160a01b038116612b8b5760405162461bcd60e51b8152600401610932906152db565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d906020016118c1565b6002546001600160a01b03163314612c035760405162461bcd60e51b8152600401610932906152b5565b612c0d8282612d93565b5050565b6003546001600160a01b03163314612c595760405162461bcd60e51b815260206004820152600b60248201526a4b45455045525f4f4e4c5960a81b6044820152606401610932565b610e41838383612d10565b600083851115612c76575060006111d6565b6402540be400612c868484612d70565b612c9087876154f5565b612c9a9190615497565b612ca491906153fe565b95945050505050565b6000818152600660205260409020612cc482611f0a565b600183018190558183554360028401556040805185815260208101939093528201527fda1d5f1f1aab631c047218e2f5f973b6c12729f4181103a91459dda3d1603c38906060016123e5565b6000838152600560209081526040918290208481556001810184905582518681529182018590529181018390527f1daeaff85d4d7cfda495ef83720a04b81df77e38711ca570061e16efa6ffa2759060600160405180910390a150505050565b60006402540be400612d828385615497565b612d8c91906153fe565b9392505050565b612d9c82612cad565b60008281526005602052604090208190612dcd82828135815560208201356001820155604082013560028201555050565b5050604080518381528235602080830191909152830135818301529082013560608201527fa25aa2e7710f36dc1fc81eae36e26c3554faca8ba5af724112efee783e2f75ee906080016123e5565b600080612e2785612e7d565b90506000612e3485612e7d565b90506000612e428383612ee6565b90506000612e4f8261319e565b90506000612e6582612e6089612e7d565b6131c5565b9050612e7081613420565b9998505050505050505050565b600081612e8c57506000919050565b816000612e98826134c7565b90506070811015612eb1578060700382901b9150612ec4565b6070811115612ec4576070810382901c91505b613fff0160701b6001600160701b03919091161760801b92915050565b919050565b6000617fff60f084811c8216919084901c811690821415612f2c5780617fff1415612f1b575061ffff60ef1b91506117959050565b505050600160ff1b81168218611795565b80617fff1415612f70576dffffffffffffffffffffffffffff60801b841615612f5f575061ffff60ef1b91506117959050565b505050808218600160ff1b16611795565b600160801b600160ff1b038416612fba57600160801b600160ff1b038516612fa2575061ffff60ef1b91506117959050565b505050808218600160ff1b16617fff60f01b17611795565b6001600160701b03608085901c1681612fd65760019150612fdd565b600160701b175b6001600160701b03608087901c168361301c578015613017576000613001826134c7565b6001955060e20393840160711901939190911b90505b613026565b600160701b1760721b5b81818161303557613035615555565b0490508061306257600160ff1b87871816613051576000613057565b600160ff1b5b945050505050611795565b6001606c1b81101561307657613076615529565b6000600160731b8210156130b557600160721b8210156130aa57600160711b8210156130a35760706130ad565b60716130ad565b60725b60ff166130be565b6130be826134c7565b9050836140710181860111156130dc57617fff94506000915061316f565b83818601613ffc0110156130f757600094506000915061316f565b83818601613f8c011015613144578385613ffc011115613122578385613ffc010382901b915061313b565b8385613ffc01101561313b57613ffc8585030382901c91505b6000945061316f565b6070811115613157576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050611795565b60006117956131c0836f1fffb8aa3b295c17f0bbbe87fed0691d60811b6131c5565b613565565b6000617fff60f084811c8216919084901c8116908214156132645780617fff1415613243576001600160801b0319858116908516141561321057505050600160ff1b81168218611795565b600160ff1b6001600160801b031986861816141561323357505050818117611795565b5061ffff60ef1b91506117959050565b600160801b600160ff1b038416612f1b575061ffff60ef1b91506117959050565b80617fff14156132a057600160801b600160ff1b03851661328f575061ffff60ef1b91506117959050565b505050600160ff1b82168118611795565b6001600160701b03608086901c16826132bc57600192506132c3565b600160701b175b6001600160701b03608086901c16826132df57600192506132e6565b600160701b175b908102908161330357600160ff1b87871816613051576000613057565b928201926000600160e11b83101561333657600160e01b83101561332f5761332a836134c7565b613339565b60e0613339565b60e15b905061407081860110156133545760009450600092506133f1565b6140e081860110156133975761407085101561337957846140700383901c925061338e565b61407085111561338e57614070850383901b92505b600094506133f1565b61c0dd81860111156133b157617fff9450600092506133f1565b60708111156133c8576070810383901c92506133db565b60708110156133db578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050611795565b6000617fff60f083901c166140fe81111561343a57600080fd5b613fff81101561344d5750600092915050565b600160701b6001600160701b03608085901c161761406f8210156134775761406f8290031c613489565b61406f8211156134895761406e1982011b5b6001607f1b608085901c106134b357600160ff1b8111156134a957600080fd5b6000039392505050565b6001600160ff1b03811115612d8c57600080fd5b60008082116134d557600080fd5b6000600160801b83106134ea57608092831c92015b600160401b83106134fd57604092831c92015b640100000000831061351157602092831c92015b62010000831061352357601092831c92015b610100831061353457600892831c92015b6010831061354457600492831c92015b6004831061355457600292831c92015b600283106117955760010192915050565b60006001607f1b608083901c90811190617fff60f085901c8116916001600160701b0316908214801561359757508015155b156135ab575061ffff60ef1b949350505050565b61400d8211156135d057826135c557617fff60f01b612ca4565b600095945050505050565b613f7f8210156135e95750613fff60f01b949350505050565b816135f757600191506135fe565b600160701b175b613fef82111561361457613fee1982011b613626565b613fef82101561362657613fef8290031c5b828015613637575061203760811b81115b1561364757506000949350505050565b821580156136665750713fffffffffffffffffffffffffffffffffff81115b1561367a5750617fff60f01b949350505050565b6001600160801b0381169060801c83801561369457508115155b156136a0579019906001015b6001607f1b828116156136c45770016a09e667f3bcc908b2fb1366ea957d3e0260801c5b6001607e1b8316156136e7577001306fe0a31b7152de8d5a46305c85edec0260801c5b6001607d1b83161561370a577001172b83c7d517adcdf7c8c50eb14a791f0260801c5b6001607c1b83161561372d5770010b5586cf9890f6298b92b71842a983630260801c5b6001607b1b831615613750577001059b0d31585743ae7c548eb68ca417fd0260801c5b6001607a1b83161561377357700102c9a3e778060ee6f7caca4f7a29bde80260801c5b600160791b8316156137965770010163da9fb33356d84a66ae336dcdfa3f0260801c5b600160781b8316156137b957700100b1afa5abcbed6129ab13ec11dc95430260801c5b600160771b8316156137dc5770010058c86da1c09ea1ff19d294cf2f679b0260801c5b600160761b8316156137ff577001002c605e2e8cec506d21bfc89a23a00f0260801c5b600160751b83161561382257700100162f3904051fa128bca9c55c31e5df0260801c5b600160741b831615613845577001000b175effdc76ba38e31671ca9397250260801c5b600160731b83161561386857700100058ba01fb9f96d6cacd4b180917c3d0260801c5b600160721b83161561388b5770010002c5cc37da9491d0985c348c68e7b30260801c5b600160711b8316156138ae577001000162e525ee054754457d59952920260260801c5b600160701b8316156138d15770010000b17255775c040618bf4a4ade83fc0260801c5b6001606f1b8316156138f4577001000058b91b5bc9ae2eed81e9b7d4cfab0260801c5b6001606e1b83161561391757700100002c5c89d5ec6ca4d7c8acc017b7c90260801c5b6001606d1b83161561393a5770010000162e43f4f831060e02d839a9d16d0260801c5b6001606c1b83161561395d57700100000b1721bcfc99d9f890ea069117630260801c5b6001606b1b8316156139805770010000058b90cf1e6d97f9ca14dbcc16280260801c5b6001606a1b8316156139a3577001000002c5c863b73f016468f6bac5ca2b0260801c5b600160691b8316156139c657700100000162e430e5a18f6119e3c02282a50260801c5b600160681b8316156139e9577001000000b1721835514b86e6d96efd1bfe0260801c5b600160671b831615613a0c57700100000058b90c0b48c6be5df846c5b2ef0260801c5b600160661b831615613a2f5770010000002c5c8601cc6b9e94213c72737a0260801c5b600160651b831615613a52577001000000162e42fff037df38aa2b219f060260801c5b600160641b831615613a755770010000000b17217fba9c739aa5819f44f90260801c5b600160631b831615613a98577001000000058b90bfcdee5acd3c1cedc8230260801c5b600160621b831615613abb57700100000002c5c85fe31f35a6a30da1be500260801c5b600160611b831615613ade5770010000000162e42ff0999ce3541b9fffcf0260801c5b600160601b831615613b0157700100000000b17217f80f4ef5aadda455540260801c5b6001605f1b831615613b245770010000000058b90bfbf8479bd5a81b51ad0260801c5b6001605e1b831615613b47577001000000002c5c85fdf84bd62ae30a74cc0260801c5b6001605d1b831615613b6a57700100000000162e42fefb2fed257559bdaa0260801c5b6001605c1b831615613b8d577001000000000b17217f7d5a7716bba4a9ae0260801c5b6001605b1b831615613bb057700100000000058b90bfbe9ddbac5e109cce0260801c5b6001605a1b831615613bd35770010000000002c5c85fdf4b15de6f17eb0d0260801c5b600160591b831615613bf6577001000000000162e42fefa494f1478fde050260801c5b600160581b831615613c195770010000000000b17217f7d20cf927c8e94c0260801c5b600160571b831615613c3c577001000000000058b90bfbe8f71cb4e4b33d0260801c5b600160561b831615613c5f57700100000000002c5c85fdf477b662b269450260801c5b600160551b831615613c825770010000000000162e42fefa3ae53369388c0260801c5b600160541b831615613ca557700100000000000b17217f7d1d351a389d400260801c5b600160531b831615613cc85770010000000000058b90bfbe8e8b2d3d4ede0260801c5b600160521b831615613ceb577001000000000002c5c85fdf4741bea6e77e0260801c5b600160511b831615613d0e57700100000000000162e42fefa39fe95583c20260801c5b600160501b831615613d31577001000000000000b17217f7d1cfb72b45e10260801c5b6980000000000000000000831615613d5a57700100000000000058b90bfbe8e7cc35c3f00260801c5b6940000000000000000000831615613d835770010000000000002c5c85fdf473e242ea380260801c5b6920000000000000000000831615613dac577001000000000000162e42fefa39f02b772c0260801c5b6910000000000000000000831615613dd55770010000000000000b17217f7d1cf7d83c1a0260801c5b6908000000000000000000831615613dfe577001000000000000058b90bfbe8e7bdcbe2e0260801c5b6904000000000000000000831615613e2757700100000000000002c5c85fdf473dea871f0260801c5b6902000000000000000000831615613e505770010000000000000162e42fefa39ef44d910260801c5b6901000000000000000000831615613e7957700100000000000000b17217f7d1cf79e9490260801c5b68800000000000000000831615613ea15770010000000000000058b90bfbe8e7bce5440260801c5b68400000000000000000831615613ec9577001000000000000002c5c85fdf473de6eca0260801c5b68200000000000000000831615613ef157700100000000000000162e42fefa39ef366f0260801c5b68100000000000000000831615613f19577001000000000000000b17217f7d1cf79afa0260801c5b68080000000000000000831615613f4157700100000000000000058b90bfbe8e7bcd6d0260801c5b68040000000000000000831615613f695770010000000000000002c5c85fdf473de6b20260801c5b68020000000000000000831615613f91577001000000000000000162e42fefa39ef3580260801c5b600160401b831615613fb45770010000000000000000b17217f7d1cf79ab0260801c5b678000000000000000831615613fdb577001000000000000000058b90bfbe8e7bcd50260801c5b67400000000000000083161561400257700100000000000000002c5c85fdf473de6a0260801c5b6720000000000000008316156140295770010000000000000000162e42fefa39ef340260801c5b67100000000000000083161561405057700100000000000000000b17217f7d1cf7990260801c5b6708000000000000008316156140775770010000000000000000058b90bfbe8e7bcc0260801c5b67040000000000000083161561409e577001000000000000000002c5c85fdf473de50260801c5b6702000000000000008316156140c557700100000000000000000162e42fefa39ef20260801c5b6701000000000000008316156140ec577001000000000000000000b17217f7d1cf780260801c5b668000000000000083161561411257700100000000000000000058b90bfbe8e7bb0260801c5b66400000000000008316156141385770010000000000000000002c5c85fdf473dd0260801c5b662000000000000083161561415e577001000000000000000000162e42fefa39ee0260801c5b66100000000000008316156141845770010000000000000000000b17217f7d1cf60260801c5b66080000000000008316156141aa577001000000000000000000058b90bfbe8e7a0260801c5b66040000000000008316156141d057700100000000000000000002c5c85fdf473c0260801c5b66020000000000008316156141f65770010000000000000000000162e42fefa39d0260801c5b660100000000000083161561421c57700100000000000000000000b17217f7d1ce0260801c5b658000000000008316156142415770010000000000000000000058b90bfbe8e60260801c5b65400000000000831615614266577001000000000000000000002c5c85fdf4720260801c5b6520000000000083161561428b57700100000000000000000000162e42fefa380260801c5b651000000000008316156142b0577001000000000000000000000b17217f7d1b0260801c5b650800000000008316156142d557700100000000000000000000058b90bfbe8d0260801c5b650400000000008316156142fa5770010000000000000000000002c5c85fdf460260801c5b6502000000000083161561431f577001000000000000000000000162e42fefa20260801c5b650100000000008316156143445770010000000000000000000000b17217f7d00260801c5b648000000000831615614368577001000000000000000000000058b90bfbe70260801c5b64400000000083161561438c57700100000000000000000000002c5c85fdf30260801c5b6420000000008316156143b05770010000000000000000000000162e42fef90260801c5b6410000000008316156143d457700100000000000000000000000b17217f7c0260801c5b6408000000008316156143f85770010000000000000000000000058b90bfbd0260801c5b64040000000083161561441c577001000000000000000000000002c5c85fde0260801c5b64020000000083161561444057700100000000000000000000000162e42fee0260801c5b640100000000831615614464577001000000000000000000000000b17217f60260801c5b638000000083161561448757700100000000000000000000000058b90bfa0260801c5b63400000008316156144aa5770010000000000000000000000002c5c85fc0260801c5b63200000008316156144cd577001000000000000000000000000162e42fd0260801c5b63100000008316156144f05770010000000000000000000000000b17217e0260801c5b6308000000831615614513577001000000000000000000000000058b90be0260801c5b630400000083161561453657700100000000000000000000000002c5c85e0260801c5b63020000008316156145595770010000000000000000000000000162e42e0260801c5b630100000083161561457c57700100000000000000000000000000b172160260801c5b6280000083161561459e5770010000000000000000000000000058b90a0260801c5b624000008316156145c0577001000000000000000000000000002c5c840260801c5b622000008316156145e257700100000000000000000000000000162e410260801c5b62100000831615614604577001000000000000000000000000000b17200260801c5b6208000083161561462657700100000000000000000000000000058b8f0260801c5b620400008316156146485770010000000000000000000000000002c5c70260801c5b6202000083161561466a577001000000000000000000000000000162e30260801c5b6201000083161561468c5770010000000000000000000000000000b1710260801c5b6180008316156146ad577001000000000000000000000000000058b80260801c5b6140008316156146ce57700100000000000000000000000000002c5b0260801c5b6120008316156146ef5770010000000000000000000000000000162d0260801c5b61100083161561471057700100000000000000000000000000000b160260801c5b6108008316156147315770010000000000000000000000000000058a0260801c5b610400831615614752577001000000000000000000000000000002c40260801c5b610200831615614773577001000000000000000000000000000001610260801c5b610100831615614794577001000000000000000000000000000000b00260801c5b60808316156147b4577001000000000000000000000000000000570260801c5b60408316156147d45770010000000000000000000000000000002b0260801c5b60208316156147f4577001000000000000000000000000000000150260801c5b60108316156148145770010000000000000000000000000000000a0260801c5b6008831615614834577001000000000000000000000000000000040260801c5b6004831615614854577001000000000000000000000000000000010260801c5b8461487557600f81901c6001600160701b03169050613fff820191506148a4565b613ffe821161489a57600f81901c6001600160701b0316905081613fff0391506148a4565b600091613fee19011c5b60709190911b1760801b95945050505050565b8280548282559060005260206000209081019282156148f2579160200282015b828111156148f25782358255916020019190600101906148d7565b506148fe929150614902565b5090565b5b808211156148fe5760008155600101614903565b8035612ee181615597565b60008083601f84011261493457600080fd5b50813567ffffffffffffffff81111561494c57600080fd5b6020830191508360208260051b8501011115610bdb57600080fd5b8035612ee1816155af565b6000610160828403121561498557600080fd5b61498d61534d565b905061499882614917565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a08201526149d860c08301614967565b60c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b600060208284031215614a2357600080fd5b8135612d8c81615597565b600060208284031215614a4057600080fd5b8151612d8c81615597565b60008060408385031215614a5e57600080fd5b8235614a6981615597565b91506020830135614a7981615597565b809150509250929050565b600080600060608486031215614a9957600080fd5b8335614aa481615597565b95602085013595506040909401359392505050565b60008060008060808587031215614acf57600080fd5b8435614ada81615597565b935060208501359250604085013591506060850135614af8816155af565b939692955090935050565b60008060008060008060c08789031215614b1c57600080fd5b8635614b2781615597565b955060208701359450604087013593506060870135614b45816155af565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a031215614b7a57600080fd5b8735614b8581615597565b96506020880135955060408801359450606088013593506080880135614baa816155af565b9699959850939692959460a0840135945060c09093013592915050565b600060408284031215614bd957600080fd5b82601f830112614be857600080fd5b6040516040810181811067ffffffffffffffff82111715614c0b57614c0b615581565b8060405250808385604086011115614c2257600080fd5b60005b6002811015614c44578151835260209283019290910190600101614c25565b509195945050505050565b60008060208385031215614c6257600080fd5b823567ffffffffffffffff811115614c7957600080fd5b614c8585828601614922565b90969095509350505050565b60008060008060408587031215614ca757600080fd5b843567ffffffffffffffff80821115614cbf57600080fd5b614ccb88838901614922565b90965094506020870135915080821115614ce457600080fd5b818701915087601f830112614cf857600080fd5b813581811115614d0757600080fd5b886020606083028501011115614d1c57600080fd5b95989497505060200194505050565b60008060008060008060608789031215614d4457600080fd5b863567ffffffffffffffff80821115614d5c57600080fd5b614d688a838b01614922565b90985096506020890135915080821115614d8157600080fd5b614d8d8a838b01614922565b90965094506040890135915080821115614da657600080fd5b50614db389828a01614922565b979a9699509497509295939492505050565b600060208284031215614dd757600080fd5b8151612d8c816155af565b600060208284031215614df457600080fd5b5051919050565b600060a08284031215614e0d57600080fd5b60405160a0810181811067ffffffffffffffff82111715614e3057614e30615581565b80604052508251815260208301516020820152604083015160408201526060830151614e5b816155af565b60608201526080928301519281019290925250919050565b6000806101808385031215614e8757600080fd5b614e918484614972565b9150610160830135614a79816155af565b6000806000806101c08587031215614eb957600080fd5b614ec38686614972565b966101608601359650610180860135956101a00135945092505050565b600060208284031215614ef257600080fd5b5035919050565b600080600080600060608688031215614f1157600080fd5b85359450602086013567ffffffffffffffff80821115614f3057600080fd5b614f3c89838a01614922565b90965094506040880135915080821115614f5557600080fd5b50614f6288828901614922565b969995985093965092949392505050565b60008060008060808587031215614f8957600080fd5b843593506020850135614f9b816155af565b9250604085013591506060850135614af8816155af565b60008060008060808587031215614fc857600080fd5b843593506020850135614fda816155af565b93969395505050506040820135916060013590565b600080600080600060a0868803121561500757600080fd5b853594506020860135615019816155af565b94979496505050506040830135926060810135926080909101359150565b600080600080600060a0868803121561504f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080828403608081121561508657600080fd5b833592506060601f198201121561509c57600080fd5b506020830190509250929050565b600080604083850312156150bd57600080fd5b50508035926020909101359150565b600080604083850312156150df57600080fd5b505080516020909101519092909150565b600080600080600060a0868803121561510857600080fd5b85359450602086013593506040860135615121816155af565b9250606086013591506080860135615138816155af565b809150509295509295909350565b60008060006060848603121561515b57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561518857600080fd5b5050823594602084013594506040840135936060013592509050565b81835260006001600160fb1b038311156151bd57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408082528351908201819052600090606090818401906020808801855b8381101561522f5761521f8583518051825260208082015190830152604090810151910152565b93850193908201906001016151f8565b5050858303818701528651808452878201938201925060005b8181101561527f5761526f8486518051825260208082015190830152604090810151910152565b9382019392850192600101615248565b509198975050505050505050565b6020808252600e908201526d43414c4c4241434b535f4f4e4c5960901b604082015260600190565b6020808252600c908201526b4d414e414745525f4f4e4c5960a01b604082015260600190565b6020808252600990820152682d22a927afa0a2222960b91b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b85815260606020820152600061533a6060830186886151a4565b82810360408401526114cd8185876151a4565b604051610160810167ffffffffffffffff8111828210171561537157615371615581565b60405290565b600080821280156001600160ff1b03849003851316156153995761539961553f565b600160ff1b83900384128116156153b2576153b261553f565b50500190565b600082198211156153cb576153cb61553f565b500190565b6000826153df576153df615555565b600160ff1b8214600019841416156153f9576153f961553f565b500590565b60008261540d5761540d615555565b500490565b60006001600160ff1b03818413828413808216868404861116156154385761543861553f565b600160ff1b60008712828116878305891216156154575761545761553f565b600087129250878205871284841616156154735761547361553f565b878505871281841616156154895761548961553f565b505050929093029392505050565b60008160001904831182151516156154b1576154b161553f565b500290565b60008083128015600160ff1b8501841216156154d4576154d461553f565b6001600160ff1b03840183138116156154ef576154ef61553f565b50500390565b6000828210156155075761550761553f565b500390565b6000600160ff1b8214156155225761552261553f565b5060000390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146155ac57600080fd5b50565b80151581146155ac57600080fdfea2646970667358221220d5906593077b75d31f8b8ebe7d7e0d64f0a55ff4108c4ddacf12ef67d4dfc5a164736f6c63430008070033","sourceMap":"428:27202:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22960:646;;;;;;:::i;:::-;;:::i;:::-;;;19551:25:156;;;19539:2;19524:18;22960:646:108;;;;;;;;17807:151;;;;;;:::i;:::-;17885:4;17908:27;;;:16;:27;;;;;:43;;;;17807:151;8158:527;;;;;;:::i;:::-;;:::i;:::-;;15107:589;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;612:31::-;;;;;;;;-1:-1:-1;;;;;612:31:108;;;;;;-1:-1:-1;;;;;16158:32:156;;;;16140:51;;16128:2;16113:18;612:31:108;15994:203:156;1104:46:108;;;;;;:::i;:::-;;:::i;996:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;16292:144;;;;;;:::i;:::-;16364:4;16387:21;;;:10;:21;;;;;:42;;;;16292:144;16629;;;;;;:::i;:::-;16701:4;16724:21;;;:10;:21;;;;;:42;;;;16629:144;5504:476;;;;;;:::i;:::-;;:::i;649:32::-;;;;;-1:-1:-1;;;;;649:32:108;;;775:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23815:25:156;;;23871:2;23856:18;;23849:34;;;;23899:18;;;23892:34;23803:2;23788:18;775:45:108;23615:317:156;688:22:108;;;;;-1:-1:-1;;;;;688:22:108;;;1842:217;;;;;;:::i;:::-;;:::i;889:100::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23520:25:156;;;23588:14;;23581:22;23576:2;23561:18;;23554:50;23493:18;889:100:108;23352:258:156;19377:951:108;;;;;;:::i;:::-;;:::i;6765:1089::-;;;;;;:::i;:::-;;:::i;1053:45::-;;;;;;:::i;:::-;;:::i;9172:509::-;;;;;;:::i;:::-;;:::i;17390:143::-;;;;;;:::i;:::-;17462:4;17485:27;;;:16;:27;;;;;:41;;;;17390:143;13385:1430;;;;;;:::i;:::-;;:::i;2469:176::-;;;;;;:::i;:::-;;:::i;25757:808::-;;;;;;:::i;:::-;;:::i;24816:503::-;;;;;;:::i;:::-;;:::i;17010:141::-;;;;;;:::i;:::-;17081:4;17104:27;;;:16;:27;;;;;:40;;17010:141;10082:1053;;;;;;:::i;:::-;;:::i;3642:342::-;;;;;;:::i;:::-;;:::i;27450:178::-;;;;;;:::i;:::-;;:::i;2651:242::-;;;;;;:::i;:::-;;:::i;20658:1861::-;;;;;;:::i;:::-;;:::i;:::-;;;;24119:25:156;;;24175:2;24160:18;;24153:34;;;;24092:18;20658:1861:108;23937:256:156;716:21:108;;;;;-1:-1:-1;;;;;716:21:108;;;743:24;;;;;;11141:552;;;;;;:::i;:::-;;:::i;6150:374::-;;;;;;:::i;:::-;;:::i;826:57::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11699:1446;;;;;;:::i;:::-;;:::i;2999:176::-;;;;;;:::i;:::-;;:::i;18760:443::-;;;;;;:::i;:::-;;:::i;4683:533::-;;;;;;:::i;:::-;;:::i;15917:144::-;;;;;;:::i;:::-;15989:4;16012:21;;;:10;:21;;;;;:42;;15917:144;2169:192;;;;;;:::i;:::-;;:::i;3335:136::-;;;;;;:::i;:::-;;:::i;4254:169::-;;;;;;:::i;:::-;;:::i;24015:410::-;;;;;;:::i;:::-;;:::i;18261:234::-;;;;;;:::i;:::-;-1:-1:-1;;;;;18434:27:108;;;;18411:4;18434:27;;;:19;:27;;;;;;;;:38;;;;;;;;;:45;;;;;;;;;:54;;18261:234;22960:646;23190:12;;:49;;-1:-1:-1;;;23190:49:108;;-1:-1:-1;;;;;16422:32:156;;;23190:49:108;;;16404:51:156;16471:18;;;16464:34;;;16514:18;;;16507:34;;;23160:4:108;;;;23190:12;;;:23;;16377:18:156;;23190:49:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23281:27:108;;23250:28;23281:27;;;:19;:27;;;;;;;;:38;;;;;;;;:45;;;;;;;;;23250:76;;;;;;;;;;;;-1:-1:-1;23250:76:108;;;;;;;;;;;;;;23177:62;;-1:-1:-1;23250:76:108;;23340:29;;;23364:5;23340:29;23336:68;;;23392:1;23385:8;;;;;;23336:68;23415:16;23433:17;23454:36;23480:9;23454:25;:36::i;:::-;23414:76;;;;23507:92;23531:1;:10;;;23543:4;:33;;23564:12;23543:33;;;23550:11;23543:33;23578:10;23590:8;23507:23;:92::i;:::-;23500:99;;;;;;22960:646;;;;;;;;;:::o;8158:527::-;1418:8;;:20;;;-1:-1:-1;;;1418:20:108;;;;:8;;;;-1:-1:-1;;;;;1418:8:108;;-1:-1:-1;;1418:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1404:34:108;:10;:34;1396:61;;;;-1:-1:-1;;;1396:61:108;;19988:2:156;1396:61:108;;;19970:21:156;20027:2;20007:18;;;20000:30;-1:-1:-1;;;20046:18:156;;;20039:44;20100:18;;1396:61:108;;;;;;;;;8327:32:::1;8349:9;8327:21;:32::i;:::-;-1:-1:-1::0;;;;;8402:27:108;::::1;8370:29;8402:27:::0;;;:19:::1;:27;::::0;;;;;;;:38;;;;;;;;:45;;;;;;;;8471:4;:91:::1;;8521:27;::::0;;;:16:::1;:27;::::0;;;;:41:::1;;::::0;8471:91:::1;;;8478:27;::::0;;;:16:::1;:27;::::0;;;;:40;8471:91:::1;8458:104:::0;;;8595:4:::1;8573:19:::0;;::::1;:26:::0;;-1:-1:-1;;8573:26:108::1;::::0;;::::1;::::0;;8615:63:::1;::::0;;-1:-1:-1;;;;;16801:32:156;;16783:51;;16865:2;16850:18;;16843:34;;;16893:18;;;16886:34;;;16951:2;16936:18;;16929:34;;;;8615:63:108::1;::::0;16770:3:156;16755:19;8615:63:108::1;;;;;;;;8317:368;8158:527:::0;;;;:::o;15107:589::-;15191:19;;15249:26;15295:7;15278:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;15278:32:108;;;;;;;;;;;;;;;;-1:-1:-1;15249:61:108;-1:-1:-1;15320:38:108;15384:7;15361:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;15361:38:108;;;;;;;;;;;;;;;;;15320:79;;15415:6;15410:240;15423:18;;;15410:240;;;15458:10;15471:7;;15479:1;15471:10;;;;;;;:::i;:::-;;;;;;;15458:23;;15508:10;:17;15519:5;15508:17;;;;;;;;;;;15496:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;15503:1;15496:9;;;;;;;;:::i;:::-;;;;;;:29;;;;15557:16;:23;15574:5;15557:23;;;;;;;;;;;15539:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;15552:1;15539:15;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;15622:3:108;;15410:240;;;-1:-1:-1;15668:6:108;;-1:-1:-1;15676:12:108;-1:-1:-1;15107:589:108;;;;;;:::o;1104:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5504:476::-;1314:7;;-1:-1:-1;;;;;1314:7:108;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:108;;21763:2:156;1292:46:108;;;21745:21:156;21802:2;21782:18;;;21775:30;-1:-1:-1;;;21821:18:156;;;21814:42;21873:18;;1292:46:108;21561:336:156;1292:46:108;5689:36;;::::1;:76:::0;::::1;;;-1:-1:-1::0;5729:36:108;;::::1;5689:76;5681:101;;;::::0;-1:-1:-1;;;5681:101:108;;20667:2:156;5681:101:108::1;::::0;::::1;20649:21:156::0;20706:2;20686:18;;;20679:30;-1:-1:-1;;;20725:18:156;;;20718:42;20777:18;;5681:101:108::1;20465:336:156::0;5681:101:108::1;5798:6;5793:181;5806:18:::0;;::::1;5793:181;;;5841:63;5861:7;;5869:1;5861:10;;;;;;;:::i;:::-;;;;;;;5873:11;;5885:1;5873:14;;;;;;;:::i;:::-;;;;;;;5889:11;;5901:1;5889:14;;;;;;;:::i;:::-;;;;;;;5841:19;:63::i;:::-;5946:3;;5793:181;;;;5504:476:::0;;;;;;:::o;1842:217::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;21008:2:156;3325:201:24;;;20990:21:156;21047:2;21027:18;;;21020:30;21086:34;21066:18;;;21059:62;-1:-1:-1;;;21137:18:156;;;21130:44;21191:19;;3325:201:24;20806:410:156;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;1935:8:108::1;:37:::0;;-1:-1:-1;;;;;;1935:37:108::1;-1:-1:-1::0;;;;;;1935:37:108;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1982:42:108;;-1:-1:-1;;;;;;1982:42:108::1;::::0;;::::1;::::0;;;::::1;::::0;;2050:2:::1;2034:12;:18:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;19739:36:156;;3721:14:24;;19727:2:156;19712:18;3721:14:24;;;;;;;3647:99;3269:483;1842:217:108;;:::o;19377:951::-;19480:7;19501:18;19511:8;19501:7;:18;:::i;:::-;19498:36;;-1:-1:-1;19533:1:108;19526:8;;19498:36;19547:12;;:39;;-1:-1:-1;;;19547:39:108;;;;;19551:25:156;;;-1:-1:-1;;;;;19547:12:108;;;;:27;;19524:18:156;;19547:39:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19590:1;19547:44;19544:778;;;19619:20;19642:8;;:19;;;-1:-1:-1;;;19642:19:108;;;;:8;;;;-1:-1:-1;;;;;19642:8:108;;:17;;:19;;;;;;;;;;;;;:8;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19619:42;;19679:10;19692:5;:13;;19704:1;19692:13;;;19700:1;19692:13;19744:12;;:38;;-1:-1:-1;;;19744:38:108;;;;;19551:25:156;;;19679:26:108;;;;;;-1:-1:-1;19723:12:108;;19738:5;;-1:-1:-1;;;;;19744:12:108;;:26;;19524:18:156;;19744:38:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;19793:9;19797:5;19793:1;:9;:::i;:::-;19744:58;;;19785:5;19744:58;19738:65;;;;;;;:::i;:::-;;;;;19845:12;;:38;;-1:-1:-1;;;19845:38:108;;;;;19551:25:156;;;19738:65:108;;-1:-1:-1;19821:15:108;;19839:5;;-1:-1:-1;;;;;19845:12:108;;:26;;19524:18:156;;19845:38:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;19898:5;19845:58;;;19886:9;19890:5;19886:1;:9;:::i;:::-;19839:65;;;;;;;:::i;:::-;;;;;;-1:-1:-1;19922:12:108;19952:19;19964:7;19839:65;19952:19;:::i;:::-;19938:11;19942:7;19938:3;:11;:::i;:::-;19937:35;;;;:::i;:::-;19922:50;;19990:14;20007:5;:81;;20068:19;20079:8;20068:7;:19;:::i;:::-;20053:12;20057:8;20053:3;:12;:::i;:::-;20052:36;;;;:::i;:::-;20007:81;;;20030:19;20041:8;20030:7;:19;:::i;:::-;20016:11;20020:7;20016:3;:11;:::i;:::-;20015:35;;;;:::i;:::-;19990:98;-1:-1:-1;20142:3:108;20128:12;19990:98;20128:2;:12;:::i;:::-;20115:10;20118:7;20115:2;:10;:::i;:::-;:25;;;;:::i;:::-;20114:31;;;;:::i;:::-;20107:38;;;;;;;;;;19544:778;20183:14;20200:5;:81;;20261:19;20272:8;20261:7;:19;:::i;:::-;20246:12;20250:8;20246:3;:12;:::i;:::-;20245:36;;;;:::i;:::-;20200:81;;;20223:19;20234:8;20223:7;:19;:::i;:::-;20209:11;20213:7;20209:3;:11;:::i;:::-;20208:35;;;;:::i;:::-;20183:98;-1:-1:-1;20295:16:108;;-1:-1:-1;20295:16:108;19544:778;19377:951;;;;;;:::o;6765:1089::-;6957:11;1418:8;;:20;;;-1:-1:-1;;;1418:20:108;;;;6957:11;;;;1418:8;;;;-1:-1:-1;;;;;1418:8:108;;-1:-1:-1;;1418:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1404:34:108;:10;:34;1396:61;;;;-1:-1:-1;;;1396:61:108;;19988:2:156;1396:61:108;;;19970:21:156;20027:2;20007:18;;;20000:30;-1:-1:-1;;;20046:18:156;;;20039:44;20100:18;;1396:61:108;19786:338:156;1396:61:108;7001:9:::1;7013:8:::0;;7037:13;;7052:16:::1;::::0;::::1;::::0;7070:12:::1;::::0;;::::1;::::0;7013:70;;-1:-1:-1;;;7013:70:108;;-1:-1:-1;;;;;16422:32:156;;;7013:70:108::1;::::0;::::1;16404:51:156::0;16471:18;;;16464:34;;;;16514:18;;;16507:34;7013:8:108;;;::::1;;::::0;:23:::1;::::0;16377:18:156;;7013:70:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;7001:97;;7108:39;7130:6;:16;;;7108:21;:39::i;:::-;7158:6;7167:189;7200:6;:13;;;7227:6;:16;;;7257:6;:12;;;7283:6;:10;;;7307;7331:6;:15;;;7167:19;:189::i;:::-;7389:12;::::0;7427:16:::1;::::0;::::1;::::0;7389:61:::1;::::0;-1:-1:-1;;;7389:61:108;;::::1;::::0;::::1;24119:25:156::0;;;;24160:18;;;24153:34;;;7158:198:108;;-1:-1:-1;7367:19:108::1;::::0;-1:-1:-1;;;;;7389:12:108;;::::1;::::0;-1:-1:-1;;24092:18:156;;7389:61:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7367:83;;7482:145;7513:10;7537:13;7564:1;7579:10;7603:14;7482:17;:145::i;:::-;7676:10;::::0;::::1;::::0;7725:15:::1;::::0;::::1;::::0;7651:196:::1;::::0;7460:167;;-1:-1:-1;7460:167:108;;-1:-1:-1;7460:167:108;;-1:-1:-1;7651:196:108::1;::::0;::::1;::::0;7700:10;;7755:13;;7783:1;;7799:10;;7823:14;;18656::156;;18649:22;18631:41;;18703:2;18688:18;;18681:34;;;;18746:2;18731:18;;18724:34;;;;18789:2;18774:18;;18767:34;;;;18832:3;18817:19;;18810:35;18876:3;18861:19;;18854:35;18920:3;18905:19;;18898:35;18618:3;18603:19;;18324:615;7651:196:108::1;;;;;;;;6990:864;;;6765:1089:::0;;;;;;;;:::o;1053:45::-;;;;;;;;;;;;;;;;;;;;9172:509;9403:4;9438:236;9484:9;9511:4;9533:10;9561:8;9587:73;9607:6;9615:9;9626:5;9633:4;9639:10;9651:8;9587:19;:73::i;9438:236::-;9419:255;9172:509;-1:-1:-1;;;;;;;;9172:509:108:o;13385:1430::-;13494:4;13514:5;13511:18;;;-1:-1:-1;13528:1:108;13521:8;;13511:18;13561:25;13589:8;;13615:16;;;;13589:46;;-1:-1:-1;;;13589:46:108;;;;;24119:25:156;;;;24160:18;;;24153:34;;;13589:8:108;;;;-1:-1:-1;;;;;13589:8:108;;:25;;24092:18:156;;13589:46:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13645:26;13674:8;;13700:16;;;;13674:46;;-1:-1:-1;;;13674:46:108;;;;;24119:25:156;;;;13718:1:108;24160:18:156;;;24153:34;13561:74:108;;-1:-1:-1;13645:26:108;;13674:8;;;;-1:-1:-1;;;;;13674:8:108;;:25;;24092:18:156;;13674:46:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13645:75;;13731:20;13754:43;13781:6;:15;;;13754:6;:22;;;:26;;:43;;;;:::i;:::-;13731:66;;13812:6;:10;;;13808:961;;;13838:39;13862:15;13838:39;;:::i;:::-;;-1:-1:-1;13891:29:108;13972:44;13995:21;13838:39;13972:44;:::i;:::-;13924:27;13930:21;13924:3;:27;:::i;:::-;13923:94;;;;:::i;:::-;14062:16;;;;;14037:6;14046:33;;;:15;:33;;;;;;:40;13891:126;;-1:-1:-1;14032:254:108;14088:5;;14032:254;;14162:16;;;;;14146:33;;;;:15;:33;;;;;;14180:5;14184:1;14180;:5;:::i;:::-;14146:40;;;;;;;;:::i;:::-;;;;;;;;;14118:24;:68;14114:86;;14195:5;14199:1;14195;:5;:::i;:::-;14188:12;;;;;;;;;14114:86;-1:-1:-1;;14250:3:108;14032:254;;;;13824:472;13808:961;;;14316:40;14341:15;14316:40;;:::i;:::-;;-1:-1:-1;14370:28:108;14449:44;14316:40;14449:20;:44;:::i;:::-;14402:26;14408:20;14402:3;:26;:::i;:::-;14401:93;;;;:::i;:::-;14537:16;;;;;14513:6;14522:32;;;:14;:32;;;;;;:39;14370:124;;-1:-1:-1;14508:251:108;14563:5;;14508:251;;14635:16;;;;;14620:32;;;;:14;:32;;;;;;14653:5;14657:1;14653;:5;:::i;:::-;14620:39;;;;;;;;:::i;:::-;;;;;;;;;14593:23;:66;14589:84;;14668:5;14672:1;14668;:5;:::i;14589:84::-;-1:-1:-1;;14723:3:108;14508:251;;;;14302:467;13808:961;14785:1;14778:8;;;;;13385:1430;;;;;:::o;2469:176::-;1209:8;;:14;;;-1:-1:-1;;;1209:14:108;;;;:8;;;;-1:-1:-1;;;;;1209:8:108;;-1:-1:-1;;1209:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:108;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:108;;22441:2:156;1187:49:108;;;22423:21:156;22480:1;22460:18;;;22453:29;-1:-1:-1;;;22498:18:156;;;22491:38;22546:18;;1187:49:108;22239:331:156;1187:49:108;-1:-1:-1;;;;;2539:21:108;::::1;2531:43;;;::::0;-1:-1:-1;;;2531:43:108;;22104:2:156;2531:43:108::1;::::0;::::1;22086:21:156::0;22143:1;22123:18;;;22116:29;-1:-1:-1;;;22161:18:156;;;22154:39;22210:18;;2531:43:108::1;21902:332:156::0;2531:43:108::1;2585:6;:16:::0;;-1:-1:-1;;;;;;2585:16:108::1;-1:-1:-1::0;;;;;2585:16:108;::::1;::::0;;::::1;::::0;;;2616:22:::1;::::0;16140:51:156;;;2616:22:108::1;::::0;16128:2:156;16113:18;2616:22:108::1;;;;;;;;2469:176:::0;:::o;25757:808::-;25943:4;;;;26034:3;601:4;25981:31;25999:13;25985:10;25981:31;:::i;:::-;25980:51;;;;:::i;:::-;:57;;;;:::i;:::-;25970:67;-1:-1:-1;25970:67:108;26047:20;26087:7;;26083:90;;;26159:3;26130:25;26140:14;26130:3;:25;:::i;:::-;26129:33;;;;:::i;:::-;26110:52;;26083:90;26183:8;26194:34;26217:10;26198:11;26194:34;:::i;:::-;26183:45;-1:-1:-1;26238:9:108;26183:45;26250:34;26268:16;26254:10;26250:34;:::i;:::-;:41;;;;:::i;:::-;26238:53;;26360:3;26343:12;;26337:3;:18;;;;:::i;:::-;26315:41;;26319:10;26315:41;:::i;:::-;26314:49;;;;:::i;:::-;26305:5;:58;26301:182;;26387:22;26406:3;26387:16;:22;:::i;:::-;26379:30;-1:-1:-1;26379:30:108;26442:22;26453:10;26442:4;:22;:::i;:::-;:30;;;;:::i;:::-;26423:49;;26301:182;26508:1;26500:5;:9;:27;;26526:1;26500:27;;;26517:5;26500:27;26492:66;26529:16;;-1:-1:-1;26552:4:108;;-1:-1:-1;25757:808:108;;-1:-1:-1;;;;;;;;25757:808:108:o;24816:503::-;24998:4;;25134:24;:10;25149:8;25134:14;:24::i;:::-;25101:11;25090:3;25074:12;;25061:10;:25;;;;:::i;:::-;25060:33;;;;:::i;:::-;25056:57;;;;:::i;:::-;25038:76;;25042:9;25038:76;:::i;:::-;25037:122;;;;:::i;:::-;25014:145;;25170:12;25185:4;:76;;25228:33;25245:16;25232:9;25228:33;:::i;:::-;25185:76;;;25192:33;25209:16;25196:9;25192:33;:::i;:::-;25170:91;;25290:1;25279:8;:12;:33;;25311:1;25279:33;;;25299:8;25272:40;-1:-1:-1;;;;;;;24816:503:108:o;10082:1053::-;10343:12;;:34;;-1:-1:-1;;;10343:34:108;;;;;19551:25:156;;;10268:21:108;;;;;;-1:-1:-1;;;;;10343:12:108;;:23;;19524:18:156;;10343:34:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10302:75;;;;10396:21;10420:63;10441:9;10452:4;10458:17;10477:5;10420:20;:63::i;:::-;10396:87;;10493:20;10516:62;10536:9;10547:4;10553:17;10572:5;10516:19;:62::i;:::-;10614:12;;:42;;-1:-1:-1;;;10614:42:108;;;;;23520:25:156;;;23588:14;;23581:22;23561:18;;;23554:50;10493:85:108;;-1:-1:-1;10588:17:108;;10493:85;;10660:17;;-1:-1:-1;;;;;10614:12:108;;;;:24;;23493:18:156;;10614:42:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10610:67;;;;:::i;:::-;:86;;;;:::i;:::-;10588:109;-1:-1:-1;10753:17:108;10768:2;10753:12;:17;:::i;:::-;10748:23;;;:::i;:::-;10732:13;:39;:149;;10821:17;10836:2;10821:12;:17;:::i;:::-;10801:13;:38;:79;;10867:13;10732:149;;10801:79;10846:17;10861:2;10846:12;:17;:::i;:::-;10732:149;;;10779:17;10794:2;10779:12;:17;:::i;:::-;10774:23;;;:::i;:::-;10716:165;-1:-1:-1;10900:15:108;10975:3;601:4;10919:30;10939:9;10716:165;10919:30;:::i;:::-;10918:50;;;;:::i;:::-;:61;;;;:::i;:::-;10900:79;;10989:19;11011:4;:66;;11049:28;11066:11;11053:9;11049:28;:::i;:::-;11011:66;;;11018:28;11035:11;11022:9;11018:28;:::i;:::-;10989:88;10082:1053;-1:-1:-1;;;;;;;;;;;;;10082:1053:108:o;3642:342::-;1314:7;;-1:-1:-1;;;;;1314:7:108;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:108;;21763:2:156;1292:46:108;;;21745:21:156;21802:2;21782:18;;;21775:30;-1:-1:-1;;;21821:18:156;;;21814:42;21873:18;;1292:46:108;21561:336:156;1292:46:108;3764:31;;::::1;3756:56;;;::::0;-1:-1:-1;;;3756:56:108;;20667:2:156;3756:56:108::1;::::0;::::1;20649:21:156::0;20706:2;20686:18;;;20679:30;-1:-1:-1;;;20725:18:156;;;20718:42;20777:18;;3756:56:108::1;20465:336:156::0;3756:56:108::1;3828:6;3823:155;3836:18:::0;;::::1;3823:155;;;3871:37;3886:7;;3894:1;3886:10;;;;;;;:::i;:::-;;;;;;;3898:6;;3905:1;3898:9;;;;;;;:::i;:::-;;;;;;3871:14;:37::i;:::-;3950:3;;3823:155;;;;3642:342:::0;;;;:::o;27450:178::-;1418:8;;:20;;;-1:-1:-1;;;1418:20:108;;;;:8;;;;-1:-1:-1;;;;;1418:8:108;;-1:-1:-1;;1418:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1404:34:108;:10;:34;1396:61;;;;-1:-1:-1;;;1396:61:108;;19988:2:156;1396:61:108;;;19970:21:156;20027:2;20007:18;;;20000:30;-1:-1:-1;;;20046:18:156;;;20039:44;20100:18;;1396:61:108;19786:338:156;1396:61:108;-1:-1:-1;;;;;27576:27:108;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;:38;;;;;;;;;:45;;;;;;;;;27569:52;;;-1:-1:-1;27569:52:108::1;::::0;;-1:-1:-1;;27569:52:108::1;::::0;;27450:178::o;2651:242::-;1209:8;;:14;;;-1:-1:-1;;;1209:14:108;;;;:8;;;;-1:-1:-1;;;;;1209:8:108;;-1:-1:-1;;1209:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:108;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:108;;22441:2:156;1187:49:108;;;22423:21:156;22480:1;22460:18;;;22453:29;-1:-1:-1;;;22498:18:156;;;22491:38;22546:18;;1187:49:108;22239:331:156;1187:49:108;-1:-1:-1;;;;;2738:29:108;::::1;2730:51;;;::::0;-1:-1:-1;;;2730:51:108;;22104:2:156;2730:51:108::1;::::0;::::1;22086:21:156::0;22143:1;22123:18;;;22116:29;-1:-1:-1;;;22161:18:156;;;22154:39;22210:18;;2730:51:108::1;21902:332:156::0;2730:51:108::1;2792:12;:44:::0;;-1:-1:-1;;;;;;2792:44:108::1;-1:-1:-1::0;;;;;2792:44:108;::::1;::::0;;::::1;::::0;;;2851:35:::1;::::0;16140:51:156;;;2851:35:108::1;::::0;16128:2:156;16113:18;2851:35:108::1;15994:203:156::0;20658:1861:108;20730:14;20802:27;;;:16;:27;;;;;;20860:14;;20897:15;;;;20951:8;;:39;;-1:-1:-1;;;20951:39:108;;;;;24119:25:156;;;24160:18;;;24153:34;;;20860:14:108;;20897:15;;20730:14;;20951:8;;;;-1:-1:-1;;;;;20951:8:108;;:25;;24092:18:156;;20951:39:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21000:26;21029:8;;:39;;-1:-1:-1;;;21029:39:108;;;;;24119:25:156;;;21066:1:108;24160:18:156;;;24153:34;20923:67:108;;-1:-1:-1;21000:26:108;;21029:8;;;;-1:-1:-1;;;;;21029:8:108;;:25;;24092:18:156;;21029:39:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21000:68;-1:-1:-1;21078:31:108;;21112:44;21000:68;21112:20;:44;:::i;:::-;:48;:136;;21247:1;21112:136;;;21163:81;21190:9;21200:20;21222:21;21163:26;:81::i;:::-;21078:170;-1:-1:-1;21263:24:108;;21259:619;;21303:14;21320:76;21335:9;21346:4;21352:20;21374:21;21320:14;:76::i;:::-;21303:93;-1:-1:-1;21410:19:108;21497:33;21303:93;21497:23;:33;:::i;:::-;21480:14;601:4;21491:3;21480:14;:::i;:::-;:50;;;;:::i;:::-;21444:33;21468:9;21444:23;:33;:::i;:::-;21432:46;;601:4;21432:46;:::i;:::-;:99;;;;:::i;:::-;21410:121;;21546:28;21813:3;601:4;;21692:10;:21;21703:9;21692:21;;;;;;;;;;;:42;;;21655:1;:17;;;21640:12;:32;;;;:::i;:::-;21578:43;601:4;21578:14;:43;:::i;:::-;:95;;;;:::i;:::-;:156;;;;:::i;:::-;21577:187;;;;:::i;:::-;:216;;;;:::i;:::-;:239;;;;:::i;:::-;21546:270;-1:-1:-1;21831:36:108;21546:270;21831:36;;:::i;:::-;;;21289:589;;;21259:619;21892:25;;21888:625;;21934:14;21951:77;21966:9;21977:5;21984:20;22006:21;21951:14;:77::i;:::-;21934:94;-1:-1:-1;22042:20:108;22130:33;21934:94;22130:23;:33;:::i;:::-;22113:14;601:4;22124:3;22113:14;:::i;:::-;:50;;;;:::i;:::-;22077:33;22101:9;22077:23;:33;:::i;:::-;22065:46;;601:4;22065:46;:::i;:::-;:99;;;;:::i;:::-;22042:122;;22178:28;22447:3;601:4;;22326:10;:21;22337:9;22326:21;;;;;;;;;;;:42;;;22289:1;:17;;;22274:12;:32;;;;:::i;:::-;22210:44;601:4;22210:15;:44;:::i;:::-;:97;;;;:::i;:::-;:158;;;;:::i;:::-;22209:189;;;;:::i;:::-;:218;;;;:::i;:::-;:241;;;;:::i;:::-;22178:272;-1:-1:-1;22465:37:108;22178:272;22465:37;;:::i;:::-;;;21919:594;;;21888:625;20763:1756;;;;20658:1861;;;:::o;11141:552::-;11263:13;11291:5;11288:18;;;-1:-1:-1;11305:1:108;11298:8;;11288:18;11381:12;;:50;;-1:-1:-1;;;11381:50:108;;;;;19551:25:156;;;11372:6:108;;-1:-1:-1;;;;;11381:12:108;;:38;;19524:18:156;;11381:50:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11372:59;;11442:20;11465:6;:98;;11520:22;;;;:10;:22;;;;;:43;;;11465:98;;;11474:22;;;;:10;:22;;;;;:43;11465:98;11442:121;-1:-1:-1;601:4:108;11582:84;601:4;11605:19;11607:17;11605:1;:19;:::i;:::-;:32;;;;:::i;:::-;11638:15;601:4;11582:22;:84::i;:::-;:102;;;;:::i;6150:374::-;1314:7;;-1:-1:-1;;;;;1314:7:108;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:108;;21763:2:156;1292:46:108;;;21745:21:156;21802:2;21782:18;;;21775:30;-1:-1:-1;;;21821:18:156;;;21814:42;21873:18;;1292:46:108;21561:336:156;1292:46:108;6259:4:::1;6250:5;:13;;6242:34;;;::::0;-1:-1:-1;;;6242:34:108;;20331:2:156;6242:34:108::1;::::0;::::1;20313:21:156::0;20370:1;20350:18;;;20343:29;-1:-1:-1;;;20388:18:156;;;20381:38;20436:18;;6242:34:108::1;20129:331:156::0;6242:34:108::1;6363:32;6385:9;6363:21;:32::i;:::-;6406:21;::::0;;;:10:::1;:21;::::0;;;;;;;;:42:::1;;:50:::0;;;6472:45;;24119:25:156;;;24160:18;;;24153:34;;;6472:45:108::1;::::0;24092:18:156;6472:45:108::1;;;;;;;;6150:374:::0;;:::o;11699:1446::-;11814:13;11842:5;11839:18;;;-1:-1:-1;11856:1:108;11849:8;;11839:18;11975:12;;:49;;-1:-1:-1;;;11975:49:108;;;;;19551:25:156;;;601:4:108;;11914:16;;-1:-1:-1;;;;;11975:12:108;;;;:37;;19524:18:156;;11975:49:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12035:25;12063:8;;:40;;-1:-1:-1;;;12063:40:108;;;;;24119:25:156;;;24160:18;;;24153:34;;;11959:65:108;;-1:-1:-1;12035:25:108;;12063:8;;;;-1:-1:-1;;;;;12063:8:108;;:25;;24092:18:156;;12063:40:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12113:26;12142:8;;:40;;-1:-1:-1;;;12142:40:108;;;;;24119:25:156;;;12180:1:108;24160:18:156;;;24153:34;12035:68:108;;-1:-1:-1;12113:26:108;;12142:8;;;;-1:-1:-1;;;;;12142:8:108;;:25;;24092:18:156;;12142:40:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12113:69;-1:-1:-1;12195:44:108;12113:69;12195:20;:44;:::i;:::-;12192:63;;12254:1;12247:8;;;;;;;;12192:63;12265:12;12280:6;:217;;12452:44;12475:21;12452:20;:44;:::i;:::-;12420:27;12426:21;12420:3;:27;:::i;:::-;12419:78;;;;:::i;:::-;12280:217;;;12346:44;12369:21;12346:20;:44;:::i;:::-;12315:26;12321:20;12315:3;:26;:::i;:::-;12314:77;;;;:::i;:::-;12265:232;;12507:17;12527:6;:302;;12811:17;12764:44;12787:21;12764:20;:44;:::i;:::-;:64;;;;:::i;:::-;12717:41;12741:17;12717:21;:41;:::i;:::-;12710:49;;:3;:49;:::i;:::-;12709:120;;;;:::i;:::-;12527:302;;;12663:17;12616:44;12639:21;12616:20;:44;:::i;:::-;:64;;;;:::i;:::-;12569:41;12593:17;12569:20;:41;:::i;:::-;12562:49;;:3;:49;:::i;:::-;12561:120;;;;:::i;:::-;12507:322;-1:-1:-1;12839:13:108;13026:56;13050:13;13056:7;13050:3;:13;:::i;:::-;13066:3;601:4;13026:22;:56::i;:::-;12962:61;12986:18;12992:12;12986:3;:18;:::i;12962:61::-;12912:47;12935:7;12943:3;601:4;12912:22;:47::i;:::-;12856:53;12879:12;12893:3;601:4;12856:22;:53::i;:::-;:103;;;;:::i;:::-;:167;;;;:::i;:::-;:226;;;;:::i;:::-;12839:244;-1:-1:-1;13125:12:108;13104:19;12839:244;13104:9;:19;:::i;:::-;13103:34;;;;:::i;:::-;13094:43;11699:1446;-1:-1:-1;;;;;;;;;;;;11699:1446:108:o;2999:176::-;1209:8;;:14;;;-1:-1:-1;;;1209:14:108;;;;:8;;;;-1:-1:-1;;;;;1209:8:108;;-1:-1:-1;;1209:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:108;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:108;;22441:2:156;1187:49:108;;;22423:21:156;22480:1;22460:18;;;22453:29;-1:-1:-1;;;22498:18:156;;;22491:38;22546:18;;1187:49:108;22239:331:156;1187:49:108;3091:12:::1;:28:::0;;;3134:34:::1;::::0;19551:25:156;;;3134:34:108::1;::::0;19539:2:156;19524:18;3134:34:108::1;19407:175:156::0;18760:443:108;18976:12;;:35;;-1:-1:-1;;;18976:35:108;;;;;19551:25:156;;;18862:7:108;;;;-1:-1:-1;;;;;18976:12:108;;;;:23;;19524:18:156;;18976:35:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18914:12;;:32;;-1:-1:-1;;;18914:32:108;;;;;19551:25:156;;;601:4:108;;-1:-1:-1;;;;;18914:12:108;;:20;;19524:18:156;;18914:32:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;18913:99;;;;:::i;:::-;19096:12;;:34;;-1:-1:-1;;;19096:34:108;;;;;19551:25:156;;;18889:123:108;;-1:-1:-1;19022:20:108;;-1:-1:-1;;;;;19096:12:108;;;;:22;;19524:18:156;;19096:34:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;601:4;19047:18;19057:8;19047:7;:18;:::i;:::-;19046:33;;;;:::i;:::-;19045:86;;;;:::i;:::-;19022:109;-1:-1:-1;19192:3:108;19172:18;19022:109;19172:2;:18;:::i;:::-;19150:19;19153:16;19150:2;:19;:::i;:::-;:40;;;;:::i;:::-;19149:46;;;;:::i;4683:533::-;1314:7;;-1:-1:-1;;;;;1314:7:108;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:108;;21763:2:156;1292:46:108;;;21745:21:156;21802:2;21782:18;;;21775:30;-1:-1:-1;;;21821:18:156;;;21814:42;21873:18;;1292:46:108;21561:336:156;1292:46:108;4869:49;;::::1;4861:58;;;::::0;::::1;;4930:34;::::0;;;:22:::1;:34;::::0;;;;;;;:59;;;4999:14:::1;:26:::0;;;;;:44:::1;::::0;4967:15;;4999:44:::1;:::i;:::-;-1:-1:-1::0;5053:27:108::1;::::0;;;:15:::1;:27;::::0;;;;:46:::1;::::0;5083:16;;5053:46:::1;:::i;:::-;-1:-1:-1::0;5139:34:108::1;::::0;;;:22:::1;:34;::::0;;;;;;;5115:94;;::::1;::::0;::::1;::::0;5175:15;;;;5192:16;;;;5115:94:::1;:::i;2169:192::-:0;1209:8;;:14;;;-1:-1:-1;;;1209:14:108;;;;:8;;;;-1:-1:-1;;;;;1209:8:108;;-1:-1:-1;;1209:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1195:28:108;:10;:28;1187:49;;;;-1:-1:-1;;;1187:49:108;;22441:2:156;1187:49:108;;;22423:21:156;22480:1;22460:18;;;22453:29;-1:-1:-1;;;22498:18:156;;;22491:38;22546:18;;1187:49:108;22239:331:156;1187:49:108;-1:-1:-1;;;;;2242:22:108;::::1;2234:44;;;::::0;-1:-1:-1;;;2234:44:108;;22104:2:156;2234:44:108::1;::::0;::::1;22086:21:156::0;22143:1;22123:18;;;22116:29;-1:-1:-1;;;22161:18:156;;;22154:39;22210:18;;2234:44:108::1;21902:332:156::0;2234:44:108::1;2297:7;:18:::0;;-1:-1:-1;;;;;;2297:18:108::1;-1:-1:-1::0;;;;;2297:18:108;::::1;::::0;;::::1;::::0;;;2330:24:::1;::::0;16140:51:156;;;2330:24:108::1;::::0;16128:2:156;16113:18;2330:24:108::1;15994:203:156::0;3335:136:108;1314:7;;-1:-1:-1;;;;;1314:7:108;1300:10;:21;1292:46;;;;-1:-1:-1;;;1292:46:108;;21763:2:156;1292:46:108;;;21745:21:156;21802:2;21782:18;;;21775:30;-1:-1:-1;;;21821:18:156;;;21814:42;21873:18;;1292:46:108;21561:336:156;1292:46:108;3432:32:::1;3447:9;3458:5;3432:14;:32::i;:::-;3335:136:::0;;:::o;4254:169::-;1542:6;;-1:-1:-1;;;;;1542:6:108;1520:10;:29;1512:53;;;;-1:-1:-1;;;1512:53:108;;21423:2:156;1512:53:108;;;21405:21:156;21462:2;21442:18;;;21435:30;-1:-1:-1;;;21481:18:156;;;21474:41;21532:18;;1512:53:108;21221:335:156;1512:53:108;4362:54:::1;4382:9;4393:10;4405;4362:19;:54::i;24015:410::-:0;24196:4;24242:23;24219:20;:46;24216:92;;;-1:-1:-1;24292:1:108;24285:8;;24216:92;601:4;24380:24;:10;24395:8;24380:14;:24::i;:::-;24330:46;24356:20;24330:23;:46;:::i;:::-;24329:75;;;;:::i;:::-;24328:90;;;;:::i;:::-;24321:97;24015:410;-1:-1:-1;;;;;24015:410:108:o;27110:334::-;27175:26;27204:27;;;:16;:27;;;;;27278:36;27221:9;27278:25;:36::i;:::-;27259:15;;;27242:72;;;;;;27344:12;27324:17;;;:32;27372:65;;;23815:25:156;;;23871:2;23856:18;;23849:34;;;;23899:18;;23892:34;27372:65:108;;23803:2:156;23788:18;27372:65:108;23615:317:156;26571:313:108;26669:20;26692:21;;;:10;:21;;;;;;;;;26724:35;;;26769:22;;;:35;;;26820:57;;23815:25:156;;;23856:18;;;23849:34;;;23899:18;;;23892:34;;;26820:57:108;;23803:2:156;23788:18;26820:57:108;;;;;;;26659:225;26571:313;;;:::o;130:127:132:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;130:127;-1:-1:-1;;;130:127:132:o;26890:214:108:-;26975:32;26997:9;26975:21;:32::i;:::-;27018:21;;;;:10;:21;;;;;27042:5;;27018:29;27042:5;27018:21;28582:5:156;28569:19;28563:4;28556:33;28643:2;28636:5;28632:14;28619:28;28615:1;28609:4;28605:12;28598:50;28702:2;28695:5;28691:14;28678:28;28674:1;28668:4;28664:12;28657:50;;;28411:302;27018:29:108;-1:-1:-1;;27062:35:108;;;24694:25:156;;;24755:20;;24750:2;24735:18;;;24728:48;;;;24825:15;;24812:29;24792:18;;;24785:57;24891:15;;;24878:29;24873:2;24858:18;;24851:57;27062:35:108;;24681:3:156;24666:19;27062:35:108;24459:455:156;52977:330:133;53052:6;53065:14;53082:13;53091:3;53082:8;:13::i;:::-;53065:30;;53101:14;53118:13;53127:3;53118:8;:13::i;:::-;53101:30;;53138:14;53155:18;53159:6;53166;53155:3;:18::i;:::-;53138:35;;53179:11;53193;53197:6;53193:3;:11::i;:::-;53179:25;;53210:24;53237:29;53241:3;53246:19;53255:9;53246:8;:19::i;:::-;53237:3;:29::i;:::-;53210:56;;53279:23;53285:16;53279:5;:23::i;:::-;53272:30;52977:330;-1:-1:-1;;;;;;;;;52977:330:133:o;3083:447::-;3136:7;3173:6;3169:351;;-1:-1:-1;3197:1:133;;3083:447;-1:-1:-1;3083:447:133:o;3169:351::-;3239:1;3222:14;3265:27;3239:1;3265:18;:27::i;:::-;3251:41;;3312:3;3306;:9;3302:85;;;3334:3;3328;:9;3317:20;;;;;3302:85;;;3362:3;3356;:9;3352:35;;;3384:3;3378;:9;3367:20;;;;;3352:35;3449:5;:11;3464:3;3449:18;-1:-1:-1;;;;;3407:39:133;;;;:60;3485:26;;;;-1:-1:-1;;3083:447:133:o;3169:351::-;3083:447;;;:::o;25240:2794::-;25299:7;25373:6;25352:18;;;;:27;;;25407:18;;;;:27;;;25447:19;;25443:2581;;;25482:9;25495:6;25482:19;25478:99;;;-1:-1:-1;;;;;;25503:10:133;;-1:-1:-1;25503:10:133;25478:99;-1:-1:-1;;;;;;25539:38:133;;25535:42;;25528:49;;25443:2581;25596:9;25609:6;25596:19;25592:2432;;;-1:-1:-1;;;25631:38:133;;:43;25627:141;;-1:-1:-1;;;;;;25676:10:133;;-1:-1:-1;25676:10:133;25627:141;-1:-1:-1;;;25725:5:133;;;-1:-1:-1;;;25724:44:133;25701:67;;25592:2432;-1:-1:-1;;;;;;;25787:38:133;;25783:2241;;-1:-1:-1;;;;;;;25846:38:133;;25842:145;;-1:-1:-1;;;;;;25891:10:133;;-1:-1:-1;25891:10:133;25842:145;-1:-1:-1;;;25944:5:133;;;-1:-1:-1;;;25943:44:133;-1:-1:-1;;;25923:64:133;25916:71;;25783:2241;26033:11;;;;-1:-1:-1;;;;;26033:44:133;26091:14;26087:93;;26119:1;26107:13;;26087:93;;;-1:-1:-1;;;26135:45:133;26087:93;26212:11;;;;-1:-1:-1;;;;;26212:44:133;26270:14;26266:344;;26302:15;;26298:199;;26333:10;26352:31;26372:10;26352:18;:31::i;:::-;26445:1;;-1:-1:-1;26346:3:133;:37;26460:24;;;-1:-1:-1;;26460:24:133;;26398:20;;;;;-1:-1:-1;26298:199:133;26266:344;;;-1:-1:-1;;;26547:44:133;26596:3;26546:53;26266:344;26646:10;26633;:23;;;;;:::i;:::-;;;-1:-1:-1;26670:15:133;26666:132;;26705:5;;;-1:-1:-1;;;26704:44:133;:94;;573:34;26704:94;;;-1:-1:-1;;;26704:94:133;26697:101;;;;;;;;26666:132;-1:-1:-1;;;26817:44:133;;;26809:53;;;;:::i;:::-;26873:11;-1:-1:-1;;;26897:45:133;;;:213;;-1:-1:-1;;;26989:45:133;;;:121;;-1:-1:-1;;;27053:45:133;;;:57;;27107:3;26989:121;;27053:57;27101:3;26989:121;;;27037:3;26989:121;26897:213;;;;;26945:31;26965:10;26945:18;:31::i;:::-;26873:237;;27143:9;27155:5;27143:17;27137:3;27125:9;:15;:35;27121:759;;;27198:6;27186:18;;27229:1;27216:14;;27121:759;;;27278:9;27263:3;27251:9;:15;27269:5;27251:23;:36;27247:633;;;27326:1;27314:13;;27352:1;27339:14;;27247:633;;;27401:9;27386:3;27374:9;:15;27392:5;27374:23;:36;27370:510;;;27461:9;27441;27453:5;27441:17;:29;27437:199;;;27519:9;27499;27511:5;27499:17;:29;27484:44;;;;;27437:199;;;27569:9;27549;27561:5;27549:17;:29;27545:91;;;27631:5;27619:9;27607;:21;:29;27592:44;;;;;27545:91;27661:1;27649:13;;27370:510;;;27711:3;27705;:9;27701:51;;;27749:3;27743;:9;27728:24;;;;;27701:51;27834:15;;;:35;;;27852:5;27834:35;;-1:-1:-1;;;;;27765:44:133;;;;;27370:510;-1:-1:-1;27925:5:133;;;27924:44;27915:54;;;-1:-1:-1;;;27915:54:133;27997:3;27984:16;;;;27915:85;;;;:98;27897:118;;;;-1:-1:-1;27890:125:133;;-1:-1:-1;;27890:125:133;51737:150;51785:7;51825:51;51832:43;51837:1;-1:-1:-1;;;51832:3:133;:43::i;:::-;51825:5;:51::i;21498:2485::-;21557:7;21631:6;21610:18;;;;:27;;;21665:18;;;;:27;;;21705:19;;21701:2272;;;21740:9;21753:6;21740:19;21736:368;;;-1:-1:-1;;;;;;21777:6:133;;;;;;;21773:166;;;-1:-1:-1;;;;;;21796:38:133;;21792:42;;21785:49;;21773:166;21855:5;;;-1:-1:-1;;;;;;21855:43:133;-1:-1:-1;;;21855:43:133;21851:88;;;-1:-1:-1;;;21907:5:133;;;21900:12;;21851:88;-1:-1:-1;;;;;;21929:10:133;;-1:-1:-1;21929:10:133;21736:368;-1:-1:-1;;;;;;;21972:38:133;;21968:125;;-1:-1:-1;;;;;;22017:10:133;;-1:-1:-1;22017:10:133;21701:2272;22122:9;22135:6;22122:19;22118:1855;;;-1:-1:-1;;;;;;;22159:38:133;;22155:125;;-1:-1:-1;;;;;;22204:10:133;;-1:-1:-1;22204:10:133;22155:125;-1:-1:-1;;;;;;22242:38:133;;22238:42;;22231:49;;22118:1855;22326:11;;;;-1:-1:-1;;;;;22326:44:133;22384:14;22380:93;;22412:1;22400:13;;22380:93;;;-1:-1:-1;;;22428:45:133;22380:93;22505:11;;;;-1:-1:-1;;;;;22505:44:133;22563:14;22559:93;;22591:1;22579:13;;22559:93;;;-1:-1:-1;;;22607:45:133;22559:93;22663:24;;;;22701:15;22697:132;;22736:5;;;-1:-1:-1;;;22735:44:133;:94;;573:34;22735:94;;22697:132;22840:22;;;;22873:11;-1:-1:-1;;;22897:73:133;;;:215;;-1:-1:-1;;;22989:73:133;;;:123;;23081:31;23101:10;23081:18;:31::i;:::-;22897:215;;22989:123;23065:3;22897:215;;;22973:3;22897:215;22873:239;;23145:5;23139:3;23127:9;:15;:23;23123:706;;;23189:1;23177:13;;23215:1;23202:14;;23123:706;;;23255:5;23249:3;23237:9;:15;:23;23233:596;;;23303:5;23291:9;:17;23287:151;;;23345:9;23337:5;:17;23322:32;;;;;23287:151;;;23387:5;23375:9;:17;23371:67;;;23433:5;23421:9;:17;23406:32;;;;;23371:67;23462:1;23450:13;;23233:596;;;23502:5;23496:3;23484:9;:15;:23;23480:349;;;23533:6;23521:18;;23564:1;23551:14;;23480:349;;;23604:3;23598;:9;23594:119;;;23642:3;23636;:9;23621:24;;;;;23594:119;;;23672:3;23666;:9;23662:51;;;23710:3;23704;:9;23689:24;;;;;23662:51;23795:15;;;-1:-1:-1;;23795:23:133;;-1:-1:-1;;;;;23726:44:133;;;;;23480:349;-1:-1:-1;;23874:5:133;;;23873:44;23864:54;;;-1:-1:-1;;;23864:54:133;23946:3;23933:16;;;;23864:85;;;;:98;23846:118;;;;-1:-1:-1;23839:125:133;;-1:-1:-1;23839:125:133;2025:873;2075:6;2147;2126:18;;;;:27;2183:5;2171:17;;;2162:27;;;;;;2224:5;2213:8;:16;2209:30;;;-1:-1:-1;2238:1:133;;2025:873;-1:-1:-1;;2025:873:133:o;2209:30::-;2287:11;;;;-1:-1:-1;;;;;2278:54:133;-1:-1:-1;;;2278:96:133;2398:5;2387:16;;2383:111;;;2416:5;:16;;;2405:27;2383:111;;;2460:5;2449:8;:16;2445:49;;;-1:-1:-1;;2478:16:133;;2467:27;2445:49;-1:-1:-1;;;2507:11:133;;;;:49;2503:385;;-1:-1:-1;;;2589:76:133;;;2580:86;;;;;;2683:16;;;2025:873;-1:-1:-1;;;2025:873:133:o;2503:385::-;-1:-1:-1;;;;;2770:76:133;;;2761:86;;;;;52118:629;52180:7;52226:1;52222;:5;52213:15;;;;;;52237:14;-1:-1:-1;;;52268:40:133;;52264:75;;52318:3;52312:9;;;;52323:13;52264:75;-1:-1:-1;;;52350:24:133;;52346:57;;52384:2;52378:8;;;;52388:12;52346:57;52419:11;52414:1;:16;52410:49;;52440:2;52434:8;;;;52444:12;52410:49;52475:7;52470:1;:12;52466:45;;52492:2;52486:8;;;;52496:12;52466:45;52527:5;52522:1;:10;52518:41;;52542:1;52536:7;;;;52545:11;52518:41;52575:4;52570:1;:9;52566:40;;52589:1;52583:7;;;;52592:11;52566:40;52622:3;52617:1;:8;52613:39;;52635:1;52629:7;;;;52638:11;52613:39;52668:3;52663:1;:8;52659:25;;52683:1;52673:11;52730:6;52118:629;-1:-1:-1;;52118:629:133:o;33391:18224::-;33441:7;-1:-1:-1;;;33491:11:133;;;;:48;;;;33588:6;33567:18;;;;:27;;;-1:-1:-1;;;;;33623:44:133;;33680:19;;:38;;;;-1:-1:-1;33703:15:133;;;33680:38;33676:17929;;;-1:-1:-1;;;;;;;;;;33391:18224:133:o;33676:17929::-;33759:5;33747:9;:17;33743:17862;;;33781:9;:45;;-1:-1:-1;;;33781:45:133;;;573:34;33774:52;33391:18224;-1:-1:-1;;;;;33391:18224:133:o;33743:17862::-;33855:5;33843:9;:17;33839:17766;;;-1:-1:-1;;;;;;;;;;33391:18224:133:o;33839:17766::-;33938:14;33934:93;;33966:1;33954:13;;33934:93;;;-1:-1:-1;;;33982:45:133;33934:93;34054:5;34042:9;:17;34038:145;;;-1:-1:-1;;34086:17:133;;34071:32;34038:145;;;34134:5;34122:9;:17;34118:65;;;34166:5;:17;;;34151:32;34118:65;34198:9;:64;;;;-1:-1:-1;;;;34211:51:133;;34198:64;34194:100;;;-1:-1:-1;573:34:133;;33391:18224;-1:-1:-1;;;;33391:18224:133:o;34194:100::-;34310:9;34309:10;:65;;;;;34336:38;34323:10;:51;34309:65;34305:105;;;-1:-1:-1;;;;;;;;;;33391:18224:133:o;34305:105::-;-1:-1:-1;34473:48:133;;;-1:-1:-1;34446:17:133;34535:9;:28;;;;-1:-1:-1;34548:15:133;;;34535:28;34531:112;;;34590:11;;;34631:1;34613:19;34531:112;-1:-1:-1;;;34727:47:133;;;:51;34723:135;;34816:35;34798:53;34855:3;34798:60;34723:135;-1:-1:-1;;;34872:47:133;;:51;34868:135;;34961:35;34943:53;35000:3;34943:60;34868:135;-1:-1:-1;;;35017:47:133;;:51;35013:135;;35106:35;35088:53;35145:3;35088:60;35013:135;-1:-1:-1;;;35162:47:133;;:51;35158:135;;35251:35;35233:53;35290:3;35233:60;35158:135;-1:-1:-1;;;35307:46:133;;:50;35303:134;;35395:35;35377:53;35434:3;35377:60;35303:134;-1:-1:-1;;;35451:46:133;;:50;35447:134;;35539:35;35521:53;35578:3;35521:60;35447:134;-1:-1:-1;;;35595:46:133;;:50;35591:134;;35683:35;35665:53;35722:3;35665:60;35591:134;-1:-1:-1;;;35739:46:133;;:50;35735:134;;35827:35;35809:53;35866:3;35809:60;35735:134;-1:-1:-1;;;35883:45:133;;:49;35879:133;;35970:35;35952:53;36009:3;35952:60;35879:133;-1:-1:-1;;;36026:45:133;;:49;36022:133;;36113:35;36095:53;36152:3;36095:60;36022:133;-1:-1:-1;;;36169:45:133;;:49;36165:133;;36256:35;36238:53;36295:3;36238:60;36165:133;-1:-1:-1;;;36312:45:133;;:49;36308:133;;36399:35;36381:53;36438:3;36381:60;36308:133;-1:-1:-1;;;36455:44:133;;:48;36451:132;;36541:35;36523:53;36580:3;36523:60;36451:132;-1:-1:-1;;;36597:44:133;;:48;36593:132;;36683:35;36665:53;36722:3;36665:60;36593:132;-1:-1:-1;;;36739:44:133;;:48;36735:132;;36825:35;36807:53;36864:3;36807:60;36735:132;-1:-1:-1;;;36881:44:133;;:48;36877:132;;36967:35;36949:53;37006:3;36949:60;36877:132;-1:-1:-1;;;37023:43:133;;:47;37019:131;;37108:35;37090:53;37147:3;37090:60;37019:131;-1:-1:-1;;;37164:43:133;;:47;37160:131;;37249:35;37231:53;37288:3;37231:60;37160:131;-1:-1:-1;;;37305:43:133;;:47;37301:131;;37390:35;37372:53;37429:3;37372:60;37301:131;-1:-1:-1;;;37446:43:133;;:47;37442:131;;37531:35;37513:53;37570:3;37513:60;37442:131;-1:-1:-1;;;37587:42:133;;:46;37583:130;;37671:35;37653:53;37710:3;37653:60;37583:130;-1:-1:-1;;;37727:42:133;;:46;37723:130;;37811:35;37793:53;37850:3;37793:60;37723:130;-1:-1:-1;;;37867:42:133;;:46;37863:130;;37951:35;37933:53;37990:3;37933:60;37863:130;-1:-1:-1;;;38007:42:133;;:46;38003:130;;38091:35;38073:53;38130:3;38073:60;38003:130;-1:-1:-1;;;38147:41:133;;:45;38143:129;;38230:35;38212:53;38269:3;38212:60;38143:129;-1:-1:-1;;;38286:41:133;;:45;38282:129;;38369:35;38351:53;38408:3;38351:60;38282:129;-1:-1:-1;;;38425:41:133;;:45;38421:129;;38508:35;38490:53;38547:3;38490:60;38421:129;-1:-1:-1;;;38564:41:133;;:45;38560:129;;38647:35;38629:53;38686:3;38629:60;38560:129;-1:-1:-1;;;38703:40:133;;:44;38699:128;;38785:35;38767:53;38824:3;38767:60;38699:128;-1:-1:-1;;;38841:40:133;;:44;38837:128;;38923:35;38905:53;38962:3;38905:60;38837:128;-1:-1:-1;;;38979:40:133;;:44;38975:128;;39061:35;39043:53;39100:3;39043:60;38975:128;-1:-1:-1;;;39117:40:133;;:44;39113:128;;39199:35;39181:53;39238:3;39181:60;39113:128;-1:-1:-1;;;39255:39:133;;:43;39251:127;;39336:35;39318:53;39375:3;39318:60;39251:127;-1:-1:-1;;;39392:39:133;;:43;39388:127;;39473:35;39455:53;39512:3;39455:60;39388:127;-1:-1:-1;;;39529:39:133;;:43;39525:127;;39610:35;39592:53;39649:3;39592:60;39525:127;-1:-1:-1;;;39666:39:133;;:43;39662:127;;39747:35;39729:53;39786:3;39729:60;39662:127;-1:-1:-1;;;39803:38:133;;:42;39799:126;;39883:35;39865:53;39922:3;39865:60;39799:126;-1:-1:-1;;;39939:38:133;;:42;39935:126;;40019:35;40001:53;40058:3;40001:60;39935:126;-1:-1:-1;;;40075:38:133;;:42;40071:126;;40155:35;40137:53;40194:3;40137:60;40071:126;-1:-1:-1;;;40211:38:133;;:42;40207:126;;40291:35;40273:53;40330:3;40273:60;40207:126;-1:-1:-1;;;40347:37:133;;:41;40343:125;;40426:35;40408:53;40465:3;40408:60;40343:125;-1:-1:-1;;;40482:37:133;;:41;40478:125;;40561:35;40543:53;40600:3;40543:60;40478:125;-1:-1:-1;;;40617:37:133;;:41;40613:125;;40696:35;40678:53;40735:3;40678:60;40613:125;-1:-1:-1;;;40752:37:133;;:41;40748:125;;40831:35;40813:53;40870:3;40813:60;40748:125;-1:-1:-1;;;40887:36:133;;:40;40883:124;;40965:35;40947:53;41004:3;40947:60;40883:124;-1:-1:-1;;;41021:36:133;;:40;41017:124;;41099:35;41081:53;41138:3;41081:60;41017:124;-1:-1:-1;;;41155:36:133;;:40;41151:124;;41233:35;41215:53;41272:3;41215:60;41151:124;-1:-1:-1;;;41289:36:133;;:40;41285:124;;41367:35;41349:53;41406:3;41349:60;41285:124;41436:22;41423:35;;:39;41419:123;;41500:35;41482:53;41539:3;41482:60;41419:123;41569:22;41556:35;;:39;41552:123;;41633:35;41615:53;41672:3;41615:60;41552:123;41702:22;41689:35;;:39;41685:123;;41766:35;41748:53;41805:3;41748:60;41685:123;41835:22;41822:35;;:39;41818:123;;41899:35;41881:53;41938:3;41881:60;41818:123;41968:21;41955:34;;:38;41951:122;;42031:35;42013:53;42070:3;42013:60;41951:122;42100:21;42087:34;;:38;42083:122;;42163:35;42145:53;42202:3;42145:60;42083:122;42232:21;42219:34;;:38;42215:122;;42295:35;42277:53;42334:3;42277:60;42215:122;42364:21;42351:34;;:38;42347:122;;42427:35;42409:53;42466:3;42409:60;42347:122;42496:20;42483:33;;:37;42479:121;;42558:35;42540:53;42597:3;42540:60;42479:121;42627:20;42614:33;;:37;42610:121;;42689:35;42671:53;42728:3;42671:60;42610:121;42758:20;42745:33;;:37;42741:121;;42820:35;42802:53;42859:3;42802:60;42741:121;42889:20;42876:33;;:37;42872:121;;42951:35;42933:53;42990:3;42933:60;42872:121;43020:19;43007:32;;:36;43003:120;;43081:35;43063:53;43120:3;43063:60;43003:120;43150:19;43137:32;;:36;43133:120;;43211:35;43193:53;43250:3;43193:60;43133:120;43280:19;43267:32;;:36;43263:120;;43341:35;43323:53;43380:3;43323:60;43263:120;-1:-1:-1;;;43397:32:133;;:36;43393:120;;43471:35;43453:53;43510:3;43453:60;43393:120;43540:18;43527:31;;:35;43523:119;;43600:35;43582:53;43639:3;43582:60;43523:119;43669:18;43656:31;;:35;43652:119;;43729:35;43711:53;43768:3;43711:60;43652:119;43798:18;43785:31;;:35;43781:119;;43858:35;43840:53;43897:3;43840:60;43781:119;43927:18;43914:31;;:35;43910:119;;43987:35;43969:53;44026:3;43969:60;43910:119;44056:17;44043:30;;:34;44039:118;;44115:35;44097:53;44154:3;44097:60;44039:118;44184:17;44171:30;;:34;44167:118;;44243:35;44225:53;44282:3;44225:60;44167:118;44312:17;44299:30;;:34;44295:118;;44371:35;44353:53;44410:3;44353:60;44295:118;44440:17;44427:30;;:34;44423:118;;44499:35;44481:53;44538:3;44481:60;44423:118;44568:16;44555:29;;:33;44551:117;;44626:35;44608:53;44665:3;44608:60;44551:117;44695:16;44682:29;;:33;44678:117;;44753:35;44735:53;44792:3;44735:60;44678:117;44822:16;44809:29;;:33;44805:117;;44880:35;44862:53;44919:3;44862:60;44805:117;44949:16;44936:29;;:33;44932:117;;45007:35;44989:53;45046:3;44989:60;44932:117;45076:15;45063:28;;:32;45059:116;;45133:35;45115:53;45172:3;45115:60;45059:116;45202:15;45189:28;;:32;45185:116;;45259:35;45241:53;45298:3;45241:60;45185:116;45328:15;45315:28;;:32;45311:116;;45385:35;45367:53;45424:3;45367:60;45311:116;45454:15;45441:28;;:32;45437:116;;45511:35;45493:53;45550:3;45493:60;45437:116;45580:14;45567:27;;:31;45563:115;;45636:35;45618:53;45675:3;45618:60;45563:115;45705:14;45692:27;;:31;45688:115;;45761:35;45743:53;45800:3;45743:60;45688:115;45830:14;45817:27;;:31;45813:115;;45886:35;45868:53;45925:3;45868:60;45813:115;45955:14;45942:27;;:31;45938:115;;46011:35;45993:53;46050:3;45993:60;45938:115;46080:13;46067:26;;:30;46063:114;;46135:35;46117:53;46174:3;46117:60;46063:114;46204:13;46191:26;;:30;46187:114;;46259:35;46241:53;46298:3;46241:60;46187:114;46328:13;46315:26;;:30;46311:114;;46383:35;46365:53;46422:3;46365:60;46311:114;46452:13;46439:26;;:30;46435:114;;46507:35;46489:53;46546:3;46489:60;46435:114;46576:12;46563:25;;:29;46559:113;;46630:35;46612:53;46669:3;46612:60;46559:113;46699:12;46686:25;;:29;46682:113;;46753:35;46735:53;46792:3;46735:60;46682:113;46822:12;46809:25;;:29;46805:113;;46876:35;46858:53;46915:3;46858:60;46805:113;46945:12;46932:25;;:29;46928:113;;46999:35;46981:53;47038:3;46981:60;46928:113;47068:11;47055:24;;:28;47051:112;;47121:35;47103:53;47160:3;47103:60;47051:112;47190:11;47177:24;;:28;47173:112;;47243:35;47225:53;47282:3;47225:60;47173:112;47312:11;47299:24;;:28;47295:112;;47365:35;47347:53;47404:3;47347:60;47295:112;47434:11;47421:24;;:28;47417:112;;47487:35;47469:53;47526:3;47469:60;47417:112;47556:10;47543:23;;:27;47539:111;;47608:35;47590:53;47647:3;47590:60;47539:111;47677:10;47664:23;;:27;47660:111;;47729:35;47711:53;47768:3;47711:60;47660:111;47798:10;47785:23;;:27;47781:111;;47850:35;47832:53;47889:3;47832:60;47781:111;47919:10;47906:23;;:27;47902:111;;47971:35;47953:53;48010:3;47953:60;47902:111;48040:9;48027:22;;:26;48023:110;;48091:35;48073:53;48130:3;48073:60;48023:110;48160:9;48147:22;;:26;48143:110;;48211:35;48193:53;48250:3;48193:60;48143:110;48280:9;48267:22;;:26;48263:110;;48331:35;48313:53;48370:3;48313:60;48263:110;48400:9;48387:22;;:26;48383:110;;48451:35;48433:53;48490:3;48433:60;48383:110;48520:8;48507:21;;:25;48503:109;;48570:35;48552:53;48609:3;48552:60;48503:109;48639:8;48626:21;;:25;48622:109;;48689:35;48671:53;48728:3;48671:60;48622:109;48758:8;48745:21;;:25;48741:109;;48808:35;48790:53;48847:3;48790:60;48741:109;48877:8;48864:21;;:25;48860:109;;48927:35;48909:53;48966:3;48909:60;48860:109;48996:7;48983:20;;:24;48979:108;;49045:35;49027:53;49084:3;49027:60;48979:108;49114:7;49101:20;;:24;49097:108;;49163:35;49145:53;49202:3;49145:60;49097:108;49232:7;49219:20;;:24;49215:108;;49281:35;49263:53;49320:3;49263:60;49215:108;49350:7;49337:20;;:24;49333:108;;49399:35;49381:53;49438:3;49381:60;49333:108;49468:6;49455:19;;:23;49451:107;;49516:35;49498:53;49555:3;49498:60;49451:107;49585:6;49572:19;;:23;49568:107;;49633:35;49615:53;49672:3;49615:60;49568:107;49702:6;49689:19;;:23;49685:107;;49750:35;49732:53;49789:3;49732:60;49685:107;49819:6;49806:19;;:23;49802:107;;49867:35;49849:53;49906:3;49849:60;49802:107;49936:5;49923:18;;:22;49919:106;;49983:35;49965:53;50022:3;49965:60;49919:106;50052:5;50039:18;;:22;50035:106;;50099:35;50081:53;50138:3;50081:60;50035:106;50168:5;50155:18;;:22;50151:106;;50215:35;50197:53;50254:3;50197:60;50151:106;50284:5;50271:18;;:22;50267:106;;50331:35;50313:53;50370:3;50313:60;50267:106;50400:4;50387:17;;:21;50383:105;;50446:35;50428:53;50485:3;50428:60;50383:105;50515:4;50502:17;;:21;50498:105;;50561:35;50543:53;50600:3;50543:60;50498:105;50630:4;50617:17;;:21;50613:105;;50676:35;50658:53;50715:3;50658:60;50613:105;50745:4;50732:17;;:21;50728:105;;50791:35;50773:53;50830:3;50773:60;50728:105;50860:3;50847:16;;:20;50843:104;;50905:35;50887:53;50944:3;50887:60;50843:104;50974:3;50961:16;;:20;50957:104;;51019:35;51001:53;51058:3;51001:60;50957:104;51077:9;51072:448;;51202:6;51184:24;;;;;51137:2;51118:21;-1:-1:-1;;;;;51118:54:133;51072:448;;;51247:6;51229:14;:24;51225:295;;51368:6;:23;;;;;51304:2;51285:21;-1:-1:-1;;;;;51285:54:133;51225:295;;;51508:1;;-1:-1:-1;;51457:22:133;51438:41;51225:295;51573:3;51555:21;;;;:39;51537:59;;;33391:18224;-1:-1:-1;;;;;33391:18224:133:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:134:156;82:20;;111:31;82:20;111:31;:::i;153:367::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:55;;298:1;295;288:12;247:55;-1:-1:-1;321:20:156;;364:18;353:30;;350:50;;;396:1;393;386:12;350:50;433:4;425:6;421:17;409:29;;493:3;486:4;476:6;473:1;469:14;461:6;457:27;453:38;450:47;447:67;;;510:1;507;500:12;525:128;590:20;;619:28;590:20;619:28;:::i;658:945::-;710:5;758:6;746:9;741:3;737:19;733:32;730:52;;;778:1;775;768:12;730:52;800:17;;:::i;:::-;791:26;;840:29;859:9;840:29;:::i;:::-;833:5;826:44;930:2;919:9;915:18;902:32;897:2;890:5;886:14;879:56;995:2;984:9;980:18;967:32;962:2;955:5;951:14;944:56;1060:2;1049:9;1045:18;1032:32;1027:2;1020:5;1016:14;1009:56;1126:3;1115:9;1111:19;1098:33;1092:3;1085:5;1081:15;1074:58;1193:3;1182:9;1178:19;1165:33;1159:3;1152:5;1148:15;1141:58;1232:36;1263:3;1252:9;1248:19;1232:36;:::i;:::-;1226:3;1219:5;1215:15;1208:61;1330:3;1319:9;1315:19;1302:33;1296:3;1289:5;1285:15;1278:58;1355:3;1418:2;1407:9;1403:18;1390:32;1385:2;1378:5;1374:14;1367:56;;1442:3;1505:2;1494:9;1490:18;1477:32;1472:2;1465:5;1461:14;1454:56;;1529:3;1592:2;1581:9;1577:18;1564:32;1559:2;1552:5;1548:14;1541:56;;658:945;;;;:::o;1608:247::-;1667:6;1720:2;1708:9;1699:7;1695:23;1691:32;1688:52;;;1736:1;1733;1726:12;1688:52;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;1860:251::-;1930:6;1983:2;1971:9;1962:7;1958:23;1954:32;1951:52;;;1999:1;1996;1989:12;1951:52;2031:9;2025:16;2050:31;2075:5;2050:31;:::i;2116:388::-;2184:6;2192;2245:2;2233:9;2224:7;2220:23;2216:32;2213:52;;;2261:1;2258;2251:12;2213:52;2300:9;2287:23;2319:31;2344:5;2319:31;:::i;:::-;2369:5;-1:-1:-1;2426:2:156;2411:18;;2398:32;2439:33;2398:32;2439:33;:::i;:::-;2491:7;2481:17;;;2116:388;;;;;:::o;2509:383::-;2586:6;2594;2602;2655:2;2643:9;2634:7;2630:23;2626:32;2623:52;;;2671:1;2668;2661:12;2623:52;2710:9;2697:23;2729:31;2754:5;2729:31;:::i;:::-;2779:5;2831:2;2816:18;;2803:32;;-1:-1:-1;2882:2:156;2867:18;;;2854:32;;2509:383;-1:-1:-1;;;2509:383:156:o;2897:519::-;2980:6;2988;2996;3004;3057:3;3045:9;3036:7;3032:23;3028:33;3025:53;;;3074:1;3071;3064:12;3025:53;3113:9;3100:23;3132:31;3157:5;3132:31;:::i;:::-;3182:5;-1:-1:-1;3234:2:156;3219:18;;3206:32;;-1:-1:-1;3285:2:156;3270:18;;3257:32;;-1:-1:-1;3341:2:156;3326:18;;3313:32;3354:30;3313:32;3354:30;:::i;:::-;2897:519;;;;-1:-1:-1;2897:519:156;;-1:-1:-1;;2897:519:156:o;3421:657::-;3522:6;3530;3538;3546;3554;3562;3615:3;3603:9;3594:7;3590:23;3586:33;3583:53;;;3632:1;3629;3622:12;3583:53;3671:9;3658:23;3690:31;3715:5;3690:31;:::i;:::-;3740:5;-1:-1:-1;3792:2:156;3777:18;;3764:32;;-1:-1:-1;3843:2:156;3828:18;;3815:32;;-1:-1:-1;3899:2:156;3884:18;;3871:32;3912:30;3871:32;3912:30;:::i;:::-;3421:657;;;;-1:-1:-1;3421:657:156;;4015:3;4000:19;;3987:33;;4067:3;4052:19;;;4039:33;;-1:-1:-1;3421:657:156;-1:-1:-1;;3421:657:156:o;4083:726::-;4193:6;4201;4209;4217;4225;4233;4241;4294:3;4282:9;4273:7;4269:23;4265:33;4262:53;;;4311:1;4308;4301:12;4262:53;4350:9;4337:23;4369:31;4394:5;4369:31;:::i;:::-;4419:5;-1:-1:-1;4471:2:156;4456:18;;4443:32;;-1:-1:-1;4522:2:156;4507:18;;4494:32;;-1:-1:-1;4573:2:156;4558:18;;4545:32;;-1:-1:-1;4629:3:156;4614:19;;4601:33;4643:30;4601:33;4643:30;:::i;:::-;4083:726;;;;-1:-1:-1;4083:726:156;;;;4692:7;4746:3;4731:19;;4718:33;;-1:-1:-1;4798:3:156;4783:19;;;4770:33;;4083:726;-1:-1:-1;;4083:726:156:o;4814:798::-;4907:6;4960:2;4948:9;4939:7;4935:23;4931:32;4928:52;;;4976:1;4973;4966:12;4928:52;5025:7;5018:4;5007:9;5003:20;4999:34;4989:62;;5047:1;5044;5037:12;4989:62;5080:2;5074:9;5122:2;5114:6;5110:15;5191:6;5179:10;5176:22;5155:18;5143:10;5140:34;5137:62;5134:88;;;5202:18;;:::i;:::-;5242:10;5238:2;5231:22;;5273:6;5299:9;5343:7;5338:2;5327:9;5323:18;5320:31;5317:51;;;5364:1;5361;5354:12;5317:51;5386:1;5396:185;5410:4;5407:1;5404:11;5396:185;;;5469:10;;5457:23;;5503:4;5527:12;;;;5559;;;;5430:1;5423:9;5396:185;;;-1:-1:-1;5600:6:156;;4814:798;-1:-1:-1;;;;;4814:798:156:o;5617:437::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;5820:9;5807:23;5853:18;5845:6;5842:30;5839:50;;;5885:1;5882;5875:12;5839:50;5924:70;5986:7;5977:6;5966:9;5962:22;5924:70;:::i;:::-;6013:8;;5898:96;;-1:-1:-1;5617:437:156;-1:-1:-1;;;;5617:437:156:o;6059:964::-;6212:6;6220;6228;6236;6289:2;6277:9;6268:7;6264:23;6260:32;6257:52;;;6305:1;6302;6295:12;6257:52;6345:9;6332:23;6374:18;6415:2;6407:6;6404:14;6401:34;;;6431:1;6428;6421:12;6401:34;6470:70;6532:7;6523:6;6512:9;6508:22;6470:70;:::i;:::-;6559:8;;-1:-1:-1;6444:96:156;-1:-1:-1;6647:2:156;6632:18;;6619:32;;-1:-1:-1;6663:16:156;;;6660:36;;;6692:1;6689;6682:12;6660:36;6730:8;6719:9;6715:24;6705:34;;6777:7;6770:4;6766:2;6762:13;6758:27;6748:55;;6799:1;6796;6789:12;6748:55;6839:2;6826:16;6865:2;6857:6;6854:14;6851:34;;;6881:1;6878;6871:12;6851:34;6937:7;6932:2;6924:4;6916:6;6912:17;6908:2;6904:26;6900:35;6897:48;6894:68;;;6958:1;6955;6948:12;6894:68;6059:964;;;;-1:-1:-1;;6989:2:156;6981:11;;-1:-1:-1;;;6059:964:156:o;7028:1088::-;7186:6;7194;7202;7210;7218;7226;7279:2;7267:9;7258:7;7254:23;7250:32;7247:52;;;7295:1;7292;7285:12;7247:52;7335:9;7322:23;7364:18;7405:2;7397:6;7394:14;7391:34;;;7421:1;7418;7411:12;7391:34;7460:70;7522:7;7513:6;7502:9;7498:22;7460:70;:::i;:::-;7549:8;;-1:-1:-1;7434:96:156;-1:-1:-1;7637:2:156;7622:18;;7609:32;;-1:-1:-1;7653:16:156;;;7650:36;;;7682:1;7679;7672:12;7650:36;7721:72;7785:7;7774:8;7763:9;7759:24;7721:72;:::i;:::-;7812:8;;-1:-1:-1;7695:98:156;-1:-1:-1;7900:2:156;7885:18;;7872:32;;-1:-1:-1;7916:16:156;;;7913:36;;;7945:1;7942;7935:12;7913:36;;7984:72;8048:7;8037:8;8026:9;8022:24;7984:72;:::i;:::-;7028:1088;;;;-1:-1:-1;7028:1088:156;;-1:-1:-1;7028:1088:156;;8075:8;;7028:1088;-1:-1:-1;;;7028:1088:156:o;8121:245::-;8188:6;8241:2;8229:9;8220:7;8216:23;8212:32;8209:52;;;8257:1;8254;8247:12;8209:52;8289:9;8283:16;8308:28;8330:5;8308:28;:::i;8371:183::-;8440:6;8493:2;8481:9;8472:7;8468:23;8464:32;8461:52;;;8509:1;8506;8499:12;8461:52;-1:-1:-1;8532:16:156;;8371:183;-1:-1:-1;8371:183:156:o;8559:749::-;8657:6;8710:3;8698:9;8689:7;8685:23;8681:33;8678:53;;;8727:1;8724;8717:12;8678:53;8760:2;8754:9;8802:3;8794:6;8790:16;8872:6;8860:10;8857:22;8836:18;8824:10;8821:34;8818:62;8815:88;;;8883:18;;:::i;:::-;8923:10;8919:2;8912:22;;8964:9;8958:16;8950:6;8943:32;9029:2;9018:9;9014:18;9008:25;9003:2;8995:6;8991:15;8984:50;9088:2;9077:9;9073:18;9067:25;9062:2;9054:6;9050:15;9043:50;9136:2;9125:9;9121:18;9115:25;9149:28;9171:5;9149:28;:::i;:::-;9205:2;9193:15;;9186:30;9271:3;9256:19;;;9250:26;9232:16;;;9225:52;;;;-1:-1:-1;9197:6:156;8559:749;-1:-1:-1;8559:749:156:o;9313:355::-;9402:6;9410;9463:3;9451:9;9442:7;9438:23;9434:33;9431:53;;;9480:1;9477;9470:12;9431:53;9503:43;9538:7;9527:9;9503:43;:::i;:::-;9493:53;;9596:3;9585:9;9581:19;9568:33;9610:28;9632:5;9610:28;:::i;9673:431::-;9782:6;9790;9798;9806;9859:3;9847:9;9838:7;9834:23;9830:33;9827:53;;;9876:1;9873;9866:12;9827:53;9899:43;9934:7;9923:9;9899:43;:::i;:::-;9889:53;9989:3;9974:19;;9961:33;;-1:-1:-1;10041:3:156;10026:19;;10013:33;;10093:3;10078:19;10065:33;;-1:-1:-1;9673:431:156;-1:-1:-1;;;9673:431:156:o;10109:180::-;10168:6;10221:2;10209:9;10200:7;10196:23;10192:32;10189:52;;;10237:1;10234;10227:12;10189:52;-1:-1:-1;10260:23:156;;10109:180;-1:-1:-1;10109:180:156:o;10483:841::-;10614:6;10622;10630;10638;10646;10699:2;10687:9;10678:7;10674:23;10670:32;10667:52;;;10715:1;10712;10705:12;10667:52;10751:9;10738:23;10728:33;;10812:2;10801:9;10797:18;10784:32;10835:18;10876:2;10868:6;10865:14;10862:34;;;10892:1;10889;10882:12;10862:34;10931:70;10993:7;10984:6;10973:9;10969:22;10931:70;:::i;:::-;11020:8;;-1:-1:-1;10905:96:156;-1:-1:-1;11108:2:156;11093:18;;11080:32;;-1:-1:-1;11124:16:156;;;11121:36;;;11153:1;11150;11143:12;11121:36;;11192:72;11256:7;11245:8;11234:9;11230:24;11192:72;:::i;:::-;10483:841;;;;-1:-1:-1;10483:841:156;;-1:-1:-1;11283:8:156;;11166:98;10483:841;-1:-1:-1;;;10483:841:156:o;11329:513::-;11409:6;11417;11425;11433;11486:3;11474:9;11465:7;11461:23;11457:33;11454:53;;;11503:1;11500;11493:12;11454:53;11539:9;11526:23;11516:33;;11599:2;11588:9;11584:18;11571:32;11612:28;11634:5;11612:28;:::i;:::-;11659:5;-1:-1:-1;11711:2:156;11696:18;;11683:32;;-1:-1:-1;11767:2:156;11752:18;;11739:32;11780:30;11739:32;11780:30;:::i;11847:446::-;11930:6;11938;11946;11954;12007:3;11995:9;11986:7;11982:23;11978:33;11975:53;;;12024:1;12021;12014:12;11975:53;12060:9;12047:23;12037:33;;12120:2;12109:9;12105:18;12092:32;12133:28;12155:5;12133:28;:::i;:::-;11847:446;;12180:5;;-1:-1:-1;;;;12232:2:156;12217:18;;12204:32;;12283:2;12268:18;12255:32;;11847:446::o;12298:515::-;12390:6;12398;12406;12414;12422;12475:3;12463:9;12454:7;12450:23;12446:33;12443:53;;;12492:1;12489;12482:12;12443:53;12528:9;12515:23;12505:33;;12588:2;12577:9;12573:18;12560:32;12601:28;12623:5;12601:28;:::i;:::-;12298:515;;12648:5;;-1:-1:-1;;;;12700:2:156;12685:18;;12672:32;;12751:2;12736:18;;12723:32;;12802:3;12787:19;;;12774:33;;-1:-1:-1;12298:515:156:o;12818:453::-;12912:6;12920;12928;12936;12944;12997:3;12985:9;12976:7;12972:23;12968:33;12965:53;;;13014:1;13011;13004:12;12965:53;-1:-1:-1;;13037:23:156;;;13107:2;13092:18;;13079:32;;-1:-1:-1;13158:2:156;13143:18;;13130:32;;13209:2;13194:18;;13181:32;;-1:-1:-1;13260:3:156;13245:19;13232:33;;-1:-1:-1;12818:453:156;-1:-1:-1;12818:453:156:o;13276:341::-;13375:6;13383;13427:9;13418:7;13414:23;13457:3;13453:2;13449:12;13446:32;;;13474:1;13471;13464:12;13446:32;13497:23;;;-1:-1:-1;13554:2:156;-1:-1:-1;;13536:16:156;;13532:25;13529:45;;;13570:1;13567;13560:12;13529:45;;13608:2;13597:9;13593:18;13583:28;;13276:341;;;;;:::o;13622:248::-;13690:6;13698;13751:2;13739:9;13730:7;13726:23;13722:32;13719:52;;;13767:1;13764;13757:12;13719:52;-1:-1:-1;;13790:23:156;;;13860:2;13845:18;;;13832:32;;-1:-1:-1;13622:248:156:o;13875:245::-;13954:6;13962;14015:2;14003:9;13994:7;13990:23;13986:32;13983:52;;;14031:1;14028;14021:12;13983:52;-1:-1:-1;;14054:16:156;;14110:2;14095:18;;;14089:25;14054:16;;14089:25;;-1:-1:-1;13875:245:156:o;14125:582::-;14214:6;14222;14230;14238;14246;14299:3;14287:9;14278:7;14274:23;14270:33;14267:53;;;14316:1;14313;14306:12;14267:53;14352:9;14339:23;14329:33;;14409:2;14398:9;14394:18;14381:32;14371:42;;14463:2;14452:9;14448:18;14435:32;14476:28;14498:5;14476:28;:::i;:::-;14523:5;-1:-1:-1;14575:2:156;14560:18;;14547:32;;-1:-1:-1;14631:3:156;14616:19;;14603:33;14645:30;14603:33;14645:30;:::i;:::-;14694:7;14684:17;;;14125:582;;;;;;;;:::o;14712:316::-;14789:6;14797;14805;14858:2;14846:9;14837:7;14833:23;14829:32;14826:52;;;14874:1;14871;14864:12;14826:52;-1:-1:-1;;14897:23:156;;;14967:2;14952:18;;14939:32;;-1:-1:-1;15018:2:156;15003:18;;;14990:32;;14712:316;-1:-1:-1;14712:316:156:o;15033:385::-;15119:6;15127;15135;15143;15196:3;15184:9;15175:7;15171:23;15167:33;15164:53;;;15213:1;15210;15203:12;15164:53;-1:-1:-1;;15236:23:156;;;15306:2;15291:18;;15278:32;;-1:-1:-1;15357:2:156;15342:18;;15329:32;;15408:2;15393:18;15380:32;;-1:-1:-1;15033:385:156;-1:-1:-1;15033:385:156:o;15423:354::-;15511:19;;;15493:3;-1:-1:-1;;;;;15542:31:156;;15539:51;;;15586:1;15583;15576:12;15539:51;15622:6;15619:1;15615:14;15674:8;15667:5;15660:4;15655:3;15651:14;15638:45;15751:1;15706:18;;15726:4;15702:29;15740:13;;;-1:-1:-1;15702:29:156;;15423:354;-1:-1:-1;;15423:354:156:o;16974:1345::-;17370:2;17382:21;;;17452:13;;17355:18;;;17474:22;;;17322:4;;17515:2;;17533:18;;;;17570:4;17597:15;;;17322:4;17640:191;17654:6;17651:1;17648:13;17640:191;;;17703:48;17747:3;17738:6;17732:13;15858:12;;15846:25;;15920:4;15909:16;;;15903:23;15887:14;;;15880:47;15976:4;15965:16;;;15959:23;15943:14;;15936:47;15782:207;17703:48;17771:12;;;;17806:15;;;;17676:1;17669:9;17640:191;;;-1:-1:-1;;17867:19:156;;;17847:18;;;17840:47;17937:13;;17959:21;;;18035:15;;;;17998:12;;;-1:-1:-1;18070:1:156;18080:211;18096:8;18091:3;18088:17;18080:211;;;18151:52;18197:5;18186:8;18180:15;15858:12;;15846:25;;15920:4;15909:16;;;15903:23;15887:14;;;15880:47;15976:4;15965:16;;;15959:23;15943:14;;15936:47;15782:207;18151:52;18264:17;;;;18225:14;;;;18124:1;18115:11;18080:211;;;-1:-1:-1;18308:5:156;;16974:1345;-1:-1:-1;;;;;;;;16974:1345:156:o;22757:590::-;23062:6;23051:9;23044:25;23105:2;23100;23089:9;23085:18;23078:30;23025:4;23131:73;23200:2;23189:9;23185:18;23177:6;23169;23131:73;:::i;:::-;23252:9;23244:6;23240:22;23235:2;23224:9;23220:18;23213:50;23280:61;23334:6;23326;23318;23280:61;:::i;25496:250::-;25563:2;25557:9;25605:6;25593:19;;25642:18;25627:34;;25663:22;;;25624:62;25621:88;;;25689:18;;:::i;:::-;25725:2;25718:22;25496:250;:::o;25751:265::-;25790:3;25818:9;;;-1:-1:-1;;;;;25862:27:156;;;25855:35;;25843:10;;25839:52;25836:78;;;25894:18;;:::i;:::-;-1:-1:-1;;;25941:19:156;;;25934:27;;25926:36;;25923:62;;;25965:18;;:::i;:::-;-1:-1:-1;;26001:9:156;;25751:265::o;26021:128::-;26061:3;26092:1;26088:6;26085:1;26082:13;26079:39;;;26098:18;;:::i;:::-;-1:-1:-1;26134:9:156;;26021:128::o;26154:193::-;26193:1;26219;26209:35;;26224:18;;:::i;:::-;-1:-1:-1;;26280:13:156;;-1:-1:-1;;;26260:18:156;;26256:38;26253:64;;;26297:18;;:::i;:::-;-1:-1:-1;26331:10:156;;26154:193::o;26352:120::-;26392:1;26418;26408:35;;26423:18;;:::i;:::-;-1:-1:-1;26457:9:156;;26352:120::o;26477:553::-;26516:7;-1:-1:-1;;;;;26586:9:156;;;26614;;;26658:10;;;26652:17;;26639:11;;;26635:35;26632:61;;;26673:18;;:::i;:::-;-1:-1:-1;;;26749:1:156;26742:9;;26787:11;;;26780:19;;26767:11;;;26763:37;26760:63;;;26803:18;;:::i;:::-;26849:1;26846;26842:9;26832:19;;26896:1;26892:2;26887:11;26884:1;26880:19;26875:2;26871;26867:11;26863:37;26860:63;;;26903:18;;:::i;:::-;26968:1;26964:2;26959:11;26956:1;26952:19;26947:2;26943;26939:11;26935:37;26932:63;;;26975:18;;:::i;:::-;-1:-1:-1;;;27015:9:156;;;;;26477:553;-1:-1:-1;;;26477:553:156:o;27035:168::-;27075:7;27141:1;27137;27133:6;27129:14;27126:1;27123:21;27118:1;27111:9;27104:17;27100:45;27097:71;;;27148:18;;:::i;:::-;-1:-1:-1;27188:9:156;;27035:168::o;27208:267::-;27247:4;27276:9;;;-1:-1:-1;;;27320:19:156;;27313:27;;27301:10;;27297:44;27294:70;;;27344:18;;:::i;:::-;-1:-1:-1;;;;;27391:27:156;;27384:35;;27376:44;;27373:70;;;27423:18;;:::i;:::-;-1:-1:-1;;27460:9:156;;27208:267::o;27480:125::-;27520:4;27548:1;27545;27542:8;27539:34;;;27553:18;;:::i;:::-;-1:-1:-1;27590:9:156;;27480:125::o;27610:136::-;27645:3;-1:-1:-1;;;27666:22:156;;27663:48;;;27691:18;;:::i;:::-;-1:-1:-1;27731:1:156;27727:13;;27610:136::o;27751:127::-;27812:10;27807:3;27803:20;27800:1;27793:31;27843:4;27840:1;27833:15;27867:4;27864:1;27857:15;27883:127;27944:10;27939:3;27935:20;27932:1;27925:31;27975:4;27972:1;27965:15;27999:4;27996:1;27989:15;28015:127;28076:10;28071:3;28067:20;28064:1;28057:31;28107:4;28104:1;28097:15;28131:4;28128:1;28121:15;28147:127;28208:10;28203:3;28199:20;28196:1;28189:31;28239:4;28236:1;28229:15;28263:4;28260:1;28253:15;28279:127;28340:10;28335:3;28331:20;28328:1;28321:31;28371:4;28368:1;28361:15;28395:4;28392:1;28385:15;28718:131;-1:-1:-1;;;;;28793:31:156;;28783:42;;28773:70;;28839:1;28836;28829:12;28773:70;28718:131;:::o;28854:118::-;28940:5;28933:13;28926:21;28919:5;28916:32;28906:60;;28962:1;28959;28952:12","linkReferences":{}},"methodIdentifiers":{"getAccRolloverFeesLong(uint256)":"7d827137","getAccRolloverFeesShort(uint256)":"726219f3","getAccRolloverFeesUpdateBlock(uint256)":"0e0052fc","getBlendedSkew(uint256,bool,uint256,uint256)":"6676d850","getBlendedUtilizationRatio(uint256,uint256,uint256)":"c9533ebc","getOnePercentDepthAbove(uint256)":"cfc23e9e","getOnePercentDepthBelow(uint256)":"2b180a7d","getPairInfos(uint256[])":"0ea77770","getPendingAccRolloverFees(uint256)":"ab21a05c","getPriceImpactSpread(uint256,bool,uint256,bool)":"aee94fcf","getRolloverFeePerBlockP(uint256)":"338139ad","getSkewImpactSpread(uint256,bool,uint256,bool)":"c04254ec","getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":"fe3cfd8c","getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":"6bc84d59","getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":"7d36dda8","getTradePriceImpact(uint256,uint256,bool,uint256,bool)":"80242e51","getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":"05098272","getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":"fdd3265f","getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256)":"68286d36","getTradeValuePure(uint256,int256,uint256,uint256,uint256)":"75923b9d","initialize(address,address)":"485cc955","keeper()":"aced1661","liqThreshold()":"ae2293d7","longSkewConfig(uint256,uint256)":"6a3ca5fd","lossProtectionNumTiers(uint256)":"1f4934a1","lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),bool)":"7390b236","manager()":"481c6a75","pairParams(uint256)":"42dee1ad","pairRolloverFees(uint256)":"bf1db1f6","pairsStorage()":"35b03c17","resetTradeInitialAccess(address,uint256,uint256)":"90999397","setKeeper(address)":"748747e6","setLossProtectionConfig(uint256,uint256[],uint256[])":"cf2befd2","setManager(address)":"d0ebdbe7","setOnePercentDepth(uint256,uint256,uint256)":"f6960654","setOnePercentDepthArray(uint256[],uint256[],uint256[])":"351533e7","setPairParams(uint256,(uint256,uint256,uint256))":"eb95e10c","setPairParamsArray(uint256[],(uint256,uint256,uint256)[])":"867a60c2","setRolloverFeePerBlockP(uint256,uint256)":"b74243ba","shortSkewConfig(uint256,uint256)":"183566d4","storageT()":"16fff074","storeTradeInitialAccFees(address,uint256,uint256,bool)":"0e6bc39a","tradeInitialAccFees(address,uint256,uint256)":"5ed5804e","udpateLiquidationThreshold(uint256)":"c21fbef8","updatePairStorage(address)":"a8feac6e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueLong\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueShort\",\"type\":\"uint256\"}],\"name\":\"AccRolloverFeesStored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierCoeffMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"CoeffUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplierDenom\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"DenomUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"name\":\"FeesCharged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"}],\"name\":\"KeeperUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"LiqThresholdUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"longSkewConfig\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"shortSkewConfig\",\"type\":\"uint256[]\"}],\"name\":\"LossProtectionConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"ManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MaxNegativePnlOnOpenPUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minMultiplierRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMultiplierRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"MultiplierUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueAbove\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueBelow\",\"type\":\"uint256\"}],\"name\":\"OnePercentDepthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IPairInfos.PairParams\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"PairParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPairStorage\",\"type\":\"address\"}],\"name\":\"PairStorageUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"RolloverFeePerBlockPUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rollover\",\"type\":\"uint256\"}],\"name\":\"TradeInitialAccFeesStored\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getAccRolloverFeesUpdateBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_longOI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_shortOI\",\"type\":\"uint256\"}],\"name\":\"getBlendedSkew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_longOI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_shortOI\",\"type\":\"uint256\"}],\"name\":\"getBlendedUtilizationRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getOnePercentDepthAbove\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getOnePercentDepthBelow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"getPairInfos\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"accPerOiLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accPerOiShort\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairRolloverFees[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getPendingAccRolloverFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valueLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueShort\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isBuy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_leveragePosition\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"getPriceImpactSpread\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"spread\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"getRolloverFeePerBlockP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isBuy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_leveragePosition\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"getSkewImpactSpread\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"spread\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTradeInitialAccRolloverFeesPerCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeLiquidationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFee\",\"type\":\"uint256\"}],\"name\":\"getTradeLiquidationPricePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"tradeOpenInterest\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"getTradePriceImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"priceAfterImpact\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeRolloverFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"accRolloverFeesPerOi\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAccRolloverFeesPerOi\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"}],\"name\":\"getTradeRolloverFeePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"}],\"name\":\"getTradeValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"pnl\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closingFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lossProtection\",\"type\":\"uint256\"}],\"name\":\"getTradeValuePure\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"keeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"longSkewConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lossProtectionNumTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"_trade\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"lossProtectionTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairRolloverFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"accPerOiLong\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accPerOiShort\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsStorage\",\"outputs\":[{\"internalType\":\"contract IPairStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"resetTradeInitialAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keeper\",\"type\":\"address\"}],\"name\":\"setKeeper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_longSkewConfig\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_shortSkewConfig\",\"type\":\"uint256[]\"}],\"name\":\"setLossProtectionConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valueBelow\",\"type\":\"uint256\"}],\"name\":\"setOnePercentDepth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"valuesAbove\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"valuesBelow\",\"type\":\"uint256[]\"}],\"name\":\"setOnePercentDepthArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"setPairParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"onePercentDepthAbove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"onePercentDepthBelow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rolloverFeePerBlockP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairInfos.PairParams[]\",\"name\":\"values\",\"type\":\"tuple[]\"}],\"name\":\"setPairParamsArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setRolloverFeePerBlockP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"shortSkewConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"long\",\"type\":\"bool\"}],\"name\":\"storeTradeInitialAccFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tradeInitialAccFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rollover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"openedAfterUpdate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newThreshold\",\"type\":\"uint256\"}],\"name\":\"udpateLiquidationThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newPairStorage\",\"type\":\"address\"}],\"name\":\"updatePairStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getAccRolloverFeesLong(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The accumulated rollover fees for long positions\"}},\"getAccRolloverFeesShort(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The accumulated rollover fees for short positions\"}},\"getAccRolloverFeesUpdateBlock(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The last block number where the accumulated rollover fees were updated\"}},\"getBlendedSkew(uint256,bool,uint256,uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"Utlization Ratio in 1e10 precision\"}},\"getBlendedUtilizationRatio(uint256,uint256,uint256)\":{\"params\":{\"_longOI\":\"Long Open Interest\",\"_pairIndex\":\"The index of the trading pair\",\"_shortOI\":\"Short Open Interest\"},\"returns\":{\"_0\":\"Utlization Ratio in 1e10 precision\"}},\"getOnePercentDepthAbove(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The one percent depth above the current price\"}},\"getOnePercentDepthBelow(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The one percent depth below the current price\"}},\"getPairInfos(uint256[])\":{\"params\":{\"indices\":\"An array of indices for which to fetch the pair information\"},\"returns\":{\"_0\":\"PairParams[] and PairRolloverFees[] arrays containing trading pair parameters and rollover fees\"}},\"getPendingAccRolloverFees(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"valueLong\":\"The pending accumulated rollover fees for long positions\",\"valueShort\":\"The pending accumulated rollover fees for short positions\"}},\"getRolloverFeePerBlockP(uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\"},\"returns\":{\"_0\":\"The rollover fee per block\"}},\"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)\":{\"params\":{\"index\":\"The index of the trade\",\"pairIndex\":\"The index of the trading pair\",\"trader\":\"Address of the trader\"},\"returns\":{\"_0\":\"The initial accumulated rollover fees for the trade\"}},\"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"params\":{\"collateral\":\"Amount of collateral.\",\"index\":\"Unique index for trade.\",\"leverage\":\"Leverage used in the trade.\",\"long\":\"True if it's a long position, false otherwise.\",\"openPrice\":\"Opening price of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"},\"returns\":{\"_0\":\"Calculated liquidation price.\"}},\"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)\":{\"params\":{\"collateral\":\"The collateral for the trade\",\"leverage\":\"The leverage for the trade\",\"long\":\"Indicates if the position is long\",\"openPrice\":\"The opening price of the trade\",\"rolloverFee\":\"The rollover fee for the trade\"},\"returns\":{\"_0\":\"The liquidation price\"}},\"getTradePriceImpact(uint256,uint256,bool,uint256,bool)\":{\"params\":{\"long\":\"True if it's a long position, false otherwise.\",\"openPrice\":\"Opening price of the trade.\",\"pairIndex\":\"Index of the trading pair.\",\"tradeOpenInterest\":\"Open interest of the trade.\"},\"returns\":{\"priceAfterImpact\":\"Price after taking impact into account.\"}},\"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)\":{\"params\":{\"collateral\":\"The collateral for the trade\",\"index\":\"The index of the trade\",\"leverage\":\"The leverage for the trade\",\"long\":\"Indicates if the position is long\",\"pairIndex\":\"The index of the trading pair\",\"trader\":\"Address of the trader\"},\"returns\":{\"_0\":\"The trade rollover fee\"}},\"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)\":{\"params\":{\"accRolloverFeesPerOi\":\"Accumulated rollover fees per open interest\",\"collateral\":\"The collateral for the trade\",\"endAccRolloverFeesPerOi\":\"End accumulated rollover fees per open interest\",\"leverage\":\"The leverage for the trade\"},\"returns\":{\"_0\":\"The trade rollover fee\"}},\"getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256)\":{\"details\":\"Get trade value, PnL, and fees.\",\"params\":{\"_trade\":\"Details of the trade.\",\"closingFee\":\"Closing fee.\",\"collateral\":\"Amount of collateral.\",\"percentProfit\":\"Profit percentage.\"}},\"getTradeValuePure(uint256,int256,uint256,uint256,uint256)\":{\"params\":{\"closingFee\":\"The closing fee for the trade\",\"collateral\":\"The collateral for the trade\",\"lossProtection\":\"The loss protection for the trade\",\"percentProfit\":\"The percent profit for the trade\",\"rolloverFee\":\"The rollover fee for the trade\"},\"returns\":{\"_0\":\"The trade value, profit and loss, and fees\"}},\"initialize(address,address)\":{\"details\":\"Initialize the PairInfos Proxy.\",\"params\":{\"_pairsStorage\":\"Address of the IPairStorage contract.\",\"_storageT\":\"Address of the ITradingStorage contract.\"}},\"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),bool)\":{\"params\":{\"_trade\":\"The trade object containing details of the trade\"},\"returns\":{\"_0\":\"The index of the loss protection tier\"}},\"setKeeper(address)\":{\"details\":\"Set the Keeper address.\",\"params\":{\"_keeper\":\"Address of the new Keeper.\"}},\"setLossProtectionConfig(uint256,uint256[],uint256[])\":{\"details\":\"Set loss protection configuration for a pair index.\",\"params\":{\"_longSkewConfig\":\"Configuration for long skew.\",\"_pairIndex\":\"The pair index to configure.\",\"_shortSkewConfig\":\"Configuration for short skew.\"}},\"setManager(address)\":{\"details\":\"Set the manager address.\",\"params\":{\"_manager\":\"Address of the new manager.\"}},\"setOnePercentDepth(uint256,uint256,uint256)\":{\"params\":{\"pairIndex\":\"The index of the trading pair\",\"valueAbove\":\"The value above the one percent depth\",\"valueBelow\":\"The value below the one percent depth\"}},\"setOnePercentDepthArray(uint256[],uint256[],uint256[])\":{\"params\":{\"indices\":\"The index array of the trading pair\",\"valuesAbove\":\"The value array above the one percent depth\",\"valuesBelow\":\"The value array below the one percent depth\"}},\"setPairParams(uint256,(uint256,uint256,uint256))\":{\"details\":\"Set parameters for a trading pair.\",\"params\":{\"pairIndex\":\"Index of the trading pair.\",\"value\":\"Parameters to set.\"}},\"setPairParamsArray(uint256[],(uint256,uint256,uint256)[])\":{\"details\":\"Set parameters for a trading pairs.\",\"params\":{\"indices\":\"Index array of the trading pair.\",\"values\":\"Parameters Array to set.\"}},\"setRolloverFeePerBlockP(uint256,uint256)\":{\"details\":\"Set rollover fee per block for a trading pair.\",\"params\":{\"pairIndex\":\"Index of the trading pair.\",\"value\":\"Fee value to set.\"}},\"storeTradeInitialAccFees(address,uint256,uint256,bool)\":{\"details\":\"Called while registering trade. Stores margin fee accumulator at start of a trade\",\"params\":{\"index\":\"Index of the trade.\",\"long\":\"Whether the trade is long or not.\",\"pairIndex\":\"Index of the trading pair.\",\"trader\":\"Address of the trader.\"}},\"udpateLiquidationThreshold(uint256)\":{\"details\":\"Set the new Liq Threshold.\",\"params\":{\"_newThreshold\":\"New Liq Threshold\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAccRolloverFeesLong(uint256)\":{\"notice\":\"Retrieves the accumulated rollover fees for long positions for a given pair index\"},\"getAccRolloverFeesShort(uint256)\":{\"notice\":\"Retrieves the accumulated rollover fees for short positions for a given pair index\"},\"getAccRolloverFeesUpdateBlock(uint256)\":{\"notice\":\"Retrieves the last block where the accumulated rollover fees were updated for a given pair index\"},\"getBlendedSkew(uint256,bool,uint256,uint256)\":{\"notice\":\"Retrieves the blended skew ratio\"},\"getBlendedUtilizationRatio(uint256,uint256,uint256)\":{\"notice\":\"Retrieves the blended utlization ratio\"},\"getOnePercentDepthAbove(uint256)\":{\"notice\":\"Get the one percent depth above the current price for the given pair index\"},\"getOnePercentDepthBelow(uint256)\":{\"notice\":\"Retrieves the one percent depth below the current price for a given pair index\"},\"getPairInfos(uint256[])\":{\"notice\":\"Fetches and returns trading pair information for specified indices\"},\"getPendingAccRolloverFees(uint256)\":{\"notice\":\"Retrieves the pending accumulated rollover fees for a given trading pair\"},\"getRolloverFeePerBlockP(uint256)\":{\"notice\":\"Retrieves the rollover fee per block for a given pair index\"},\"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)\":{\"notice\":\"Retrieves the starting rollover fee accumulator of a trade\"},\"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Calculate liquidation price after trade rollover.\"},\"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)\":{\"notice\":\"Calculates the liquidation price of the trade \"},\"getTradePriceImpact(uint256,uint256,bool,uint256,bool)\":{\"notice\":\"Calculate price impact on trade opening. Only for Crypto Group\"},\"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Calculates the trade rollover fee for a given trader and trading pair\"},\"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the trade rollover fee for accumulated Roll over fees\"},\"getTradeValuePure(uint256,int256,uint256,uint256,uint256)\":{\"notice\":\"Calculates the Pnl, fees and pnl adjusted collateral\"},\"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),bool)\":{\"notice\":\"Calculate and return the loss protection tier for a given trade based on current skew\"},\"setOnePercentDepth(uint256,uint256,uint256)\":{\"notice\":\"Sets the one percent depth values for a trading pair\"},\"setOnePercentDepthArray(uint256[],uint256[],uint256[])\":{\"notice\":\"Sets the one percent depth values for a trading pairs\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PairInfos.sol\":\"PairInfos\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"src/PairInfos.sol\":{\"keccak256\":\"0xd1da8a3a3598794b35808cef2cbb407b862fb8a197cbc8994cbf7bb929d90247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b53ce6582039992e87b0bde0badff5b27faa0a2587001ba920d78892c50a7ea9\",\"dweb:/ipfs/QmXGKi2E7f2eti6zceLhtFuR1xi1mPKioPSwFs9jk38pKM\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b\",\"dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a\",\"dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0x3e2ef577c11a2cb6d8ca9956dae072d8cfac1a0e444bf38dceed420811a2aead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0d15327e4ccd0575041c32c99be1cfc98403cc46b6282714f40e47a57434bcd\",\"dweb:/ipfs/QmNw9KdVakdYfG52cfDh8sJFec5X4nzKoyZ2vRJwGaZDC4\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe\",\"dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b\",\"dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4\",\"dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]},\"src/library/abdkQuadMathExt.sol\":{\"keccak256\":\"0x79972e42964bd0e3a0deceb9d99efafdbe10eb522bcef686bfa64b483bb5aa6d\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://c7a51ab03439e826ea50235d17d560824306cb775bf40c15e43f45d4ce14ca84\",\"dweb:/ipfs/QmfHKAPB5apksLpnYZyMhvwWEzoF3cUuzxXnFit1f6u5FZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueLong","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueShort","type":"uint256","indexed":false}],"type":"event","name":"AccRolloverFeesStored","anonymous":false},{"inputs":[{"internalType":"uint256","name":"multiplierCoeffMax","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"CoeffUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"multiplierDenom","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"DenomUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"buy","type":"bool","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false},{"internalType":"uint256","name":"leverage","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"r","type":"uint256","indexed":false},{"internalType":"uint256","name":"closingFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtection","type":"uint256","indexed":false}],"type":"event","name":"FeesCharged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"keeper","type":"address","indexed":false}],"type":"event","name":"KeeperUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256","indexed":false}],"type":"event","name":"LiqThresholdUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"numTiers","type":"uint256","indexed":false},{"internalType":"uint256[]","name":"longSkewConfig","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"shortSkewConfig","type":"uint256[]","indexed":false}],"type":"event","name":"LossProtectionConfigSet","anonymous":false},{"inputs":[{"internalType":"address","name":"value","type":"address","indexed":false}],"type":"event","name":"ManagerUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MaxNegativePnlOnOpenPUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"minMultiplierRate","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMultiplierRate","type":"uint256","indexed":false},{"internalType":"uint256","name":"groupId","type":"uint256","indexed":false}],"type":"event","name":"MultiplierUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueAbove","type":"uint256","indexed":false},{"internalType":"uint256","name":"valueBelow","type":"uint256","indexed":false}],"type":"event","name":"OnePercentDepthUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"struct IPairInfos.PairParams","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}],"indexed":false}],"type":"event","name":"PairParamsUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"newPairStorage","type":"address","indexed":false}],"type":"event","name":"PairStorageUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"RolloverFeePerBlockPUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"rollover","type":"uint256","indexed":false}],"type":"event","name":"TradeInitialAccFeesStored","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesLong","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesShort","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAccRolloverFeesUpdateBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_long","type":"bool"},{"internalType":"uint256","name":"_longOI","type":"uint256"},{"internalType":"uint256","name":"_shortOI","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlendedSkew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_longOI","type":"uint256"},{"internalType":"uint256","name":"_shortOI","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlendedUtilizationRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOnePercentDepthAbove","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOnePercentDepthBelow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"getPairInfos","outputs":[{"internalType":"struct IPairInfos.PairParams[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]},{"internalType":"struct IPairInfos.PairRolloverFees[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"accPerOiLong","type":"uint256"},{"internalType":"uint256","name":"accPerOiShort","type":"uint256"},{"internalType":"uint256","name":"lastUpdateBlock","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPendingAccRolloverFees","outputs":[{"internalType":"uint256","name":"valueLong","type":"uint256"},{"internalType":"uint256","name":"valueShort","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isBuy","type":"bool"},{"internalType":"uint256","name":"_leveragePosition","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"getPriceImpactSpread","outputs":[{"internalType":"int256","name":"spread","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRolloverFeePerBlockP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isBuy","type":"bool"},{"internalType":"uint256","name":"_leveragePosition","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"getSkewImpactSpread","outputs":[{"internalType":"int256","name":"spread","type":"int256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeInitialAccRolloverFeesPerCollateral","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeLiquidationPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"rolloverFee","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeLiquidationPricePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"tradeOpenInterest","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"getTradePriceImpact","outputs":[{"internalType":"uint256","name":"priceAfterImpact","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeRolloverFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"accRolloverFeesPerOi","type":"uint256"},{"internalType":"uint256","name":"endAccRolloverFeesPerOi","type":"uint256"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getTradeRolloverFeePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"int256","name":"percentProfit","type":"int256"},{"internalType":"uint256","name":"closingFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getTradeValue","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"int256","name":"pnl","type":"int256"},{"internalType":"uint256","name":"fees","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"int256","name":"percentProfit","type":"int256"},{"internalType":"uint256","name":"rolloverFee","type":"uint256"},{"internalType":"uint256","name":"closingFee","type":"uint256"},{"internalType":"uint256","name":"lossProtection","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTradeValuePure","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairsStorage","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"liqThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"longSkewConfig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtectionNumTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"_trade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"lossProtectionTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairParams","outputs":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairRolloverFees","outputs":[{"internalType":"uint256","name":"accPerOiLong","type":"uint256"},{"internalType":"uint256","name":"accPerOiShort","type":"uint256"},{"internalType":"uint256","name":"lastUpdateBlock","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsStorage","outputs":[{"internalType":"contract IPairStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"resetTradeInitialAccess"},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setKeeper"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256[]","name":"_longSkewConfig","type":"uint256[]"},{"internalType":"uint256[]","name":"_shortSkewConfig","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setLossProtectionConfig"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setManager"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"valueAbove","type":"uint256"},{"internalType":"uint256","name":"valueBelow","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOnePercentDepth"},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"},{"internalType":"uint256[]","name":"valuesAbove","type":"uint256[]"},{"internalType":"uint256[]","name":"valuesBelow","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setOnePercentDepthArray"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"struct IPairInfos.PairParams","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setPairParams"},{"inputs":[{"internalType":"uint256[]","name":"indices","type":"uint256[]"},{"internalType":"struct IPairInfos.PairParams[]","name":"values","type":"tuple[]","components":[{"internalType":"uint256","name":"onePercentDepthAbove","type":"uint256"},{"internalType":"uint256","name":"onePercentDepthBelow","type":"uint256"},{"internalType":"uint256","name":"rolloverFeePerBlockP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setPairParamsArray"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRolloverFeePerBlockP"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"shortSkewConfig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"long","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storeTradeInitialAccFees"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tradeInitialAccFees","outputs":[{"internalType":"uint256","name":"rollover","type":"uint256"},{"internalType":"bool","name":"openedAfterUpdate","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"udpateLiquidationThreshold"},{"inputs":[{"internalType":"address","name":"_newPairStorage","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updatePairStorage"}],"devdoc":{"kind":"dev","methods":{"getAccRolloverFeesLong(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The accumulated rollover fees for long positions"}},"getAccRolloverFeesShort(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The accumulated rollover fees for short positions"}},"getAccRolloverFeesUpdateBlock(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The last block number where the accumulated rollover fees were updated"}},"getBlendedSkew(uint256,bool,uint256,uint256)":{"params":{"_pairIndex":"The index of the trading pair"},"returns":{"_0":"Utlization Ratio in 1e10 precision"}},"getBlendedUtilizationRatio(uint256,uint256,uint256)":{"params":{"_longOI":"Long Open Interest","_pairIndex":"The index of the trading pair","_shortOI":"Short Open Interest"},"returns":{"_0":"Utlization Ratio in 1e10 precision"}},"getOnePercentDepthAbove(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The one percent depth above the current price"}},"getOnePercentDepthBelow(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The one percent depth below the current price"}},"getPairInfos(uint256[])":{"params":{"indices":"An array of indices for which to fetch the pair information"},"returns":{"_0":"PairParams[] and PairRolloverFees[] arrays containing trading pair parameters and rollover fees"}},"getPendingAccRolloverFees(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"valueLong":"The pending accumulated rollover fees for long positions","valueShort":"The pending accumulated rollover fees for short positions"}},"getRolloverFeePerBlockP(uint256)":{"params":{"pairIndex":"The index of the trading pair"},"returns":{"_0":"The rollover fee per block"}},"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":{"params":{"index":"The index of the trade","pairIndex":"The index of the trading pair","trader":"Address of the trader"},"returns":{"_0":"The initial accumulated rollover fees for the trade"}},"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":{"params":{"collateral":"Amount of collateral.","index":"Unique index for trade.","leverage":"Leverage used in the trade.","long":"True if it's a long position, false otherwise.","openPrice":"Opening price of the trade.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."},"returns":{"_0":"Calculated liquidation price."}},"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":{"params":{"collateral":"The collateral for the trade","leverage":"The leverage for the trade","long":"Indicates if the position is long","openPrice":"The opening price of the trade","rolloverFee":"The rollover fee for the trade"},"returns":{"_0":"The liquidation price"}},"getTradePriceImpact(uint256,uint256,bool,uint256,bool)":{"params":{"long":"True if it's a long position, false otherwise.","openPrice":"Opening price of the trade.","pairIndex":"Index of the trading pair.","tradeOpenInterest":"Open interest of the trade."},"returns":{"priceAfterImpact":"Price after taking impact into account."}},"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":{"params":{"collateral":"The collateral for the trade","index":"The index of the trade","leverage":"The leverage for the trade","long":"Indicates if the position is long","pairIndex":"The index of the trading pair","trader":"Address of the trader"},"returns":{"_0":"The trade rollover fee"}},"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":{"params":{"accRolloverFeesPerOi":"Accumulated rollover fees per open interest","collateral":"The collateral for the trade","endAccRolloverFeesPerOi":"End accumulated rollover fees per open interest","leverage":"The leverage for the trade"},"returns":{"_0":"The trade rollover fee"}},"getTradeValue((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint256,int256,uint256)":{"details":"Get trade value, PnL, and fees.","params":{"_trade":"Details of the trade.","closingFee":"Closing fee.","collateral":"Amount of collateral.","percentProfit":"Profit percentage."}},"getTradeValuePure(uint256,int256,uint256,uint256,uint256)":{"params":{"closingFee":"The closing fee for the trade","collateral":"The collateral for the trade","lossProtection":"The loss protection for the trade","percentProfit":"The percent profit for the trade","rolloverFee":"The rollover fee for the trade"},"returns":{"_0":"The trade value, profit and loss, and fees"}},"initialize(address,address)":{"details":"Initialize the PairInfos Proxy.","params":{"_pairsStorage":"Address of the IPairStorage contract.","_storageT":"Address of the ITradingStorage contract."}},"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),bool)":{"params":{"_trade":"The trade object containing details of the trade"},"returns":{"_0":"The index of the loss protection tier"}},"setKeeper(address)":{"details":"Set the Keeper address.","params":{"_keeper":"Address of the new Keeper."}},"setLossProtectionConfig(uint256,uint256[],uint256[])":{"details":"Set loss protection configuration for a pair index.","params":{"_longSkewConfig":"Configuration for long skew.","_pairIndex":"The pair index to configure.","_shortSkewConfig":"Configuration for short skew."}},"setManager(address)":{"details":"Set the manager address.","params":{"_manager":"Address of the new manager."}},"setOnePercentDepth(uint256,uint256,uint256)":{"params":{"pairIndex":"The index of the trading pair","valueAbove":"The value above the one percent depth","valueBelow":"The value below the one percent depth"}},"setOnePercentDepthArray(uint256[],uint256[],uint256[])":{"params":{"indices":"The index array of the trading pair","valuesAbove":"The value array above the one percent depth","valuesBelow":"The value array below the one percent depth"}},"setPairParams(uint256,(uint256,uint256,uint256))":{"details":"Set parameters for a trading pair.","params":{"pairIndex":"Index of the trading pair.","value":"Parameters to set."}},"setPairParamsArray(uint256[],(uint256,uint256,uint256)[])":{"details":"Set parameters for a trading pairs.","params":{"indices":"Index array of the trading pair.","values":"Parameters Array to set."}},"setRolloverFeePerBlockP(uint256,uint256)":{"details":"Set rollover fee per block for a trading pair.","params":{"pairIndex":"Index of the trading pair.","value":"Fee value to set."}},"storeTradeInitialAccFees(address,uint256,uint256,bool)":{"details":"Called while registering trade. Stores margin fee accumulator at start of a trade","params":{"index":"Index of the trade.","long":"Whether the trade is long or not.","pairIndex":"Index of the trading pair.","trader":"Address of the trader."}},"udpateLiquidationThreshold(uint256)":{"details":"Set the new Liq Threshold.","params":{"_newThreshold":"New Liq Threshold"}}},"version":1},"userdoc":{"kind":"user","methods":{"getAccRolloverFeesLong(uint256)":{"notice":"Retrieves the accumulated rollover fees for long positions for a given pair index"},"getAccRolloverFeesShort(uint256)":{"notice":"Retrieves the accumulated rollover fees for short positions for a given pair index"},"getAccRolloverFeesUpdateBlock(uint256)":{"notice":"Retrieves the last block where the accumulated rollover fees were updated for a given pair index"},"getBlendedSkew(uint256,bool,uint256,uint256)":{"notice":"Retrieves the blended skew ratio"},"getBlendedUtilizationRatio(uint256,uint256,uint256)":{"notice":"Retrieves the blended utlization ratio"},"getOnePercentDepthAbove(uint256)":{"notice":"Get the one percent depth above the current price for the given pair index"},"getOnePercentDepthBelow(uint256)":{"notice":"Retrieves the one percent depth below the current price for a given pair index"},"getPairInfos(uint256[])":{"notice":"Fetches and returns trading pair information for specified indices"},"getPendingAccRolloverFees(uint256)":{"notice":"Retrieves the pending accumulated rollover fees for a given trading pair"},"getRolloverFeePerBlockP(uint256)":{"notice":"Retrieves the rollover fee per block for a given pair index"},"getTradeInitialAccRolloverFeesPerCollateral(address,uint256,uint256)":{"notice":"Retrieves the starting rollover fee accumulator of a trade"},"getTradeLiquidationPrice(address,uint256,uint256,uint256,bool,uint256,uint256)":{"notice":"Calculate liquidation price after trade rollover."},"getTradeLiquidationPricePure(uint256,bool,uint256,uint256,uint256)":{"notice":"Calculates the liquidation price of the trade "},"getTradePriceImpact(uint256,uint256,bool,uint256,bool)":{"notice":"Calculate price impact on trade opening. Only for Crypto Group"},"getTradeRolloverFee(address,uint256,uint256,bool,uint256,uint256)":{"notice":"Calculates the trade rollover fee for a given trader and trading pair"},"getTradeRolloverFeePure(uint256,uint256,uint256,uint256)":{"notice":"Calculates the trade rollover fee for accumulated Roll over fees"},"getTradeValuePure(uint256,int256,uint256,uint256,uint256)":{"notice":"Calculates the Pnl, fees and pnl adjusted collateral"},"lossProtectionTier((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),bool)":{"notice":"Calculate and return the loss protection tier for a given trade based on current skew"},"setOnePercentDepth(uint256,uint256,uint256)":{"notice":"Sets the one percent depth values for a trading pair"},"setOnePercentDepthArray(uint256[],uint256[],uint256[])":{"notice":"Sets the one percent depth values for a trading pairs"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PairInfos.sol":"PairInfos"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"src/PairInfos.sol":{"keccak256":"0xd1da8a3a3598794b35808cef2cbb407b862fb8a197cbc8994cbf7bb929d90247","urls":["bzz-raw://b53ce6582039992e87b0bde0badff5b27faa0a2587001ba920d78892c50a7ea9","dweb:/ipfs/QmXGKi2E7f2eti6zceLhtFuR1xi1mPKioPSwFs9jk38pKM"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88","urls":["bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b","dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98","urls":["bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a","dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0x3e2ef577c11a2cb6d8ca9956dae072d8cfac1a0e444bf38dceed420811a2aead","urls":["bzz-raw://e0d15327e4ccd0575041c32c99be1cfc98403cc46b6282714f40e47a57434bcd","dweb:/ipfs/QmNw9KdVakdYfG52cfDh8sJFec5X4nzKoyZ2vRJwGaZDC4"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375","urls":["bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe","dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f","urls":["bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b","dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e","urls":["bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4","dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"},"src/library/abdkQuadMathExt.sol":{"keccak256":"0x79972e42964bd0e3a0deceb9d99efafdbe10eb522bcef686bfa64b483bb5aa6d","urls":["bzz-raw://c7a51ab03439e826ea50235d17d560824306cb775bf40c15e43f45d4ce14ca84","dweb:/ipfs/QmfHKAPB5apksLpnYZyMhvwWEzoF3cUuzxXnFit1f6u5FZ"],"license":"BSD-4-Clause"}},"version":1},"id":108}
|