avantis-trader-sdk 0.7.0__py3-none-any.whl → 0.8.0__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.0.dist-info}/METADATA +1 -1
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.0.dist-info}/RECORD +16 -16
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.0.dist-info}/WHEEL +0 -0
- {avantis_trader_sdk-0.7.0.dist-info → avantis_trader_sdk-0.8.0.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addWhitelist","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarket","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_executionFee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeLimitOrder","inputs":[{"name":"_orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"},{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeMarketOrders","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"orderId","type":"uint256[]","internalType":"uint256[]"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastUpdateTime","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"limitOrdersTimelock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrade","inputs":[{"name":"t","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":"_type","type":"uint8","internalType":"enum IExecute.OpenLimitOrderType"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_executionFee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeWhitelist","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrdersTimelock","inputs":[{"name":"_blocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketExecFeeReciever","inputs":[{"name":"_reciever","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"toggleWhitelist","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMargin","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum ITradingStorage.updateType"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_tp","type":"uint256","internalType":"uint256"},{"name":"_sl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_isOperator","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"updateTp","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newTp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTpAndSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"_newTP","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistedAddress","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LimitOrderSameBlock","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_type","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.updateType"},{"name":"newTrade","type":"tuple","indexed":false,"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":"marginFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtectionTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitCanceled","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitPlaced","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"openPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executionFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum IExecute.OpenLimitOrderType"},{"name":"slippageP","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"isOperator","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlUpdateInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TpUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"whitelist","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61555280620000f36000396000f3fe6080604052600436106101c25760003560e01c80637e15144b116100f7578063c5ed6a0811610095578063d8defd1511610064578063d8defd15146104e3578063e5a97c9214610503578063f556763714610516578063f80f5dd51461052957600080fd5b8063c5ed6a0814610470578063c641558e14610490578063cd90b8a4146104b0578063d4a1caa7146104c357600080fd5b8063a03074c1116100d1578063a03074c1146103fa578063b9b6573a1461040d578063c30796ab1461042d578063c383e5de1461045d57600080fd5b80637e15144b146103b05780638456cb59146103c55780639e2033f5146103da57600080fd5b8063485cc95511610164578063611b40951161013e578063611b4095146103265780636d44a3b2146103405780636d70f7ae1461036057806378c8cda71461039057600080fd5b8063485cc955146102bd578063570ca735146102dd5780635c975abb1461030257600080fd5b806315b760b1116101a057806315b760b11461026057806316fff074146102755780633f4ba83a1461029557806346f6c8f5146102aa57600080fd5b8063080b44bb146101c75780630890d22a146102125780631346b0ff14610228575b600080fd5b3480156101d357600080fd5b506101ff6101e2366004614917565b606a60209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561021e57600080fd5b506101ff60675481565b34801561023457600080fd5b50606654610248906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61027361026e366004614df1565b610549565b005b34801561028157600080fd5b50606554610248906001600160a01b031681565b3480156102a157600080fd5b506102736105b4565b6102736102b836600461497d565b610674565b3480156102c957600080fd5b506102736102d83660046148b0565b610dc5565b3480156102e957600080fd5b506068546102489061010090046001600160a01b031681565b34801561030e57600080fd5b5060335460ff165b6040519015158152602001610209565b34801561033257600080fd5b506068546103169060ff1681565b34801561034c57600080fd5b5061027361035b3660046148e9565b610f17565b34801561036c57600080fd5b5061031661037b366004614876565b606b6020526000908152604090205460ff1681565b34801561039c57600080fd5b506102736103ab366004614876565b611030565b3480156103bc57600080fd5b5061027361117a565b3480156103d157600080fd5b5061027361127e565b3480156103e657600080fd5b506102736103f5366004614876565b61133c565b610273610408366004614c4e565b61145f565b34801561041957600080fd5b50610273610428366004614cc8565b6115cc565b34801561043957600080fd5b50610316610448366004614876565b60696020526000908152604090205460ff1681565b61027361046b366004614d6f565b611809565b34801561047c57600080fd5b5061027361048b366004614c1c565b61185f565b34801561049c57600080fd5b506102736104ab366004614e3d565b611908565b6101ff6104be366004614cea565b611b8c565b3480156104cf57600080fd5b506102736104de366004614c1c565b612352565b3480156104ef57600080fd5b506102736104fe366004614d43565b6124a4565b6101ff610511366004614dbf565b6124f1565b6101ff610524366004614b2b565b612ad4565b34801561053557600080fd5b50610273610544366004614876565b613923565b60685460ff161561058c573360009081526069602052604090205460ff1661058c5760405162461bcd60e51b81526004016105839061502c565b60405180910390fd5b610594613a71565b61059f868685613ab7565b6105ac8686868585613d23565b505050505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561060257600080fd5b505afa158015610616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063a9190614893565b6001600160a01b0316336001600160a01b03161461066a5760405162461bcd60e51b81526004016105839061509f565b610672614529565b565b60685460ff16156106ae573360009081526069602052604090205460ff166106ae5760405162461bcd60e51b81526004016105839061502c565b6106b6613a71565b60038660038111156106ca576106ca6154ca565b14156108a55760655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614893565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561078557600080fd5b505afa158015610799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190614893565b606554604051636e6f99cd60e11b81529192506001600160a01b03169063dcdf339a906107f290899089908990600401614f8d565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190614960565b6108795760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610583565b506001600160a01b0385166000908152606a602090815260408083208784529091529020429055610a39565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906108da90899089908990600401614f8d565b6101606040518083038186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190614b7f565b905060008160e00151116109515760405162461bcd60e51b815260040161058390614fe2565b6001876003811115610965576109656154ca565b14158061097757506000816101200151115b6109ab5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610583565b60028760038111156109bf576109bf6154ca565b1415610a375760006109d082614576565b905081610120015160001480610a0057508160c001516109f7578161012001518110610a00565b81610120015181115b610a355760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610583565b505b505b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015610a7e57600080fd5b505afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190614893565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b9190614893565b905060006040518060800160405280896001600160a01b031681526020018881526020018781526020018a6003811115610b6757610b676154ca565b9052905060006001600160a01b03841663c0a027f48960038d6003811115610b9157610b916154ca565b14610b9d576003610ba0565b60025b6040518363ffffffff1660e01b8152600401610bbd92919061529b565b602060405180830381600087803b158015610bd757600080fd5b505af1158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190614c35565b606554604080516080810182526001600160a01b038d81168252602082018d90529181018b9052929350169063d775d54890606081018d6003811115610c5757610c576154ca565b815250836040518363ffffffff1660e01b8152600401610c78929190615159565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505060405163308f221b60e21b81526001600160a01b038616925063c23c886c9150610cd890859033906004016151ce565b600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b5050604080518b815260208101859052428183015290516001600160a01b038d1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0385169063dd2f3c05903490610d879085908b908b906004016151f4565b6000604051808303818588803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050505050505050505050565b600054610100900460ff1615808015610de55750600054600160ff909116105b80610dff5750303b158015610dff575060005460ff166001145b610e625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610583565b6000805460ff191660011790558015610e85576000805461ff0019166101001790555b606580546001600160a01b038086166001600160a01b0319928316179092556066805492851692909116919091179055601e6067556068805460ff19169055610ecc614646565b8015610f12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190614893565b6001600160a01b0316336001600160a01b031614610fcd5760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190614893565b6001600160a01b0316336001600160a01b0316146110e65760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166110f957600080fd5b6001600160a01b038116600081815260696020908152604091829020805460ff191690558151828152600f928101929092526e1c995b5bdd9955da1a5d195b1a5cdd608a1b60608301528101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781906080015b60405180910390a150565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614893565b6001600160a01b0316336001600160a01b0316146112305760405162461bcd60e51b81526004016105839061509f565b6068805460ff8082161560ff1990921682179092556040519116151581527fb129566a7007764ad2d20cd94d30a9e576d12e604df8470368c973f8759e9b31906020015b60405180910390a1565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156112cc57600080fd5b505afa1580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190614893565b6001600160a01b0316336001600160a01b0316146113345760405162461bcd60e51b81526004016105839061509f565b610672614675565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561138a57600080fd5b505afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190614893565b6001600160a01b0316336001600160a01b0316146113f25760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166114375760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610583565b606880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b336000908152606b602052604090205460ff166114ae5760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b6044820152606401610583565b60005b838110156105ac57606560009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190614893565b6001600160a01b031663dd2f3c0534878785818110611560576115606154e0565b9050602002013586866040518563ffffffff1660e01b8152600401611587939291906151f4565b6000604051808303818588803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050505080806115c490615499565b9150506114b1565b60685460ff1615611606573360009081526069602052604090205460ff166116065760405162461bcd60e51b81526004016105839061502c565b61160e613a71565b606554604051632e21e28b60e21b81526000916001600160a01b03169063b8878a2c9061164390339087908790600401614f8d565b6101806040518083038186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169491906149fd565b9050606754816101400151436116aa9190615482565b10156116c85760405162461bcd60e51b815260040161058390615004565b60655461016082015160608301516001600160a01b0390921691638b83351a91839133916116f591615429565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505060655460405163b4b0f56760e01b81526001600160a01b03909116925063b4b0f567915061179090339087908790600401614f8d565b600060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b50506040805186815260208101869052428183015290513393507fd8407011189bc1f0b9b1055d7f799e1bf76a390e25ae3bea65dd68b1d8364e8692509081900360600190a2505050565b60685460ff1615611843573360009081526069602052604090205460ff166118435760405162461bcd60e51b81526004016105839061502c565b61184b613a71565b6118588585858585613d23565b5050505050565b336000908152606b602052604090205460ff166118ae5760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b6044820152606401610583565b606554604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156118f457600080fd5b505af1158015611858573d6000803e3d6000fd5b60685460ff1615611942573360009081526069602052604090205460ff166119425760405162461bcd60e51b81526004016105839061502c565b61194a613a71565b606554604051632e21e28b60e21b81526000916001600160a01b03169063b8878a2c9061197f9033908b908b90600401614f8d565b6101806040518083038186803b15801561199857600080fd5b505afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d091906149fd565b9050606754816101400151436119e69190615482565b1015611a045760405162461bcd60e51b815260040161058390615004565b821580611a2157508060800151611a1d57828511611a21565b8285105b611a585760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610583565b811580611a7557508060800151611a7157818510611a75565b8185115b611aac5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610583565b6101008101859052610120810184905260c0810183905260e0810182905260655460405163574564a760e11b81526001600160a01b039091169063ae8ac94e90611afa9084906004016150c1565b600060405180830381600087803b158015611b1457600080fd5b505af1158015611b28573d6000803e3d6000fd5b5050604080518a8152602081018a905290810188905260608101869052608081018590524260a08201523392507f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e890915060c00160405180910390a250505050505050565b60685460009060ff1615611bc9573360009081526069602052604090205460ff16611bc95760405162461bcd60e51b81526004016105839061502c565b611bd1613a71565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611c1657600080fd5b505afa158015611c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4e9190614893565b6065546040516351d407ff60e11b81529192506000916001600160a01b039091169063a3a80ffe90611c889033908d908d90600401614f8d565b6101606040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614b7f565b606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590611d139033908e908e90600401614f8d565b60a06040518083038186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190614aa5565b9050806060015115611dae5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610583565b60008260e0015111611dd25760405162461bcd60e51b815260040161058390614fe2565b6066548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015611e5757600080fd5b505afa158015611e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8f9190614c35565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490611ec0908e90600490810161529b565b602060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f129190614c35565b9450836001600160a01b031663cbe91bd986604051806101000160405280336001600160a01b031681526020018f81526020018e81526020018d6001811115611f5d57611f5d6154ca565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401611f9d9291906152bf565b600060405180830381600087803b158015611fb757600080fd5b505af1158015611fcb573d6000803e3d6000fd5b50505050611fe4826000015184606001518b8b856146b2565b606085015260e08401819052158015906120f35750836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190614893565b6001600160a01b03166359a992d084602001516040518263ffffffff1660e01b815260040161209b91815260200190565b60206040518083038186803b1580156120b357600080fd5b505afa1580156120c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120eb9190614c35565b8360e0015110155b80156121f45750836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561213357600080fd5b505afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190614893565b6001600160a01b031663281b693c84602001516040518263ffffffff1660e01b815260040161219c91815260200190565b60206040518083038186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ec9190614c35565b8360e0015111155b6122355760405162461bcd60e51b815260206004820152601260248201527113115591549051d157d25390d3d4949150d560721b6044820152606401610583565b608082015160405133917f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc113391612276918f918f918f918a9189914290615375565b60405180910390a260655460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b11906122ae9086906004016151bf565b600060405180830381600087803b1580156122c857600080fd5b505af11580156122dc573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038716925063dd2f3c05915034906123129089908c908c906004016151f4565b6000604051808303818588803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050505050505050509695505050505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d89190614893565b6001600160a01b0316336001600160a01b0316146124085760405162461bcd60e51b81526004016105839061509f565b600081116124425760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610583565b606781905560408051818152601391810191909152726c696d69744f726465727354696d656c6f636b60681b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9060800161116f565b60685460ff16156124de573360009081526069602052604090205460ff166124de5760405162461bcd60e51b81526004016105839061502c565b6124e6613a71565b610f12838383613ab7565b60685460009060ff161561252e573360009081526069602052604090205460ff1661252e5760405162461bcd60e51b81526004016105839061502c565b612536613a71565b60685460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114612588576040519150601f19603f3d011682016040523d82523d6000602084013e61258d565b606091505b50509050806125d75760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610583565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe9061260c9033908b908b90600401614f8d565b6101606040518083038186803b15801561262557600080fd5b505afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265d9190614b7f565b60e00151606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d59061269b9033908c908c90600401614f8d565b60a06040518083038186803b1580156126b357600080fd5b505afa1580156126c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126eb9190614aa5565b606001519050606560009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561273f57600080fd5b505afa158015612753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127779190614c35565b60655460405163f7b3c6fd60e01b81523360048201526001600160a01b039091169063f7b3c6fd9060240160206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f29190614c35565b106128345760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610583565b80156128795760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610583565b600082116128995760405162461bcd60e51b815260040161058390614fe2565b606560009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e757600080fd5b505afa1580156128fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291f9190614893565b6001600160a01b031663c0a027f48960016040518363ffffffff1660e01b815260040161294d92919061529b565b602060405180830381600087803b15801561296757600080fd5b505af115801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190614c35565b606554604080516101e081018252336080820190815260a082018d905260c082018c905260e082018b90526000610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c0830181905290825260208201819052818301819052606082018190529151631b026ffd60e31b81529397506001600160a01b039092169263d8137fe892612a4d929091899190600401615174565b600060405180830381600087803b158015612a6757600080fd5b505af1158015612a7b573d6000803e3d6000fd5b5050604080518b8152600060208201529081018790524260608201523392507f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf6491506080015b60405180910390a2505050949350505050565b60685460009060ff1615612b11573360009081526069602052604090205460ff16612b115760405162461bcd60e51b81526004016105839061502c565b612b19613a71565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015612b5e57600080fd5b505afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b969190614893565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd357600080fd5b505afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190614893565b6068546040519192506000916101009091046001600160a01b03169034908381818185875af1925050503d8060008114612c61576040519150601f19603f3d011682016040523d82523d6000602084013e612c66565b606091505b5050905080612cb05760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610583565b606560009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015612cfe57600080fd5b505afa158015612d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d369190614c35565b60655460405163f7b3c6fd60e01b81523360048201526001600160a01b039091169063f7b3c6fd9060240160206040518083038186803b158015612d7957600080fd5b505afa158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614c35565b10612df35760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610583565b606560009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e4157600080fd5b505afa158015612e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e799190614c35565b606554604051634bf3ccad60e11b815233600482015260208b013560248201526001600160a01b03909116906397e7995a9060440160206040518083038186803b158015612ec657600080fd5b505afa158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe9190614c35565b606554604051639c8912f160e01b815233600482015260208c013560248201526001600160a01b0390911690639c8912f19060440160206040518083038186803b158015612f4b57600080fd5b505afa158015612f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f839190614c35565b6065546040516307218dad60e21b815233600482015260208d013560248201526001600160a01b0390911690631c8636b49060440160206040518083038186803b158015612fd057600080fd5b505afa158015612fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130089190614c35565b6130129190615429565b61301c9190615429565b1061305f5760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610583565b60405163238cd23f60e01b8152602089013560048201526001600160a01b0383169063238cd23f9060240160206040518083038186803b1580156130a257600080fd5b505afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190614c35565b6130ec60808a013560e08b013561475e565b101561312a5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610583565b60008860e001351180156131bc575060405163059a992d60e41b8152602089013560048201526001600160a01b038316906359a992d09060240160206040518083038186803b15801561317c57600080fd5b505afa158015613190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b49190614c35565b8860e0013510155b80156132465750604051630a06da4f60e21b8152602089013560048201526001600160a01b0383169063281b693c9060240160206040518083038186803b15801561320657600080fd5b505afa15801561321a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323e9190614c35565b8860e0013511155b6132875760405162461bcd60e51b815260206004820152601260248201527113115591549051d157d25390d3d4949150d560721b6044820152606401610583565b61010088013515806132c657506132a460e0890160c08a01614943565b6132b9578760a00135886101000135106132c6565b8760a00135886101000135115b6132fd5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610583565b610120880135158061333c575061331a60e0890160c08a01614943565b61332f578760a001358861012001351161333c565b8760a00135886101200135105b6133735760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610583565b6000876002811115613387576133876154ca565b146136ba576065546001600160a01b0316638b83351a33826133ad8960808e0135615429565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133fc57600080fd5b505af1158015613410573d6000803e3d6000fd5b505060655460405163226a27ad60e11b815233600482015260208c01356024820152600093506001600160a01b0390911691506344d44f5a9060440160206040518083038186803b15801561346457600080fd5b505afa158015613478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349c9190614c35565b606554604080516101808101825233815260208d810135908201529081018390526080808d013560608301529293506001600160a01b039091169163fdb153e2919081016134f060e08e0160c08f01614943565b151581526020018c60e0013581526020018c610100013581526020018c610120013581526020018c60a0013581526020018a8152602001438152602001898152506040518263ffffffff1660e01b815260040161354d91906150c1565b600060405180830381600087803b15801561356757600080fd5b505af115801561357b573d6000803e3d6000fd5b50505050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156135b857600080fd5b505afa1580156135cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f09190614893565b6001600160a01b031663ec570610338b60200135848c6040518563ffffffff1660e01b81526004016136259493929190614fae565b600060405180830381600087803b15801561363f57600080fd5b505af1158015613653573d6000803e3d6000fd5b503392507f8c47a168abd9fd3b41ee8a948bb081b7957747038e88fe050f7bc017e905656091505060208b01358361369160e08e0160c08f01614943565b8d60a001358b8e8e6040516136ac9796959493929190615331565b60405180910390a250613918565b6065546040516345c19a8d60e11b81523360048201526001600160a01b039091166024820181905260808a0135604483015290638b83351a90606401600060405180830381600087803b15801561371057600080fd5b505af1158015613724573d6000803e3d6000fd5b505060405163302809fd60e21b81526001600160a01b038616925063c0a027f4915061375b9060208c01359060009060040161529b565b602060405180830381600087803b15801561377557600080fd5b505af1158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190614c35565b9350606560009054906101000a90046001600160a01b03166001600160a01b031663d8137fe86040518060800160405280604051806101600160405280336001600160a01b031681526020018d60200135815260200160008152602001600081526020018d608001358152602001600081526020018d60c00160208101906138359190614943565b151581526020018d60e0013581526020018d610100013581526020018d6101200135815260200160008152508152602001600081526020018b60a001358152602001898152508660016040518463ffffffff1660e01b815260040161389c93929190615174565b600060405180830381600087803b1580156138b657600080fd5b505af11580156138ca573d6000803e3d6000fd5b5050604080516020808d013582526001908201529081018790524260608201523392507f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649150608001612ac1565b505050949350505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561397157600080fd5b505afa158015613985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a99190614893565b6001600160a01b0316336001600160a01b0316146139d95760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166139ec57600080fd5b6001600160a01b03811660009081526069602052604090819020805460ff19166001179055517f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee444227819061116f9083906040808252600c908201526b18591915da1a5d195b1a5cdd60a21b60608201526001600160a01b0391909116602082015260800190565b60335460ff16156106725760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610583565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90613aec90339088908890600401614f8d565b6101606040518083038186803b158015613b0557600080fd5b505afa158015613b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3d9190614b7f565b60e00151606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590613b7b90339089908990600401614f8d565b60a06040518083038186803b158015613b9357600080fd5b505afa158015613ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bcb9190614aa5565b60200151905060008211613bf15760405162461bcd60e51b815260040161058390614fe2565b606754613bfe8243615482565b1015613c1c5760405162461bcd60e51b815260040161058390615004565b6001600160ff1b038310613c615760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610583565b606554604051637fdb96f360e01b81523360048201526024810187905260448101869052606481018590526001600160a01b0390911690637fdb96f390608401600060405180830381600087803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b505060408051888152602081018890529081018690524260608201523392507f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e8915060800160405180910390a25050505050565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90613d589033908a908a90600401614f8d565b6101606040518083038186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da99190614b7f565b606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590613de39033908b908b90600401614f8d565b60a06040518083038186803b158015613dfb57600080fd5b505afa158015613e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e339190614aa5565b60400151905060008260e0015111613e5d5760405162461bcd60e51b815260040161058390614fe2565b6001600160ff1b038510613ea25760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610583565b6000613ecf8360e00151606460508660a00151613ebf9190615463565b613ec99190615441565b90614781565b9050851580613f0e57508260c00151613efa57808360a00151613ef29190615429565b861115613f0e565b808360a00151613f0a9190615482565b8610155b613f475760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610583565b606754613f548343615482565b1015613f725760405162461bcd60e51b815260040161058390615004565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613fb757600080fd5b505afa158015613fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fef9190614893565b90508615806140e95750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561403257600080fd5b505afa158015614046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406a9190614893565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b815260040161409791815260200190565b60206040518083038186803b1580156140af57600080fd5b505afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e79190614960565b155b156141ae5760655460405163a354418160e01b8152336004820152602481018b9052604481018a9052606481018990526001600160a01b039091169063a354418190608401600060405180830381600087803b15801561414857600080fd5b505af115801561415c573d6000803e3d6000fd5b5050604080518c8152602081018c90529081018a90524260608201523392507f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de915060800160405180910390a261451e565b60006141cb8560e00151866060015161475e90919063ffffffff16565b6065548651602088015160c0890151604051632a9a966760e01b81526001600160a01b0393841660048201526024810192909252600185811c6044840152600060648401526084830152151560a48201529293501690632a9a96679060c401602060405180830381600087803b15801561424457600080fd5b505af1158015614258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427c9190614c35565b8560600181815161428d9190615482565b90525060655460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b11906142c09088906004016151bf565b600060405180830381600087803b1580156142da57600080fd5b505af11580156142ee573d6000803e3d6000fd5b505060405163302809fd60e21b8152600092506001600160a01b038516915063c0a027f490614324908e9060059060040161529b565b602060405180830381600087803b15801561433e57600080fd5b505af1158015614352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143769190614c35565b9050826001600160a01b031663b8213bfa826040518060c00160405280336001600160a01b031681526020018f81526020018e81526020018a60a0015181526020018a60c00151151581526020018d8152506040518363ffffffff1660e01b8152600401614435929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b15801561444f57600080fd5b505af1158015614463573d6000803e3d6000fd5b5050604080518e8152602081018e90529081018c9052606081018490524260808201523392507fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be915060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0384169063dd2f3c059034906144e99085908d908d906004016151f4565b6000604051808303818588803b15801561450257600080fd5b505af1158015614516573d6000803e3d6000fd5b505050505050505b505050505050505050565b614531614793565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611274565b6066548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561460857600080fd5b505afa15801561461c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146409190614c35565b92915050565b600054610100900460ff1661466d5760405162461bcd60e51b815260040161058390615054565b6106726147dc565b61467d613a71565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861455e3390565b600080808560018111156146c8576146c86154ca565b141561470657826146d98588615429565b6146e39190615482565b9050806146f56402540be40089615463565b6146ff9190615441565b9150614754565b600185600181111561471a5761471a6154ca565b1415614754578261472b8588615482565b6147359190615482565b9050806147476402540be40089615463565b6147519190615441565b91505b9550959350505050565b60006402540be4006147708385615463565b61477a9190615441565b9392505050565b6000816147706402540be40085615463565b60335460ff166106725760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610583565b600054610100900460ff166148035760405162461bcd60e51b815260040161058390615054565b6033805460ff19169055565b805161481a816154f6565b919050565b60008083601f84011261483157600080fd5b50813567ffffffffffffffff81111561484957600080fd5b6020830191508360208260051b850101111561486457600080fd5b9250929050565b805161481a8161550e565b60006020828403121561488857600080fd5b813561477a816154f6565b6000602082840312156148a557600080fd5b815161477a816154f6565b600080604083850312156148c357600080fd5b82356148ce816154f6565b915060208301356148de816154f6565b809150509250929050565b600080604083850312156148fc57600080fd5b8235614907816154f6565b915060208301356148de8161550e565b6000806040838503121561492a57600080fd5b8235614935816154f6565b946020939093013593505050565b60006020828403121561495557600080fd5b813561477a8161550e565b60006020828403121561497257600080fd5b815161477a8161550e565b60008060008060008060a0878903121561499657600080fd5b8635600481106149a557600080fd5b955060208701356149b5816154f6565b94506040870135935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b6149eb89828a0161481f565b979a9699509497509295939492505050565b60006101808284031215614a1057600080fd5b614a186153bf565b614a218361480f565b8152602083015160208201526040830151604082015260608301516060820152614a4d6080840161486b565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a08284031215614ab757600080fd5b60405160a0810181811067ffffffffffffffff82111715614ae857634e487b7160e01b600052604160045260246000fd5b80604052508251815260208301516020820152604083015160408201526060830151614b138161550e565b60608201526080928301519281019290925250919050565b6000806000808486036101c0811215614b4357600080fd5b61016080821215614b5357600080fd5b869550850135905060038110614b6857600080fd5b9396939550505050610180820135916101a0013590565b60006101608284031215614b9257600080fd5b614b9a6153f7565b614ba38361480f565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152614be360c0840161486b565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b600060208284031215614c2e57600080fd5b5035919050565b600060208284031215614c4757600080fd5b5051919050565b600080600080600060608688031215614c6657600080fd5b85359450602086013567ffffffffffffffff80821115614c8557600080fd5b614c9189838a0161481f565b90965094506040880135915080821115614caa57600080fd5b50614cb78882890161481f565b969995985093965092949392505050565b60008060408385031215614cdb57600080fd5b50508035926020909101359150565b60008060008060008060a08789031215614d0357600080fd5b8635955060208701359450604087013560028110614d2057600080fd5b935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b600080600060608486031215614d5857600080fd5b505081359360208301359350604090920135919050565b600080600080600060808688031215614d8757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614db357600080fd5b614cb78882890161481f565b60008060008060808587031215614dd557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060a08789031215614e0a57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b60008060008060008060c08789031215614e5657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60038110614eb957614eb96154ca565b9052565b60028110614eb957614eb96154ca565b80516001600160a01b031682526020808201519083015260408082015190830152606081015160048110614f0357614f036154ca565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151614f6060c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0385168152602081018490526040810183905260808101614fd96060830184614ea9565b95945050505050565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600e908201526d57484954454c4953545f4f4e4c5960901b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615104608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016151678285614ecd565b8260808301529392505050565b600061020082019050615188828651614f0e565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b61016081016146408284614f0e565b60a081016151dc8285614ecd565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561528d57868503605f190183528135368a9003601e1901811261524457600080fd5b8901803567ffffffffffffffff81111561525d57600080fd5b8036038b131561526c57600080fd5b6152798782888501614e80565b96505050918301919083019060010161521e565b509298975050505050505050565b82815260408101600683106152b2576152b26154ca565b8260208301529392505050565b60006101208201905083825260018060a01b038351166020830152602083015160408301526040830151606083015260608301516153006080840182614ebd565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b600060e082019050888252876020830152861515604083015285606083015284608083015261536360a0830185614ea9565b8260c083015298975050505050505050565b8781526020810187905261022081016153916040830188614ebd565b61539e6060830187614f0e565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff811182821017156153f157634e487b7160e01b600052604160045260246000fd5b60405290565b604051610160810167ffffffffffffffff811182821017156153f157634e487b7160e01b600052604160045260246000fd5b6000821982111561543c5761543c6154b4565b500190565b60008261545e57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561547d5761547d6154b4565b500290565b600082821015615494576154946154b4565b500390565b60006000198214156154ad576154ad6154b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461550b57600080fd5b50565b801515811461550b57600080fdfea26469706673582212208d62c35790f563fdd118cc146dac09395f1093d5b3fe133575a5ae585f1a569264736f6c63430008070033","sourceMap":"358:24538:108:-:0;;;3404:55;;;;;;;;;-1:-1:-1;3429:22:108;:20;:22::i;:::-;358:24538;;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:-;358:24538:108;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101c25760003560e01c80637e15144b116100f7578063c5ed6a0811610095578063d8defd1511610064578063d8defd15146104e3578063e5a97c9214610503578063f556763714610516578063f80f5dd51461052957600080fd5b8063c5ed6a0814610470578063c641558e14610490578063cd90b8a4146104b0578063d4a1caa7146104c357600080fd5b8063a03074c1116100d1578063a03074c1146103fa578063b9b6573a1461040d578063c30796ab1461042d578063c383e5de1461045d57600080fd5b80637e15144b146103b05780638456cb59146103c55780639e2033f5146103da57600080fd5b8063485cc95511610164578063611b40951161013e578063611b4095146103265780636d44a3b2146103405780636d70f7ae1461036057806378c8cda71461039057600080fd5b8063485cc955146102bd578063570ca735146102dd5780635c975abb1461030257600080fd5b806315b760b1116101a057806315b760b11461026057806316fff074146102755780633f4ba83a1461029557806346f6c8f5146102aa57600080fd5b8063080b44bb146101c75780630890d22a146102125780631346b0ff14610228575b600080fd5b3480156101d357600080fd5b506101ff6101e2366004614917565b606a60209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561021e57600080fd5b506101ff60675481565b34801561023457600080fd5b50606654610248906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61027361026e366004614df1565b610549565b005b34801561028157600080fd5b50606554610248906001600160a01b031681565b3480156102a157600080fd5b506102736105b4565b6102736102b836600461497d565b610674565b3480156102c957600080fd5b506102736102d83660046148b0565b610dc5565b3480156102e957600080fd5b506068546102489061010090046001600160a01b031681565b34801561030e57600080fd5b5060335460ff165b6040519015158152602001610209565b34801561033257600080fd5b506068546103169060ff1681565b34801561034c57600080fd5b5061027361035b3660046148e9565b610f17565b34801561036c57600080fd5b5061031661037b366004614876565b606b6020526000908152604090205460ff1681565b34801561039c57600080fd5b506102736103ab366004614876565b611030565b3480156103bc57600080fd5b5061027361117a565b3480156103d157600080fd5b5061027361127e565b3480156103e657600080fd5b506102736103f5366004614876565b61133c565b610273610408366004614c4e565b61145f565b34801561041957600080fd5b50610273610428366004614cc8565b6115cc565b34801561043957600080fd5b50610316610448366004614876565b60696020526000908152604090205460ff1681565b61027361046b366004614d6f565b611809565b34801561047c57600080fd5b5061027361048b366004614c1c565b61185f565b34801561049c57600080fd5b506102736104ab366004614e3d565b611908565b6101ff6104be366004614cea565b611b8c565b3480156104cf57600080fd5b506102736104de366004614c1c565b612352565b3480156104ef57600080fd5b506102736104fe366004614d43565b6124a4565b6101ff610511366004614dbf565b6124f1565b6101ff610524366004614b2b565b612ad4565b34801561053557600080fd5b50610273610544366004614876565b613923565b60685460ff161561058c573360009081526069602052604090205460ff1661058c5760405162461bcd60e51b81526004016105839061502c565b60405180910390fd5b610594613a71565b61059f868685613ab7565b6105ac8686868585613d23565b505050505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561060257600080fd5b505afa158015610616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063a9190614893565b6001600160a01b0316336001600160a01b03161461066a5760405162461bcd60e51b81526004016105839061509f565b610672614529565b565b60685460ff16156106ae573360009081526069602052604090205460ff166106ae5760405162461bcd60e51b81526004016105839061502c565b6106b6613a71565b60038660038111156106ca576106ca6154ca565b14156108a55760655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614893565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561078557600080fd5b505afa158015610799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190614893565b606554604051636e6f99cd60e11b81529192506001600160a01b03169063dcdf339a906107f290899089908990600401614f8d565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108429190614960565b6108795760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610583565b506001600160a01b0385166000908152606a602090815260408083208784529091529020429055610a39565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906108da90899089908990600401614f8d565b6101606040518083038186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190614b7f565b905060008160e00151116109515760405162461bcd60e51b815260040161058390614fe2565b6001876003811115610965576109656154ca565b14158061097757506000816101200151115b6109ab5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610583565b60028760038111156109bf576109bf6154ca565b1415610a375760006109d082614576565b905081610120015160001480610a0057508160c001516109f7578161012001518110610a00565b81610120015181115b610a355760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610583565b505b505b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015610a7e57600080fd5b505afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190614893565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2b9190614893565b905060006040518060800160405280896001600160a01b031681526020018881526020018781526020018a6003811115610b6757610b676154ca565b9052905060006001600160a01b03841663c0a027f48960038d6003811115610b9157610b916154ca565b14610b9d576003610ba0565b60025b6040518363ffffffff1660e01b8152600401610bbd92919061529b565b602060405180830381600087803b158015610bd757600080fd5b505af1158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190614c35565b606554604080516080810182526001600160a01b038d81168252602082018d90529181018b9052929350169063d775d54890606081018d6003811115610c5757610c576154ca565b815250836040518363ffffffff1660e01b8152600401610c78929190615159565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505060405163308f221b60e21b81526001600160a01b038616925063c23c886c9150610cd890859033906004016151ce565b600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b5050604080518b815260208101859052428183015290516001600160a01b038d1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0385169063dd2f3c05903490610d879085908b908b906004016151f4565b6000604051808303818588803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050505050505050505050565b600054610100900460ff1615808015610de55750600054600160ff909116105b80610dff5750303b158015610dff575060005460ff166001145b610e625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610583565b6000805460ff191660011790558015610e85576000805461ff0019166101001790555b606580546001600160a01b038086166001600160a01b0319928316179092556066805492851692909116919091179055601e6067556068805460ff19169055610ecc614646565b8015610f12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190614893565b6001600160a01b0316336001600160a01b031614610fcd5760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190614893565b6001600160a01b0316336001600160a01b0316146110e65760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166110f957600080fd5b6001600160a01b038116600081815260696020908152604091829020805460ff191690558151828152600f928101929092526e1c995b5bdd9955da1a5d195b1a5cdd608a1b60608301528101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781906080015b60405180910390a150565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614893565b6001600160a01b0316336001600160a01b0316146112305760405162461bcd60e51b81526004016105839061509f565b6068805460ff8082161560ff1990921682179092556040519116151581527fb129566a7007764ad2d20cd94d30a9e576d12e604df8470368c973f8759e9b31906020015b60405180910390a1565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156112cc57600080fd5b505afa1580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190614893565b6001600160a01b0316336001600160a01b0316146113345760405162461bcd60e51b81526004016105839061509f565b610672614675565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561138a57600080fd5b505afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190614893565b6001600160a01b0316336001600160a01b0316146113f25760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166114375760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610583565b606880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b336000908152606b602052604090205460ff166114ae5760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b6044820152606401610583565b60005b838110156105ac57606560009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190614893565b6001600160a01b031663dd2f3c0534878785818110611560576115606154e0565b9050602002013586866040518563ffffffff1660e01b8152600401611587939291906151f4565b6000604051808303818588803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050505080806115c490615499565b9150506114b1565b60685460ff1615611606573360009081526069602052604090205460ff166116065760405162461bcd60e51b81526004016105839061502c565b61160e613a71565b606554604051632e21e28b60e21b81526000916001600160a01b03169063b8878a2c9061164390339087908790600401614f8d565b6101806040518083038186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169491906149fd565b9050606754816101400151436116aa9190615482565b10156116c85760405162461bcd60e51b815260040161058390615004565b60655461016082015160608301516001600160a01b0390921691638b83351a91839133916116f591615429565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505060655460405163b4b0f56760e01b81526001600160a01b03909116925063b4b0f567915061179090339087908790600401614f8d565b600060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b50506040805186815260208101869052428183015290513393507fd8407011189bc1f0b9b1055d7f799e1bf76a390e25ae3bea65dd68b1d8364e8692509081900360600190a2505050565b60685460ff1615611843573360009081526069602052604090205460ff166118435760405162461bcd60e51b81526004016105839061502c565b61184b613a71565b6118588585858585613d23565b5050505050565b336000908152606b602052604090205460ff166118ae5760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b6044820152606401610583565b606554604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156118f457600080fd5b505af1158015611858573d6000803e3d6000fd5b60685460ff1615611942573360009081526069602052604090205460ff166119425760405162461bcd60e51b81526004016105839061502c565b61194a613a71565b606554604051632e21e28b60e21b81526000916001600160a01b03169063b8878a2c9061197f9033908b908b90600401614f8d565b6101806040518083038186803b15801561199857600080fd5b505afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d091906149fd565b9050606754816101400151436119e69190615482565b1015611a045760405162461bcd60e51b815260040161058390615004565b821580611a2157508060800151611a1d57828511611a21565b8285105b611a585760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610583565b811580611a7557508060800151611a7157818510611a75565b8185115b611aac5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610583565b6101008101859052610120810184905260c0810183905260e0810182905260655460405163574564a760e11b81526001600160a01b039091169063ae8ac94e90611afa9084906004016150c1565b600060405180830381600087803b158015611b1457600080fd5b505af1158015611b28573d6000803e3d6000fd5b5050604080518a8152602081018a905290810188905260608101869052608081018590524260a08201523392507f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e890915060c00160405180910390a250505050505050565b60685460009060ff1615611bc9573360009081526069602052604090205460ff16611bc95760405162461bcd60e51b81526004016105839061502c565b611bd1613a71565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611c1657600080fd5b505afa158015611c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4e9190614893565b6065546040516351d407ff60e11b81529192506000916001600160a01b039091169063a3a80ffe90611c889033908d908d90600401614f8d565b6101606040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614b7f565b606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590611d139033908e908e90600401614f8d565b60a06040518083038186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190614aa5565b9050806060015115611dae5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610583565b60008260e0015111611dd25760405162461bcd60e51b815260040161058390614fe2565b6066548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015611e5757600080fd5b505afa158015611e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8f9190614c35565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490611ec0908e90600490810161529b565b602060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f129190614c35565b9450836001600160a01b031663cbe91bd986604051806101000160405280336001600160a01b031681526020018f81526020018e81526020018d6001811115611f5d57611f5d6154ca565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401611f9d9291906152bf565b600060405180830381600087803b158015611fb757600080fd5b505af1158015611fcb573d6000803e3d6000fd5b50505050611fe4826000015184606001518b8b856146b2565b606085015260e08401819052158015906120f35750836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190614893565b6001600160a01b03166359a992d084602001516040518263ffffffff1660e01b815260040161209b91815260200190565b60206040518083038186803b1580156120b357600080fd5b505afa1580156120c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120eb9190614c35565b8360e0015110155b80156121f45750836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561213357600080fd5b505afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190614893565b6001600160a01b031663281b693c84602001516040518263ffffffff1660e01b815260040161219c91815260200190565b60206040518083038186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ec9190614c35565b8360e0015111155b6122355760405162461bcd60e51b815260206004820152601260248201527113115591549051d157d25390d3d4949150d560721b6044820152606401610583565b608082015160405133917f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc113391612276918f918f918f918a9189914290615375565b60405180910390a260655460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b11906122ae9086906004016151bf565b600060405180830381600087803b1580156122c857600080fd5b505af11580156122dc573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038716925063dd2f3c05915034906123129089908c908c906004016151f4565b6000604051808303818588803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050505050505050509695505050505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d89190614893565b6001600160a01b0316336001600160a01b0316146124085760405162461bcd60e51b81526004016105839061509f565b600081116124425760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610583565b606781905560408051818152601391810191909152726c696d69744f726465727354696d656c6f636b60681b6060820152602081018290527f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9060800161116f565b60685460ff16156124de573360009081526069602052604090205460ff166124de5760405162461bcd60e51b81526004016105839061502c565b6124e6613a71565b610f12838383613ab7565b60685460009060ff161561252e573360009081526069602052604090205460ff1661252e5760405162461bcd60e51b81526004016105839061502c565b612536613a71565b60685460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114612588576040519150601f19603f3d011682016040523d82523d6000602084013e61258d565b606091505b50509050806125d75760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610583565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe9061260c9033908b908b90600401614f8d565b6101606040518083038186803b15801561262557600080fd5b505afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265d9190614b7f565b60e00151606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d59061269b9033908c908c90600401614f8d565b60a06040518083038186803b1580156126b357600080fd5b505afa1580156126c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126eb9190614aa5565b606001519050606560009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561273f57600080fd5b505afa158015612753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127779190614c35565b60655460405163f7b3c6fd60e01b81523360048201526001600160a01b039091169063f7b3c6fd9060240160206040518083038186803b1580156127ba57600080fd5b505afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f29190614c35565b106128345760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610583565b80156128795760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610583565b600082116128995760405162461bcd60e51b815260040161058390614fe2565b606560009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e757600080fd5b505afa1580156128fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291f9190614893565b6001600160a01b031663c0a027f48960016040518363ffffffff1660e01b815260040161294d92919061529b565b602060405180830381600087803b15801561296757600080fd5b505af115801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190614c35565b606554604080516101e081018252336080820190815260a082018d905260c082018c905260e082018b90526000610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c0830181905290825260208201819052818301819052606082018190529151631b026ffd60e31b81529397506001600160a01b039092169263d8137fe892612a4d929091899190600401615174565b600060405180830381600087803b158015612a6757600080fd5b505af1158015612a7b573d6000803e3d6000fd5b5050604080518b8152600060208201529081018790524260608201523392507f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf6491506080015b60405180910390a2505050949350505050565b60685460009060ff1615612b11573360009081526069602052604090205460ff16612b115760405162461bcd60e51b81526004016105839061502c565b612b19613a71565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015612b5e57600080fd5b505afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b969190614893565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd357600080fd5b505afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190614893565b6068546040519192506000916101009091046001600160a01b03169034908381818185875af1925050503d8060008114612c61576040519150601f19603f3d011682016040523d82523d6000602084013e612c66565b606091505b5050905080612cb05760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610583565b606560009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015612cfe57600080fd5b505afa158015612d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d369190614c35565b60655460405163f7b3c6fd60e01b81523360048201526001600160a01b039091169063f7b3c6fd9060240160206040518083038186803b158015612d7957600080fd5b505afa158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614c35565b10612df35760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610583565b606560009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e4157600080fd5b505afa158015612e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e799190614c35565b606554604051634bf3ccad60e11b815233600482015260208b013560248201526001600160a01b03909116906397e7995a9060440160206040518083038186803b158015612ec657600080fd5b505afa158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe9190614c35565b606554604051639c8912f160e01b815233600482015260208c013560248201526001600160a01b0390911690639c8912f19060440160206040518083038186803b158015612f4b57600080fd5b505afa158015612f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f839190614c35565b6065546040516307218dad60e21b815233600482015260208d013560248201526001600160a01b0390911690631c8636b49060440160206040518083038186803b158015612fd057600080fd5b505afa158015612fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130089190614c35565b6130129190615429565b61301c9190615429565b1061305f5760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610583565b60405163238cd23f60e01b8152602089013560048201526001600160a01b0383169063238cd23f9060240160206040518083038186803b1580156130a257600080fd5b505afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190614c35565b6130ec60808a013560e08b013561475e565b101561312a5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610583565b60008860e001351180156131bc575060405163059a992d60e41b8152602089013560048201526001600160a01b038316906359a992d09060240160206040518083038186803b15801561317c57600080fd5b505afa158015613190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b49190614c35565b8860e0013510155b80156132465750604051630a06da4f60e21b8152602089013560048201526001600160a01b0383169063281b693c9060240160206040518083038186803b15801561320657600080fd5b505afa15801561321a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323e9190614c35565b8860e0013511155b6132875760405162461bcd60e51b815260206004820152601260248201527113115591549051d157d25390d3d4949150d560721b6044820152606401610583565b61010088013515806132c657506132a460e0890160c08a01614943565b6132b9578760a00135886101000135106132c6565b8760a00135886101000135115b6132fd5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610583565b610120880135158061333c575061331a60e0890160c08a01614943565b61332f578760a001358861012001351161333c565b8760a00135886101200135105b6133735760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610583565b6000876002811115613387576133876154ca565b146136ba576065546001600160a01b0316638b83351a33826133ad8960808e0135615429565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133fc57600080fd5b505af1158015613410573d6000803e3d6000fd5b505060655460405163226a27ad60e11b815233600482015260208c01356024820152600093506001600160a01b0390911691506344d44f5a9060440160206040518083038186803b15801561346457600080fd5b505afa158015613478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349c9190614c35565b606554604080516101808101825233815260208d810135908201529081018390526080808d013560608301529293506001600160a01b039091169163fdb153e2919081016134f060e08e0160c08f01614943565b151581526020018c60e0013581526020018c610100013581526020018c610120013581526020018c60a0013581526020018a8152602001438152602001898152506040518263ffffffff1660e01b815260040161354d91906150c1565b600060405180830381600087803b15801561356757600080fd5b505af115801561357b573d6000803e3d6000fd5b50505050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156135b857600080fd5b505afa1580156135cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f09190614893565b6001600160a01b031663ec570610338b60200135848c6040518563ffffffff1660e01b81526004016136259493929190614fae565b600060405180830381600087803b15801561363f57600080fd5b505af1158015613653573d6000803e3d6000fd5b503392507f8c47a168abd9fd3b41ee8a948bb081b7957747038e88fe050f7bc017e905656091505060208b01358361369160e08e0160c08f01614943565b8d60a001358b8e8e6040516136ac9796959493929190615331565b60405180910390a250613918565b6065546040516345c19a8d60e11b81523360048201526001600160a01b039091166024820181905260808a0135604483015290638b83351a90606401600060405180830381600087803b15801561371057600080fd5b505af1158015613724573d6000803e3d6000fd5b505060405163302809fd60e21b81526001600160a01b038616925063c0a027f4915061375b9060208c01359060009060040161529b565b602060405180830381600087803b15801561377557600080fd5b505af1158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190614c35565b9350606560009054906101000a90046001600160a01b03166001600160a01b031663d8137fe86040518060800160405280604051806101600160405280336001600160a01b031681526020018d60200135815260200160008152602001600081526020018d608001358152602001600081526020018d60c00160208101906138359190614943565b151581526020018d60e0013581526020018d610100013581526020018d6101200135815260200160008152508152602001600081526020018b60a001358152602001898152508660016040518463ffffffff1660e01b815260040161389c93929190615174565b600060405180830381600087803b1580156138b657600080fd5b505af11580156138ca573d6000803e3d6000fd5b5050604080516020808d013582526001908201529081018790524260608201523392507f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649150608001612ac1565b505050949350505050565b606560009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561397157600080fd5b505afa158015613985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a99190614893565b6001600160a01b0316336001600160a01b0316146139d95760405162461bcd60e51b81526004016105839061509f565b6001600160a01b0381166139ec57600080fd5b6001600160a01b03811660009081526069602052604090819020805460ff19166001179055517f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee444227819061116f9083906040808252600c908201526b18591915da1a5d195b1a5cdd60a21b60608201526001600160a01b0391909116602082015260800190565b60335460ff16156106725760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610583565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90613aec90339088908890600401614f8d565b6101606040518083038186803b158015613b0557600080fd5b505afa158015613b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3d9190614b7f565b60e00151606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590613b7b90339089908990600401614f8d565b60a06040518083038186803b158015613b9357600080fd5b505afa158015613ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bcb9190614aa5565b60200151905060008211613bf15760405162461bcd60e51b815260040161058390614fe2565b606754613bfe8243615482565b1015613c1c5760405162461bcd60e51b815260040161058390615004565b6001600160ff1b038310613c615760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610583565b606554604051637fdb96f360e01b81523360048201526024810187905260448101869052606481018590526001600160a01b0390911690637fdb96f390608401600060405180830381600087803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b505060408051888152602081018890529081018690524260608201523392507f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e8915060800160405180910390a25050505050565b6065546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90613d589033908a908a90600401614f8d565b6101606040518083038186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da99190614b7f565b606554604051638c8ff1d560e01b81529192506000916001600160a01b0390911690638c8ff1d590613de39033908b908b90600401614f8d565b60a06040518083038186803b158015613dfb57600080fd5b505afa158015613e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e339190614aa5565b60400151905060008260e0015111613e5d5760405162461bcd60e51b815260040161058390614fe2565b6001600160ff1b038510613ea25760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610583565b6000613ecf8360e00151606460508660a00151613ebf9190615463565b613ec99190615441565b90614781565b9050851580613f0e57508260c00151613efa57808360a00151613ef29190615429565b861115613f0e565b808360a00151613f0a9190615482565b8610155b613f475760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610583565b606754613f548343615482565b1015613f725760405162461bcd60e51b815260040161058390615004565b60655460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613fb757600080fd5b505afa158015613fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fef9190614893565b90508615806140e95750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561403257600080fd5b505afa158015614046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406a9190614893565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b815260040161409791815260200190565b60206040518083038186803b1580156140af57600080fd5b505afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e79190614960565b155b156141ae5760655460405163a354418160e01b8152336004820152602481018b9052604481018a9052606481018990526001600160a01b039091169063a354418190608401600060405180830381600087803b15801561414857600080fd5b505af115801561415c573d6000803e3d6000fd5b5050604080518c8152602081018c90529081018a90524260608201523392507f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de915060800160405180910390a261451e565b60006141cb8560e00151866060015161475e90919063ffffffff16565b6065548651602088015160c0890151604051632a9a966760e01b81526001600160a01b0393841660048201526024810192909252600185811c6044840152600060648401526084830152151560a48201529293501690632a9a96679060c401602060405180830381600087803b15801561424457600080fd5b505af1158015614258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427c9190614c35565b8560600181815161428d9190615482565b90525060655460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b11906142c09088906004016151bf565b600060405180830381600087803b1580156142da57600080fd5b505af11580156142ee573d6000803e3d6000fd5b505060405163302809fd60e21b8152600092506001600160a01b038516915063c0a027f490614324908e9060059060040161529b565b602060405180830381600087803b15801561433e57600080fd5b505af1158015614352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143769190614c35565b9050826001600160a01b031663b8213bfa826040518060c00160405280336001600160a01b031681526020018f81526020018e81526020018a60a0015181526020018a60c00151151581526020018d8152506040518363ffffffff1660e01b8152600401614435929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b15801561444f57600080fd5b505af1158015614463573d6000803e3d6000fd5b5050604080518e8152602081018e90529081018c9052606081018490524260808201523392507fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be915060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0384169063dd2f3c059034906144e99085908d908d906004016151f4565b6000604051808303818588803b15801561450257600080fd5b505af1158015614516573d6000803e3d6000fd5b505050505050505b505050505050505050565b614531614793565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611274565b6066548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561460857600080fd5b505afa15801561461c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146409190614c35565b92915050565b600054610100900460ff1661466d5760405162461bcd60e51b815260040161058390615054565b6106726147dc565b61467d613a71565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861455e3390565b600080808560018111156146c8576146c86154ca565b141561470657826146d98588615429565b6146e39190615482565b9050806146f56402540be40089615463565b6146ff9190615441565b9150614754565b600185600181111561471a5761471a6154ca565b1415614754578261472b8588615482565b6147359190615482565b9050806147476402540be40089615463565b6147519190615441565b91505b9550959350505050565b60006402540be4006147708385615463565b61477a9190615441565b9392505050565b6000816147706402540be40085615463565b60335460ff166106725760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610583565b600054610100900460ff166148035760405162461bcd60e51b815260040161058390615054565b6033805460ff19169055565b805161481a816154f6565b919050565b60008083601f84011261483157600080fd5b50813567ffffffffffffffff81111561484957600080fd5b6020830191508360208260051b850101111561486457600080fd5b9250929050565b805161481a8161550e565b60006020828403121561488857600080fd5b813561477a816154f6565b6000602082840312156148a557600080fd5b815161477a816154f6565b600080604083850312156148c357600080fd5b82356148ce816154f6565b915060208301356148de816154f6565b809150509250929050565b600080604083850312156148fc57600080fd5b8235614907816154f6565b915060208301356148de8161550e565b6000806040838503121561492a57600080fd5b8235614935816154f6565b946020939093013593505050565b60006020828403121561495557600080fd5b813561477a8161550e565b60006020828403121561497257600080fd5b815161477a8161550e565b60008060008060008060a0878903121561499657600080fd5b8635600481106149a557600080fd5b955060208701356149b5816154f6565b94506040870135935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b6149eb89828a0161481f565b979a9699509497509295939492505050565b60006101808284031215614a1057600080fd5b614a186153bf565b614a218361480f565b8152602083015160208201526040830151604082015260608301516060820152614a4d6080840161486b565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a08284031215614ab757600080fd5b60405160a0810181811067ffffffffffffffff82111715614ae857634e487b7160e01b600052604160045260246000fd5b80604052508251815260208301516020820152604083015160408201526060830151614b138161550e565b60608201526080928301519281019290925250919050565b6000806000808486036101c0811215614b4357600080fd5b61016080821215614b5357600080fd5b869550850135905060038110614b6857600080fd5b9396939550505050610180820135916101a0013590565b60006101608284031215614b9257600080fd5b614b9a6153f7565b614ba38361480f565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152614be360c0840161486b565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b600060208284031215614c2e57600080fd5b5035919050565b600060208284031215614c4757600080fd5b5051919050565b600080600080600060608688031215614c6657600080fd5b85359450602086013567ffffffffffffffff80821115614c8557600080fd5b614c9189838a0161481f565b90965094506040880135915080821115614caa57600080fd5b50614cb78882890161481f565b969995985093965092949392505050565b60008060408385031215614cdb57600080fd5b50508035926020909101359150565b60008060008060008060a08789031215614d0357600080fd5b8635955060208701359450604087013560028110614d2057600080fd5b935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b600080600060608486031215614d5857600080fd5b505081359360208301359350604090920135919050565b600080600080600060808688031215614d8757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614db357600080fd5b614cb78882890161481f565b60008060008060808587031215614dd557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060a08789031215614e0a57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156149df57600080fd5b60008060008060008060c08789031215614e5657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60038110614eb957614eb96154ca565b9052565b60028110614eb957614eb96154ca565b80516001600160a01b031682526020808201519083015260408082015190830152606081015160048110614f0357614f036154ca565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151614f6060c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0385168152602081018490526040810183905260808101614fd96060830184614ea9565b95945050505050565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600e908201526d57484954454c4953545f4f4e4c5960901b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615104608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016151678285614ecd565b8260808301529392505050565b600061020082019050615188828651614f0e565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b61016081016146408284614f0e565b60a081016151dc8285614ecd565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561528d57868503605f190183528135368a9003601e1901811261524457600080fd5b8901803567ffffffffffffffff81111561525d57600080fd5b8036038b131561526c57600080fd5b6152798782888501614e80565b96505050918301919083019060010161521e565b509298975050505050505050565b82815260408101600683106152b2576152b26154ca565b8260208301529392505050565b60006101208201905083825260018060a01b038351166020830152602083015160408301526040830151606083015260608301516153006080840182614ebd565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b600060e082019050888252876020830152861515604083015285606083015284608083015261536360a0830185614ea9565b8260c083015298975050505050505050565b8781526020810187905261022081016153916040830188614ebd565b61539e6060830187614f0e565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff811182821017156153f157634e487b7160e01b600052604160045260246000fd5b60405290565b604051610160810167ffffffffffffffff811182821017156153f157634e487b7160e01b600052604160045260246000fd5b6000821982111561543c5761543c6154b4565b500190565b60008261545e57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561547d5761547d6154b4565b500290565b600082821015615494576154946154b4565b500390565b60006000198214156154ad576154ad6154b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461550b57600080fd5b50565b801515811461550b57600080fdfea26469706673582212208d62c35790f563fdd118cc146dac09395f1093d5b3fe133575a5ae585f1a569264736f6c63430008070033","sourceMap":"358:24538:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:63;;;;;;;;;;-1:-1:-1;800:63:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;33047:25:150;;;33035:2;33020:18;800:63:108;;;;;;;;618:31;;;;;;;;;;;;;;;;582:27;;;;;;;;;;-1:-1:-1;582:27:108;;;;-1:-1:-1;;;;;582:27:108;;;;;;-1:-1:-1;;;;;15300:32:150;;;;15282:51;;15270:2;15255:18;582:27:108;15136:203:150;16383:331:108;;;;;;:::i;:::-;;:::i;:::-;;544:31;;;;;;;;;;-1:-1:-1;544:31:108;;;;-1:-1:-1;;;;;544:31:108;;;5179:65;;;;;;;;;;;;;:::i;18019:2078::-;;;;;;:::i;:::-;;:::i;3653:276::-;;;;;;;;;;-1:-1:-1;3653:276:108;;;;;:::i;:::-;;:::i;711:23::-;;;;;;;;;;-1:-1:-1;711:23:108;;;;;;;-1:-1:-1;;;;;711:23:108;;;1858:84:25;;;;;;;;;;-1:-1:-1;1928:7:25;;;;1858:84;;;19521:14:150;;19514:22;19496:41;;19484:2;19469:18;1858:84:25;19356:187:150;656:25:108;;;;;;;;;;-1:-1:-1;656:25:108;;;;;;;;5457:186;;;;;;;;;;-1:-1:-1;5457:186:108;;;;;:::i;:::-;;:::i;870:42::-;;;;;;;;;;-1:-1:-1;870:42:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;4776:216;;;;;;;;;;-1:-1:-1;4776:216:108;;;;;:::i;:::-;;:::i;5316:133::-;;;;;;;;;;;;;:::i;5054:61::-;;;;;;;;;;;;;:::i;5651:167::-;;;;;;;;;;-1:-1:-1;5651:167:108;;;;;:::i;:::-;;:::i;13865:308::-;;;;;;:::i;:::-;;:::i;15480:557::-;;;;;;;;;;-1:-1:-1;15480:557:108;;;;;:::i;:::-;;:::i;743:50::-;;;;;;;;;;-1:-1:-1;743:50:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;17394:256;;;;;;:::i;:::-;;:::i;20198:134::-;;;;;;;;;;-1:-1:-1;20198:134:108;;;;;:::i;:::-;;:::i;14482:827::-;;;;;;;;;;-1:-1:-1;14482:827:108;;;;;:::i;:::-;;:::i;6174:2014::-;;;;;;:::i;:::-;;:::i;4074:214::-;;;;;;;;;;-1:-1:-1;4074:214:108;;;;;:::i;:::-;;:::i;16952:154::-;;;;;;;;;;-1:-1:-1;16952:154:108;;;;;:::i;:::-;;:::i;12294:1324::-;;;;;;:::i;:::-;;:::i;8483:3569::-;;;;;;:::i;:::-;;:::i;4423:209::-;;;;;;;;;;-1:-1:-1;4423:209:108;;;;;:::i;:::-;;:::i;16383:331::-;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;;;;;;;;;1482:19:25::1;:17;:19::i;:::-;16604:37:108::2;16614:10;16626:6;16634;16604:9;:37::i;:::-;16652:54;16662:10;16674:6;16682;16690:15;;16652:9;:54::i;:::-;16383:331:::0;;;;;;:::o;5179:65::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;5226:10:::1;:8;:10::i;:::-;5179:65::o:0;18019:2078::-;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;18296:31:108::2;18282:10;:45;;;;;;;;:::i;:::-;;18278:843;;;18388:8;::::0;:26:::2;::::0;;-1:-1:-1;;;18388:26:108;;;;18344:24:::2;::::0;-1:-1:-1;;;;;18388:8:108::2;::::0;-1:-1:-1;;18388:26:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18371:57:108::2;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18463:8;::::0;:55:::2;::::0;-1:-1:-1;;;18463:55:108;;-1:-1:-1;;;;;16512:32:150;;;18463:55:108::2;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;18344:86:108;;-1:-1:-1;18463:8:108;::::2;::::0;:26:::2;::::0;16467:18:150;;18463:55:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18455:76;;;::::0;-1:-1:-1;;;18455:76:108;;26920:2:150;18455:76:108::2;::::0;::::2;26902:21:150::0;26959:1;26939:18;;;26932:29;-1:-1:-1;;;26977:18:150;;;26970:38;27025:18;;18455:76:108::2;26718:331:150::0;18455:76:108::2;-1:-1:-1::0;;;;;;18562:23:108;::::2;;::::0;;;:14:::2;:23;::::0;;;;;;;:35;;;;;;;;18601:15:::2;18562:54:::0;;18278:843:::2;;;18682:8;::::0;:48:::2;::::0;-1:-1:-1;;;18682:48:108;;-1:-1:-1;;;;;16512:32:150;;;18682:48:108::2;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;18649:30:108::2;::::0;18682:8:::2;::::0;:19:::2;::::0;16467:18:150;;18682:48:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18649:81;;18768:1;18755;:10;;;:14;18747:35;;;::::0;-1:-1:-1;;;18747:35:108;;21203:2:150;18747:35:108::2;::::0;::::2;21185:21:150::0;21242:1;21222:18;;;21215:29;-1:-1:-1;;;21260:18:150;;;21253:38;21308:18;;18747:35:108::2;21001:331:150::0;18747:35:108::2;18819:29;18805:10;:43;;;;;;;;:::i;:::-;;;:55;;;;18859:1;18852;:4;;;:8;18805:55;18797:73;;;::::0;-1:-1:-1;;;18797:73:108;;26240:2:150;18797:73:108::2;::::0;::::2;26222:21:150::0;26279:1;26259:18;;;26252:29;-1:-1:-1;;;26297:18:150;;;26290:35;26342:18;;18797:73:108::2;26038:328:150::0;18797:73:108::2;18905:30;18891:10;:44;;;;;;;;:::i;:::-;;18887:223;;;18956:13;18972:28;18998:1;18972:25;:28::i;:::-;18956:44;;19027:1;:4;;;19035:1;19027:9;:56;;;;19041:1;:5;;;:41;;19078:1;:4;;;19067:8;:15;19041:41;;;19060:1;:4;;;19049:8;:15;19041:41;19019:75;;;::::0;-1:-1:-1;;;19019:75:108;;24449:2:150;19019:75:108::2;::::0;::::2;24431:21:150::0;24488:1;24468:18;;;24461:29;-1:-1:-1;;;24506:18:150;;;24499:36;24552:18;;19019:75:108::2;24247:329:150::0;19019:75:108::2;18937:173;18887:223;18634:487;18278:843;19163:8;::::0;:26:::2;::::0;;-1:-1:-1;;;19163:26:108;;;;19133:27:::2;::::0;-1:-1:-1;;;;;19163:8:108::2;::::0;-1:-1:-1;;19163:26:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19133:56;;19200:17;19220:10;-1:-1:-1::0;;;;;19220:21:108::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19200:43;;19256:49;19308:129;;;;;;;;19348:7;-1:-1:-1::0;;;;;19308:129:108::2;;;;;19370:10;19308:129;;;;19395:6;19308:129;;;;19416:10;19308:129;;;;;;;;:::i;:::-;::::0;;19256:181;-1:-1:-1;19450:12:108::2;-1:-1:-1::0;;;;;19465:19:108;::::2;;19499:10:::0;19538:31:::2;19524:10:::0;:45;;::::2;;;;;;:::i;:::-;;:160;;19646:38;19524:160;;;19589:37;19524:160;19465:230;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19708:8;::::0;19754:74:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;19754:74:108;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;19450:245;;-1:-1:-1;19708:8:108::2;::::0;:31:::2;::::0;19754:74;;;19817:10;19754:74:::2;::::0;::::2;;;;;;:::i;:::-;;;::::0;19843:7:::2;19708:153;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19874:58:108::2;::::0;-1:-1:-1;;;19874:58:108;;-1:-1:-1;;;;;19874:28:108;::::2;::::0;-1:-1:-1;19874:28:108::2;::::0;-1:-1:-1;19874:58:108::2;::::0;19903:16;;19921:10:::2;::::0;19874:58:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19948:66:108::2;::::0;;38167:25:150;;;38223:2;38208:18;;38201:34;;;19998:15:108::2;38251:18:150::0;;;38244:34;19948:66:108;;-1:-1:-1;;;;;19948:66:108;::::2;::::0;-1:-1:-1;19948:66:108::2;::::0;-1:-1:-1;19948:66:108;;;;38155:2:150;19948:66:108;;::::2;20027:62;::::0;-1:-1:-1;;;20027:62:108;;-1:-1:-1;;;;;20027:18:108;::::2;::::0;-1:-1:-1;;20053:9:108::2;::::0;20027:62:::2;::::0;20064:7;;20073:15;;;;20027:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;18263:1834;;;;18019:2078:::0;;;;;;:::o;3653:276::-;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;;23698:2:150;3325:201:24;;;23680:21:150;23737:2;23717:18;;;23710:30;23776:34;23756:18;;;23749:62;-1:-1:-1;;;23827:18:150;;;23820:44;23881:19;;3325:201:24;23496: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;3744:8:108::1;:37:::0;;-1:-1:-1;;;;;3744:37:108;;::::1;-1:-1:-1::0;;;;;;3744:37:108;;::::1;;::::0;;;3792:9:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3859:2:::1;3837:19;:24:::0;3872:13:::1;:21:::0;;-1:-1:-1;;3872:21:108::1;::::0;;3904:17:::1;:15;:17::i;:::-;3651:14:24::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;20161:36:150;;3721:14:24;;20149:2:150;20134:18;3721:14:24;;;;;;;3647:99;3269:483;3653:276:108;;:::o;5457:186::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;-1:-1:-1;;;;;5545:21:108;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;:35;;-1:-1:-1;;5545:35:108::1;::::0;::::1;;::::0;;::::1;::::0;;;5596:39;;15892:51:150;;;15959:18;;;15952:50;5596:39:108;;::::1;::::0;;;;;;;;::::1;5457:186:::0;;:::o;4776:216::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;-1:-1:-1;;;;;4855:22:108;::::1;4847:31;;;::::0;::::1;;-1:-1:-1::0;;;;;4889:28:108;::::1;4920:5;4889:28:::0;;;:18:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;4889:36:108::1;::::0;;4941:43;;20420:21:150;;;20477:2;20457:18;;;20450:30;;;;-1:-1:-1;;;20511:2:150;20496:18;;20489:45;20586:20;;20579:62;;;;4941:43:108::1;::::0;20566:3:150;20551:19;4941:43:108::1;;;;;;;;4776:216:::0;:::o;5316:133::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;5388:13:::1;::::0;;-1:-1:-1;;5371:30:108;::::1;-1:-1:-1::0;5388:13:108;;::::1;5387:14;5371:30:::0;;::::1;::::0;;;5417:24:::1;::::0;5427:13;;19521:14:150;19514:22;19496:41;;5417:24:108::1;::::0;19484:2:150;19469:18;5417:24:108::1;;;;;;;;5316:133::o:0;5054:61::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;5099:8:::1;:6;:8::i;5651:167::-:0;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;-1:-1:-1;;;;;5739:23:108;::::1;5731:48;;;::::0;-1:-1:-1;;;5731:48:108;;23357:2:150;5731:48:108::1;::::0;::::1;23339:21:150::0;23396:2;23376:18;;;23369:30;-1:-1:-1;;;23415:18:150;;;23408:42;23467:18;;5731:48:108::1;23155:336:150::0;5731:48:108::1;5790:8;:20:::0;;-1:-1:-1;;;;;5790:20:108;;;::::1;;;-1:-1:-1::0;;;;;;5790:20:108;;::::1;::::0;;;::::1;::::0;;5651:167::o;13865:308::-;3347:10;3336:22;;;;:10;:22;;;;;;;;3328:48;;;;-1:-1:-1;;;3328:48:108;;27599:2:150;3328:48:108;;;27581:21:150;27638:2;27618:18;;;27611:30;-1:-1:-1;;;27657:18:150;;;27650:43;27710:18;;3328:48:108;27397:337:150;3328:48:108;14023:6:::1;14019:147;14035:17:::0;;::::1;14019:147;;;14073:8;::::0;:26:::1;::::0;;-1:-1:-1;;;14073:26:108;;;;-1:-1:-1;;;;;14073:8:108;;::::1;::::0;-1:-1:-1;;14073:26:108::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14073:34:108::1;;14115:9;14126:7:::0;;14134:1;14126:10;;::::1;;;;;:::i;:::-;;;;;;;14138:15;;14073:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14054:3;;;;;:::i;:::-;;;;14019:147;;15480:557:::0;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;15630:8:108::2;::::0;:58:::2;::::0;-1:-1:-1;;;15630:58:108;;15657:10:::2;15630:58;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;15588:39:108::2;::::0;-1:-1:-1;;;;;15630:8:108::2;::::0;:26:::2;::::0;16467:18:150;;15630:58:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15588:100;;15733:19;;15722:1;:7;;;15707:12;:22;;;;:::i;:::-;:45;;15699:72;;;::::0;-1:-1:-1;;;15699:72:108;;22669:2:150;15699:72:108::2;::::0;::::2;22651:21:150::0;22708:2;22688:18;;;22681:30;-1:-1:-1;;;22727:18:150;;;22720:44;22781:18;;15699:72:108::2;22467:338:150::0;15699:72:108::2;15784:8;::::0;15854:14:::2;::::0;::::2;::::0;15837::::2;::::0;::::2;::::0;-1:-1:-1;;;;;15784:8:108;;::::2;::::0;:21:::2;::::0;:8;;15825:10:::2;::::0;15837:31:::2;::::0;::::2;:::i;:::-;15784:85;::::0;;-1:-1:-1;15784:85:108;;;-1:-1:-1;;;;;;15784:85:108;;;-1:-1:-1;;;;;15602:15:150;;;15784:85:108::2;::::0;::::2;15584:34:150::0;15654:15;;;;15634:18;;;15627:43;15686:18;;;15679:34;15784:85:108;;15519:18:150;;;;;-1:-1:-1;;15784:85:108;;;;;;;-1:-1:-1;15784:85:108;;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15880:8:108::2;::::0;:65:::2;::::0;-1:-1:-1;;;15880:65:108;;15914:10:::2;15880:65;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;-1:-1:-1;;;;;15880:8:108;;::::2;::::0;-1:-1:-1;;;;16467:18:150;;15880:65:108::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15963:66:108::2;::::0;;38167:25:150;;;38223:2;38208:18;;38201:34;;;16013:15:108::2;38251:18:150::0;;;38244:34;15963:66:108;;15981:10:::2;::::0;-1:-1:-1;15963:66:108::2;::::0;-1:-1:-1;15963:66:108;;;;38155:2:150;15963:66:108;;::::2;15577:460;15480:557:::0;;:::o;17394:256::-;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;17588:54:108::2;17598:10;17610:6;17618;17626:15;;17588:9;:54::i;:::-;17394:256:::0;;;;;:::o;20198:134::-;3347:10;3336:22;;;;:10;:22;;;;;;;;3328:48;;;;-1:-1:-1;;;3328:48:108;;27599:2:150;3328:48:108;;;27581:21:150;27638:2;27618:18;;;27611:30;-1:-1:-1;;;27657:18:150;;;27650:43;27710:18;;3328:48:108;27397:337:150;3328:48:108;20277:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;20277:47:108;;::::1;::::0;::::1;33047:25:150::0;;;-1:-1:-1;;;;;20277:8:108;;::::1;::::0;:42:::1;::::0;33020:18:150;;20277:47:108::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14482:827:::0;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;14744:8:108::2;::::0;:58:::2;::::0;-1:-1:-1;;;14744:58:108;;14771:10:::2;14744:58;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;14702:39:108::2;::::0;-1:-1:-1;;;;;14744:8:108::2;::::0;:26:::2;::::0;16467:18:150;;14744:58:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14702:100;;14847:19;;14836:1;:7;;;14821:12;:22;;;;:::i;:::-;:45;;14813:72;;;::::0;-1:-1:-1;;;14813:72:108;;22669:2:150;14813:72:108::2;::::0;::::2;22651:21:150::0;22708:2;22688:18;;;22681:30;-1:-1:-1;;;22727:18:150;;;22720:44;22781:18;;14813:72:108::2;22467:338:150::0;14813:72:108::2;14906:8:::0;;;:49:::2;;;14919:1;:5;;;:35;;14951:3;14942:6;:12;14919:35;;;14936:3;14927:6;:12;14919:35;14898:70;;;::::0;-1:-1:-1;;;14898:70:108;;24113:2:150;14898:70:108::2;::::0;::::2;24095:21:150::0;24152:1;24132:18;;;24125:29;-1:-1:-1;;;24170:18:150;;;24163:38;24218:18;;14898:70:108::2;23911:331:150::0;14898:70:108::2;14987:8:::0;;;:49:::2;;;15000:1;:5;;;:35;;15032:3;15023:6;:12;15000:35;;;15017:3;15008:6;:12;15000:35;14979:70;;;::::0;-1:-1:-1;;;14979:70:108;;24783:2:150;14979:70:108::2;::::0;::::2;24765:21:150::0;24822:1;24802:18;;;24795:29;-1:-1:-1;;;24840:18:150;;;24833:38;24888:18;;14979:70:108::2;24581:331:150::0;14979:70:108::2;15062:7;::::0;::::2;:16:::0;;;15089:11:::2;::::0;::::2;:24:::0;;;15124:4:::2;::::0;::::2;:10:::0;;;15145:4:::2;::::0;::::2;:10:::0;;;15168:8:::2;::::0;-1:-1:-1;15168:32:108;-1:-1:-1;;;15168:32:108;;-1:-1:-1;;;;;15168:8:108;;::::2;::::0;:29:::2;::::0;:32:::2;::::0;15062:7;;15168:32:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15218:83:108::2;::::0;;39440:25:150;;;39496:2;39481:18;;39474:34;;;39524:18;;;39517:34;;;39582:2;39567:18;;39560:34;;;39625:3;39610:19;;39603:35;;;15285:15:108::2;39669:3:150::0;39654:19;;39647:35;15235:10:108::2;::::0;-1:-1:-1;15218:83:108::2;::::0;-1:-1:-1;39427:3:150;39412:19;15218:83:108::2;;;;;;;14691:618;14482:827:::0;;;;;;:::o;6174:2014::-;3193:13;;6413:12;;3193:13;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;6467:8:108::2;::::0;:26:::2;::::0;;-1:-1:-1;;;6467:26:108;;;;6437:27:::2;::::0;-1:-1:-1;;;;;6467:8:108::2;::::0;-1:-1:-1;;6467:26:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6539:8;::::0;:51:::2;::::0;-1:-1:-1;;;6539:51:108;;6559:10:::2;6539:51;::::0;::::2;16494::150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;6437:56:108;;-1:-1:-1;6506:30:108::2;::::0;-1:-1:-1;;;;;6539:8:108;;::::2;::::0;:19:::2;::::0;16467:18:150;;6539:51:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6638:8;::::0;:55:::2;::::0;-1:-1:-1;;;6638:55:108;;6662:10:::2;6638:55;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;6506:84:108;;-1:-1:-1;6601:34:108::2;::::0;-1:-1:-1;;;;;6638:8:108;;::::2;::::0;-1:-1:-1;;16467:18:150;;6638:55:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6601:92;;6715:1;:19;;;6714:20;6706:53;;;::::0;-1:-1:-1;;;6706:53:108;;28692:2:150;6706:53:108::2;::::0;::::2;28674:21:150::0;28731:2;28711:18;;;28704:30;-1:-1:-1;;;28750:18:150;;;28743:50;28810:18;;6706:53:108::2;28490:344:150::0;6706:53:108::2;6791:1;6778;:10;;;:14;6770:35;;;::::0;-1:-1:-1;;;6770:35:108;;21203:2:150;6770:35:108::2;::::0;::::2;21185:21:150::0;21242:1;21222:18;;;21215:29;-1:-1:-1;;;21260:18:150;;;21253:38;21308:18;;6770:35:108::2;21001:331:150::0;6770:35:108::2;6836:9;::::0;6880:8;;6903:11:::2;::::0;::::2;::::0;6929:7:::2;::::0;;::::2;::::0;6951:5:::2;::::0;::::2;::::0;6971:17:::2;::::0;::::2;::::0;7003:10:::2;::::0;::::2;::::0;6836:188;;-1:-1:-1;;;6836:188:108;;-1:-1:-1;;;;;17537:32:150;;;6836:188:108::2;::::0;::::2;17519:51:150::0;17586:18;;;17579:34;;;;17629:18;;;17622:34;;;;17699:14;17692:22;17672:18;;;17665:50;17731:19;;;17724:35;17775:19;;;17768:35;6818:15:108::2;::::0;6836:9;;;::::2;::::0;:29:::2;::::0;17491:19:150;;6836:188:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7047:73;::::0;-1:-1:-1;;;7047:73:108;;6818:206;;-1:-1:-1;;;;;;7047:19:108;::::2;::::0;::::2;::::0;:73:::2;::::0;7067:10;;7079:40:::2;::::0;7047:73;::::2;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7208:126;::::0;;::::2;::::0;::::2;::::0;;7245:10:::2;7208:126:::0;;::::2;::::0;::::2;::::0;;;;;;;;;7037:83;;-1:-1:-1;;;;;;7131:40:108;::::2;::::0;::::2;::::0;7037:83;;7208:126;;;7277:5;-1:-1:-1;7208:126:108;::::2;;;;;;:::i;:::-;;;;;7284:7;7208:126;;;;7293:1;:16;;;7208:126;;;;7311:10;7208:126;;;;7323:1;:10;;;7208:126;;::::0;7131:214:::2;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7392:164;7428:1;:18;;;7461:1;:17;;;7493:5;7513:7;7535:10;7392:21;:164::i;:::-;7371:17;::::0;::::2;7358:198:::0;7359:10:::2;::::0;::::2;7358:198:::0;;;7589:14;;;;:103:::2;;;7638:10;-1:-1:-1::0;;;;;7638:23:108::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7680:11;::::0;::::2;::::0;7638:54:::2;::::0;-1:-1:-1;;;7638:54:108;;::::2;::::0;::::2;33047:25:150::0;;;;-1:-1:-1;;;;;7638:41:108;;;::::2;::::0;::::2;::::0;33020:18:150;;7638:54:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7624:1;:10;;;:68;;7589:103;:192;;;;;7727:10;-1:-1:-1::0;;;;;7727:23:108::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7769:11;::::0;::::2;::::0;7727:54:::2;::::0;-1:-1:-1;;;7727:54:108;;::::2;::::0;::::2;33047:25:150::0;;;;-1:-1:-1;;;;;7727:41:108;;;::::2;::::0;::::2;::::0;33020:18:150;;7727:54:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7713:1;:10;;;:68;;7589:192;7567:260;;;::::0;-1:-1:-1;;;7567:260:108;;22322:2:150;7567:260:108::2;::::0;::::2;22304:21:150::0;22361:2;22341:18;;;22334:30;-1:-1:-1;;;22380:18:150;;;22373:48;22438:18;;7567:260:108::2;22120:342:150::0;7567:260:108::2;8011:16;::::0;::::2;::::0;7845:214:::2;::::0;7873:10:::2;::::0;7845:214:::2;::::0;::::2;::::0;7899:10;;7925:6;;7947:5;;7968:1;;7985:10;;8043:15:::2;::::0;7845:214:::2;:::i;:::-;;;;;;;;8084:8;::::0;:23:::2;::::0;-1:-1:-1;;;8084:23:108;;-1:-1:-1;;;;;8084:8:108;;::::2;::::0;-1:-1:-1;;8084:23:108::2;::::0;8105:1;;8084:23:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;8118:62:108::2;::::0;-1:-1:-1;;;8118:62:108;;-1:-1:-1;;;;;8118:18:108;::::2;::::0;-1:-1:-1;;;;8144:9:108::2;::::0;8118:62:::2;::::0;8155:7;;8164:15;;;;8118:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;6426:1762;;;;6174:2014:::0;;;;;;;;:::o;4074:214::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;4166:1:::1;4156:7;:11;4148:31;;;::::0;-1:-1:-1;;;4148:31:108;;30059:2:150;4148:31:108::1;::::0;::::1;30041:21:150::0;30098:1;30078:18;;;30071:29;-1:-1:-1;;;30116:18:150;;;30109:37;30163:18;;4148:31:108::1;29857:330:150::0;4148:31:108::1;4190:19;:29:::0;;;4235:45:::1;::::0;;25828:21:150;;;25885:2;25865:18;;;25858:30;;;;-1:-1:-1;;;25919:2:150;25904:18;;25897:49;26013:4;25998:20;;25991:36;;;4235:45:108::1;::::0;25978:3:150;25963:19;4235:45:108::1;25616:417:150::0;16952:154:108;3193:13;;;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;17061:37:108::2;17071:10;17083:6;17091;17061:9;:37::i;12294:1324::-:0;3193:13;;12507:12;;3193:13;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;12557:8:108::2;::::0;12549:44:::2;::::0;12534:9:::2;::::0;12557:8:::2;::::0;::::2;-1:-1:-1::0;;;;;12557:8:108::2;::::0;12579:9:::2;::::0;12534;12549:44;12534:9;12549:44;12579:9;12557:8;12549:44:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12533:60;;;12612:4;12604:39;;;::::0;-1:-1:-1;;;12604:39:108;;25467:2:150;12604:39:108::2;::::0;::::2;25449:21:150::0;25506:2;25486:18;;;25479:30;-1:-1:-1;;;25525:18:150;;;25518:52;25587:18;;12604:39:108::2;25265:346:150::0;12604:39:108::2;12672:8;::::0;:51:::2;::::0;-1:-1:-1;;;12672:51:108;;12692:10:::2;12672:51;::::0;::::2;16494::150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;12656:13:108::2;::::0;-1:-1:-1;;;;;12672:8:108::2;::::0;:19:::2;::::0;16467:18:150;;12672:51:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;::::0;12768:8:::2;::::0;:55:::2;::::0;-1:-1:-1;;;12768:55:108;;12792:10:::2;12768:55;::::0;::::2;16494:51:150::0;16561:18;;;16554:34;;;16604:18;;;16597:34;;;12672:60:108;;-1:-1:-1;12743:22:108::2;::::0;-1:-1:-1;;;;;12768:8:108;;::::2;::::0;-1:-1:-1;;16467:18:150;;12768:55:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;::::0;12906:8:::2;::::0;:33:::2;::::0;;-1:-1:-1;;;12906:33:108;;;;12768:73;;-1:-1:-1;;;;;;12906:8:108;;::::2;::::0;-1:-1:-1;;12906:33:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:33;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12862:8;::::0;:41:::2;::::0;-1:-1:-1;;;12862:41:108;;12892:10:::2;12862:41;::::0;::::2;15282:51:150::0;-1:-1:-1;;;;;12862:8:108;;::::2;::::0;:29:::2;::::0;15255:18:150;;12862:41:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;12854:108;;;::::0;-1:-1:-1;;;12854:108:108;;26573:2:150;12854:108:108::2;::::0;::::2;26555:21:150::0;26612:2;26592:18;;;26585:30;-1:-1:-1;;;26631:18:150;;;26624:48;26689:18;;12854:108:108::2;26371:342:150::0;12854:108:108::2;12982:17;12981:18;12973:51;;;::::0;-1:-1:-1;;;12973:51:108;;28692:2:150;12973:51:108::2;::::0;::::2;28674:21:150::0;28731:2;28711:18;;;28704:30;-1:-1:-1;;;28750:18:150;;;28743:50;28810:18;;12973:51:108::2;28490:344:150::0;12973:51:108::2;13054:1;13043:8;:12;13035:33;;;::::0;-1:-1:-1;;;13035:33:108;;21203:2:150;13035:33:108::2;::::0;::::2;21185:21:150::0;21242:1;21222:18;;;21215:29;-1:-1:-1;;;21260:18:150;;;21253:38;21308:18;;13035:33:108::2;21001:331:150::0;13035:33:108::2;13091:8;::::0;:26:::2;::::0;;-1:-1:-1;;;13091:26:108;;;;-1:-1:-1;;;;;13091:8:108;;::::2;::::0;-1:-1:-1;;13091:26:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;::::0;-1:-1:-1;;;13091:88:108;;-1:-1:-1;;;;;13091:35:108;;;::::2;::::0;::::2;::::0;:88:::2;::::0;13127:10;;-1:-1:-1;;13091:88:108::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13192:8;::::0;13239:215:::2;::::0;;13292:87;;;;;13314:10:::2;13239:215;::::0;::::2;13292:87:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13192:8:108::2;13292:87:::0;;;;;;;;;;;;;;;;;::::2;::::0;;;;;;;;;;;;;;;;;;;;;;;13239:215;;;13292:87:::2;13239:215:::0;::::2;::::0;;;;;;;;;-1:-1:-1;13239:215:108;;;;;13192:315;;-1:-1:-1;;;13192:315:108;;13081:98;;-1:-1:-1;;;;;;13192:8:108;;::::2;::::0;:32:::2;::::0;:315:::2;::::0;13239:215;;13081:98;;-1:-1:-1;13192:315:108::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;13533:77:108::2;::::0;;34574:25:150;;;13578:5:108::2;34630:2:150::0;34615:18;;34608:50;34674:18;;;34667:34;;;13594:15:108::2;34732:2:150::0;34717:18;;34710:34;13554:10:108::2;::::0;-1:-1:-1;13533:77:108::2;::::0;-1:-1:-1;34561:3:150;34546:19;13533:77:108::2;;;;;;;;12520:1098;;;12294:1324:::0;;;;;;:::o;8483:3569::-;3193:13;;8742:12;;3193:13;;3189:76;;;3235:10;3216:30;;;;:18;:30;;;;;;;;3208:57;;;;-1:-1:-1;;;3208:57:108;;;;;;;:::i;:::-;1482:19:25::1;:17;:19::i;:::-;8807:8:108::2;::::0;:26:::2;::::0;;-1:-1:-1;;;8807:26:108;;;;8777:27:::2;::::0;-1:-1:-1;;;;;8807:8:108::2;::::0;-1:-1:-1;;8807:26:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8777:56;;8844:24;8871:10;-1:-1:-1::0;;;;;8871:23:108::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8933:8;::::0;8925:44:::2;::::0;8844:52;;-1:-1:-1;8910:9:108::2;::::0;8933:8:::2;::::0;;::::2;-1:-1:-1::0;;;;;8933:8:108::2;::::0;8955:9:::2;::::0;8910;8925:44;8910:9;8925:44;8955:9;8933:8;8925:44:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8909:60;;;8988:4;8980:39;;;::::0;-1:-1:-1;;;8980:39:108;;25467:2:150;8980:39:108::2;::::0;::::2;25449:21:150::0;25506:2;25486:18;;;25479:30;-1:-1:-1;;;25525:18:150;;;25518:52;25587:18;;8980:39:108::2;25265:346:150::0;8980:39:108::2;9084:8;::::0;:33:::2;::::0;;-1:-1:-1;;;9084:33:108;;;;-1:-1:-1;;;;;9084:8:108;;::::2;::::0;-1:-1:-1;;9084:33:108::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:33;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9040:8;::::0;:41:::2;::::0;-1:-1:-1;;;9040:41:108;;9070:10:::2;9040:41;::::0;::::2;15282:51:150::0;-1:-1:-1;;;;;9040:8:108;;::::2;::::0;:29:::2;::::0;15255:18:150;;9040:41:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;9032:108;;;::::0;-1:-1:-1;;;9032:108:108;;26573:2:150;9032:108:108::2;::::0;::::2;26555:21:150::0;26612:2;26592:18;;;26585:30;-1:-1:-1;;;26631:18:150;;;26624:48;26689:18;;9032:108:108::2;26371:342:150::0;9032:108:108::2;9402:8;::::0;:27:::2;::::0;;-1:-1:-1;;;9402:27:108;;;;-1:-1:-1;;;;;9402:8:108;;::::2;::::0;:25:::2;::::0;:27:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:27;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9328:8;::::0;:54:::2;::::0;-1:-1:-1;;;9328:54:108;;9358:10:::2;9328:54;::::0;::::2;16187:51:150::0;9370:11:108::2;::::0;::::2;;16254:18:150::0;;;16247:34;-1:-1:-1;;;;;9328:8:108;;::::2;::::0;:29:::2;::::0;16160:18:150;;9328:54:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9252:8;::::0;:56:::2;::::0;-1:-1:-1;;;9252:56:108;;9284:10:::2;9252:56;::::0;::::2;16187:51:150::0;9296:11:108::2;::::0;::::2;;16254:18:150::0;;;16247:34;-1:-1:-1;;;;;9252:8:108;;::::2;::::0;:31:::2;::::0;16160:18:150;;9252:56:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9183:8;::::0;:49:::2;::::0;-1:-1:-1;;;9183:49:108;;9208:10:::2;9183:49;::::0;::::2;16187:51:150::0;9220:11:108::2;::::0;::::2;;16254:18:150::0;;;16247:34;-1:-1:-1;;;;;9183:8:108;;::::2;::::0;:24:::2;::::0;16160:18:150;;9183:49:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:125;;;;:::i;:::-;:199;;;;:::i;:::-;:246;9161:315;;;::::0;-1:-1:-1;;;9161:315:108;;25119:2:150;9161:315:108::2;::::0;::::2;25101:21:150::0;25158:2;25138:18;;;25131:30;-1:-1:-1;;;25177:18:150;;;25170:49;25236:18;;9161:315:108::2;24917:343:150::0;9161:315:108::2;9535:42;::::0;-1:-1:-1;;;9535:42:108;;9565:11:::2;::::0;::::2;;9535:42;::::0;::::2;33047:25:150::0;-1:-1:-1;;;;;9535:29:108;::::2;::::0;::::2;::::0;33020:18:150;;9535:42:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9497:34;:18;::::0;::::2;;9520:10;::::0;::::2;;9497:22;:34::i;:::-;:80;;9489:106;;;::::0;-1:-1:-1;;;9489:106:108;;21980:2:150;9489:106:108::2;::::0;::::2;21962:21:150::0;22019:2;21999:18;;;21992:30;-1:-1:-1;;;22038:18:150;;;22031:43;22091:18;;9489:106:108::2;21778:337:150::0;9489:106:108::2;9643:1;9630;:10;;;:14;:89;;;;-1:-1:-1::0;9679:40:108::2;::::0;-1:-1:-1;;;9679:40:108;;9707:11:::2;::::0;::::2;;9679:40;::::0;::::2;33047:25:150::0;-1:-1:-1;;;;;9679:27:108;::::2;::::0;::::2;::::0;33020:18:150;;9679:40:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9665:1;:10;;;:54;;9630:89;:164;;;;-1:-1:-1::0;9754:40:108::2;::::0;-1:-1:-1;;;9754:40:108;;9782:11:::2;::::0;::::2;;9754:40;::::0;::::2;33047:25:150::0;-1:-1:-1;;;;;9754:27:108;::::2;::::0;::::2;::::0;33020:18:150;;9754:40:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9740:1;:10;;;:54;;9630:164;9608:232;;;::::0;-1:-1:-1;;;9608:232:108;;22322:2:150;9608:232:108::2;::::0;::::2;22304:21:150::0;22361:2;22341:18;;;22334:30;-1:-1:-1;;;22380:18:150;;;22373:48;22438:18;;9608:232:108::2;22120:342:150::0;9608:232:108::2;9861:4;::::0;::::2;;:9:::0;;:62:::2;;-1:-1:-1::0;9875:5:108::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;:47;;9911:1;:11;;;9904:1;:4;;;:18;9875:47;;;9890:1;:11;;;9883:1;:4;;;:18;9875:47;9853:83;;;::::0;-1:-1:-1;;;9853:83:108;;24113:2:150;9853:83:108::2;::::0;::::2;24095:21:150::0;24152:1;24132:18;;;24125:29;-1:-1:-1;;;24170:18:150;;;24163:38;24218:18;;9853:83:108::2;23911:331:150::0;9853:83:108::2;9955:4;::::0;::::2;;:9:::0;;:62:::2;;-1:-1:-1::0;9969:5:108::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;:47;;10005:1;:11;;;9998:1;:4;;;:18;9969:47;;;9984:1;:11;;;9977:1;:4;;;:18;9969:47;9947:83;;;::::0;-1:-1:-1;;;9947:83:108;;24783:2:150;9947:83:108::2;::::0;::::2;24765:21:150::0;24822:1;24802:18;;;24795:29;-1:-1:-1;;;24840:18:150;;;24833:38;24888:18;;9947:83:108::2;24581:331:150::0;9947:83:108::2;10056:34;10047:5;:43;;;;;;;;:::i;:::-;;10043:2002;;10107:8;::::0;-1:-1:-1;;;;;10107:8:108::2;:21;10129:10;10107:8:::0;10160:34:::2;10181:13:::0;10160:18:::2;::::0;::::2;;:34;:::i;:::-;10107:88;::::0;;-1:-1:-1;10107:88:108;;;-1:-1:-1;;;;;;10107:88:108;;;-1:-1:-1;;;;;15602:15:150;;;10107:88:108::2;::::0;::::2;15584:34:150::0;15654:15;;;;15634:18;;;15627:43;15686:18;;;15679:34;10107:88:108;;15519:18:150;;;;;-1:-1:-1;;10107:88:108;;;;;;;-1:-1:-1;10107:88:108;;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;10223:8:108::2;::::0;:58:::2;::::0;-1:-1:-1;;;10223:58:108;;10257:10:::2;10223:58;::::0;::::2;16187:51:150::0;10269:11:108::2;::::0;::::2;;16254:18:150::0;;;16247:34;10210:10:108::2;::::0;-1:-1:-1;;;;;;10223:8:108;;::::2;::::0;-1:-1:-1;10223:33:108::2;::::0;16160:18:150;;10223:58:108::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10298:8;::::0;10345:438:::2;::::0;;::::2;::::0;::::2;::::0;;10398:10:::2;10345:438:::0;;::::2;10431:11:::0;;::::2;;10345:438:::0;;::::2;::::0;;;;;;;10493:18:::2;::::0;;::::2;;10345:438:::0;;;;;;-1:-1:-1;;;;;;10298:8:108;;::::2;::::0;:28:::2;::::0;10345:438;;;10534:5:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;10345:438;;;;;;10562:1;:10;;;10345:438;;;;10595:1;:4;;;10345:438;;;;10622:1;:4;;;10345:438;;;;10649:1;:11;;;10345:438;;;;10683:10;10345:438;;;;10716:12;10345:438;;;;10751:13;10345:438;;::::0;10298:500:::2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;10815:10;-1:-1:-1::0;;;;;10815:21:108::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:84;::::0;-1:-1:-1;;;10815:84:108;;-1:-1:-1;;;;;10815:45:108;;;::::2;::::0;::::2;::::0;:84:::2;::::0;10861:10:::2;::::0;10873:11:::2;::::0;::::2;;::::0;10886:5;;10893;;10815:84:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;10937:10:108::2;::::0;-1:-1:-1;10921:101:108::2;::::0;-1:-1:-1;;10949:11:108::2;::::0;::::2;;10962:5:::0;10969::::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;10976:1;:11;;;10989:13;11004:5;11011:10;10921:101;;;;;;;;;;;;:::i;:::-;;;;;;;;10092:942;10043:2002;;;11057:8;::::0;:72:::2;::::0;-1:-1:-1;;;11057:72:108;;11079:10:::2;11057:72;::::0;::::2;15584:34:150::0;-1:-1:-1;;;;;11057:8:108;;::::2;15634:18:150::0;;;15627:43;;;11110:18:108::2;::::0;::::2;;15686::150::0;;;15679:34;11057:8:108;:21:::2;::::0;15519:18:150;;11057:72:108::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;11156:72:108::2;::::0;-1:-1:-1;;;11156:72:108;;-1:-1:-1;;;;;11156:19:108;::::2;::::0;-1:-1:-1;11156:19:108::2;::::0;-1:-1:-1;11156:72:108::2;::::0;11176:11:::2;::::0;::::2;;::::0;11189:38:::2;::::0;11156:72:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11146:82;;11245:8;;;;;;;;;-1:-1:-1::0;;;;;11245:8:108::2;-1:-1:-1::0;;;;;11245:32:108::2;;11296:574;;;;;;;;11353:407;;;;;;;;11401:10;-1:-1:-1::0;;;;;11353:407:108::2;;;;;11438:1;:11;;;11353:407;;;;11476:1;11353:407;;;;11504:1;11353:407;;;;11532:1;:18;;;11353:407;;;;11577:1;11353:407;;;;11605:1;:5;;;;;;;;;;:::i;:::-;11353:407;;;;;;11637:1;:10;;;11353:407;;;;11674:1;:4;;;11353:407;;;;11705:1;:4;;;11353:407;;;;11736:1;11353:407;;::::0;11296:574:::2;;;;11783:1;11296:574;;;;11807:1;:11;;;11296:574;;;;11841:10;11296:574;;::::0;11889:7:::2;11915:4;11245:689;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;11956:77:108::2;::::0;;11989:11:::2;::::0;;::::2;;34574:25:150::0;;12002:4:108::2;34615:18:150::0;;;34608:50;34674:18;;;34667:34;;;12017:15:108::2;34732:2:150::0;34717:18;;34710:34;11977:10:108::2;::::0;-1:-1:-1;11956:77:108::2;::::0;-1:-1:-1;34561:3:150;34546:19;11956:77:108::2;34349:401:150::0;10043:2002:108::2;8756:3296;;;8483:3569:::0;;;;;;:::o;4423:209::-;3098:8;;:14;;;-1:-1:-1;;;3098:14:108;;;;-1:-1:-1;;;;;3098:8:108;;;;-1:-1:-1;;3098:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3084:28:108;:10;:28;3076:49;;;;-1:-1:-1;;;3076:49:108;;29041:2:150;3076:49:108;;;29023:21:150;29080:1;29060:18;;;29053:29;-1:-1:-1;;;29098:18:150;;;29091:38;29146:18;;3076:49:108;28839:331:150;3076:49:108;-1:-1:-1;;;;;4499:22:108;::::1;4491:31;;;::::0;::::1;;-1:-1:-1::0;;;;;4533:28:108;::::1;;::::0;;;:18:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;4533:35:108::1;-1:-1:-1::0;4533:35:108::1;::::0;;4584:40;;21549:21:150;;;21606:2;21586:18;;;21579:30;;;;-1:-1:-1;;;21640:2:150;21625:18;;21618:42;21712:20;;21705:62;;;;4584:40:108::1;::::0;21692:3:150;21677:19;4584:40:108::1;21337:436:150::0;2010:106:25;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:25;;23012:2:150;2071:38:25;;;22994:21:150;23051:2;23031:18;;;23024:30;-1:-1:-1;;;23070:18:150;;;23063:46;23126:18;;2071:38:25;22810:340:150;20574:623:108;20672:8;;:51;;-1:-1:-1;;;20672:51:108;;20692:10;20672:51;;;16494::150;16561:18;;;16554:34;;;16604:18;;;16597:34;;;20656:13:108;;-1:-1:-1;;;;;20672:8:108;;:19;;16467:18:150;;20672:51:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;;20764:8;;:55;;-1:-1:-1;;;20764:55:108;;20788:10;20764:55;;;16494:51:150;16561:18;;;16554:34;;;16604:18;;;16597:34;;;20672:60:108;;-1:-1:-1;20743:18:108;;-1:-1:-1;;;;;20764:8:108;;;;-1:-1:-1;;16467:18:150;;20764:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;20743:90;;20865:1;20854:8;:12;20846:33;;;;-1:-1:-1;;;20846:33:108;;21203:2:150;20846:33:108;;;21185:21:150;21242:1;21222:18;;;21215:29;-1:-1:-1;;;21260:18:150;;;21253:38;21308:18;;20846:33:108;21001:331:150;20846:33:108;20930:19;;20898:28;20913:13;20898:12;:28;:::i;:::-;:51;;20890:78;;;;-1:-1:-1;;;20890:78:108;;22669:2:150;20890:78:108;;;22651:21:150;22708:2;22688:18;;;22681:30;-1:-1:-1;;;22727:18:150;;;22720:44;22781:18;;20890:78:108;22467:338:150;20890:78:108;-1:-1:-1;;;;;20987:31:108;;20979:56;;;;-1:-1:-1;;;20979:56:108;;29718:2:150;20979:56:108;;;29700:21:150;29757:2;29737:18;;;29730:30;-1:-1:-1;;;29776:18:150;;;29769:42;29828:18;;20979:56:108;29516:336:150;20979:56:108;21048:8;;:57;;-1:-1:-1;;;21048:57:108;;21066:10;21048:57;;;18517:51:150;18584:18;;;18577:34;;;18627:18;;;18620:34;;;18670:18;;;18663:34;;;-1:-1:-1;;;;;21048:8:108;;;;:17;;18489:19:150;;21048:57:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21123:66:108;;;38520:25:150;;;38576:2;38561:18;;38554:34;;;38604:18;;;38597:34;;;21173:15:108;38662:2:150;38647:18;;38640:34;21133:10:108;;-1:-1:-1;21123:66:108;;-1:-1:-1;38507:3:150;38492:19;21123:66:108;;;;;;;20645:552;;20574:623;;;:::o;21479:1814::-;21628:8;;:51;;-1:-1:-1;;;21628:51:108;;21648:10;21628:51;;;16494::150;16561:18;;;16554:34;;;16604:18;;;16597:34;;;21595:30:108;;-1:-1:-1;;;;;21628:8:108;;:19;;16467:18:150;;21628:51:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21711:8;;:55;;-1:-1:-1;;;21711:55:108;;21735:10;21711:55;;;16494:51:150;16561:18;;;16554:34;;;16604:18;;;16597:34;;;21595:84:108;;-1:-1:-1;21690:18:108;;-1:-1:-1;;;;;21711:8:108;;;;-1:-1:-1;;16467:18:150;;21711:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;21690:90;;21814:1;21801;:10;;;:14;21793:35;;;;-1:-1:-1;;;21793:35:108;;21203:2:150;21793:35:108;;;21185:21:150;21242:1;21222:18;;;21215:29;-1:-1:-1;;;21260:18:150;;;21253:38;21308:18;;21793:35:108;21001:331:150;21793:35:108;-1:-1:-1;;;;;21847:31:108;;21839:56;;;;-1:-1:-1;;;21839:56:108;;29377:2:150;21839:56:108;;;29359:21:150;29416:2;29396:18;;;29389:30;-1:-1:-1;;;29435:18:150;;;29428:42;29487:18;;21839:56:108;29175:336:150;21839:56:108;21908:14;21925:49;21963:1;:10;;;21954:3;521:2;21927:1;:11;;;:23;;;;:::i;:::-;21926:31;;;;:::i;:::-;21925:37;;:49::i;:::-;21908:66;-1:-1:-1;22007:11:108;;;:94;;;22023:1;:5;;;:77;;22091:9;22077:1;:11;;;:23;;;;:::i;:::-;22067:6;:33;;22023:77;;;22055:9;22041:1;:11;;;:23;;;;:::i;:::-;22031:6;:33;;22023:77;21985:154;;;;-1:-1:-1;;;21985:154:108;;28353:2:150;21985:154:108;;;28335:21:150;28392:2;28372:18;;;28365:30;-1:-1:-1;;;28411:18:150;;;28404:40;28461:18;;21985:154:108;28151:334:150;21985:154:108;22192:19;;22160:28;22175:13;22160:12;:28;:::i;:::-;:51;;22152:78;;;;-1:-1:-1;;;22152:78:108;;22669:2:150;22152:78:108;;;22651:21:150;22708:2;22688:18;;;22681:30;-1:-1:-1;;;22727:18:150;;;22720:44;22781:18;;22152:78:108;22467:338:150;22152:78:108;22273:8;;:26;;;-1:-1:-1;;;22273:26:108;;;;22243:27;;-1:-1:-1;;;;;22273:8:108;;-1:-1:-1;;22273:26:108;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22243:56;-1:-1:-1;22316:11:108;;;:73;;;22332:10;-1:-1:-1;;;;;22332:23:108;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;-1:-1:-1;;;22332:57:108;;;;;33047:25:150;;;-1:-1:-1;;;;;22332:45:108;;;;;;;33020:18:150;;22332:57:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22331:58;22316:73;22312:974;;;22406:8;;:57;;-1:-1:-1;;;22406:57:108;;22424:10;22406:57;;;18517:51:150;18584:18;;;18577:34;;;18627:18;;;18620:34;;;18670:18;;;18663:34;;;-1:-1:-1;;;;;22406:8:108;;;;:17;;18489:19:150;;22406:57:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22483:66:108;;;38520:25:150;;;38576:2;38561:18;;38554:34;;;38604:18;;;38597:34;;;22533:15:108;38662:2:150;38647:18;;38640:34;22493:10:108;;-1:-1:-1;22483:66:108;;-1:-1:-1;38507:3:150;38492:19;22483:66:108;;;;;;;22312:974;;;22582:15;22600:33;22622:1;:10;;;22600:1;:17;;;:21;;:33;;;;:::i;:::-;22671:8;;22697;;22707:11;;;;22750:5;;;;22671:85;;-1:-1:-1;;;22671:85:108;;-1:-1:-1;;;;;16929:32:150;;;22671:85:108;;;16911:51:150;16978:18;;;16971:34;;;;22671:8:108;22720:15;;;17021:18:150;;;17014:34;22671:8:108;17064:18:150;;;17057:50;17123:19;;;17116:51;17211:14;17204:22;17183:19;;;17176:51;22582::108;;-1:-1:-1;22671:8:108;;:25;;16883:19:150;;22671:85:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22650:1;:17;;:106;;;;;;;:::i;:::-;;;-1:-1:-1;22773:8:108;;:23;;-1:-1:-1;;;22773:23:108;;-1:-1:-1;;;;;22773:8:108;;;;-1:-1:-1;;22773:23:108;;22794:1;;22773:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22828:69:108;;-1:-1:-1;;;22828:69:108;;22813:12;;-1:-1:-1;;;;;;22828:19:108;;;-1:-1:-1;22828:19:108;;:69;;22848:10;;22860:36;;22828:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22813:84;;22914:10;-1:-1:-1;;;;;22914:30:108;;22963:7;22989:86;;;;;;;;23016:10;-1:-1:-1;;;;;22989:86:108;;;;;23028:10;22989:86;;;;23040:6;22989:86;;;;23048:1;:11;;;22989:86;;;;23061:1;:5;;;22989:86;;;;;;23068:6;22989:86;;;22914:176;;;;;;;;;;;;;;;36099:4:150;36141:3;36130:9;36126:19;36118:27;;36172:6;36161:9;36154:25;36251:1;36247;36242:3;36238:11;36234:19;36225:6;36219:13;36215:39;36210:2;36199:9;36195:18;36188:67;36309:2;36301:6;36297:15;36291:22;36286:2;36275:9;36271:18;36264:50;36368:2;36360:6;36356:15;36350:22;36345:2;36334:9;36330:18;36323:50;36428:2;36420:6;36416:15;36410:22;36404:3;36393:9;36389:19;36382:51;36502:3;36494:6;36490:16;36484:23;36477:31;36470:39;36464:3;36453:9;36449:19;36442:68;36565:3;36557:6;36553:16;36547:23;36541:3;36530:9;36526:19;36519:52;35923:654;;;;;;22914:176:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23112:83:108;;;38944:25:150;;;39000:2;38985:18;;38978:34;;;39028:18;;;39021:34;;;39086:2;39071:18;;39064:34;;;23179:15:108;39129:3:150;39114:19;;39107:35;23130:10:108;;-1:-1:-1;23112:83:108;;-1:-1:-1;38931:3:150;38916:19;23112:83:108;;;;;;;23212:62;;-1:-1:-1;;;23212:62:108;;-1:-1:-1;;;;;23212:18:108;;;-1:-1:-1;;23238:9:108;;23212:62;;23249:7;;23258:15;;;;23212:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22567:719;;22312:974;21584:1709;;;;21479:1814;;;;;:::o;2676:117:25:-;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:25::1;::::0;;2764:22:::1;929:10:38::0;2773:12:25::1;2764:22;::::0;-1:-1:-1;;;;;15300:32:150;;;;15282:51;;15270:2;15255:18;2764:22:25::1;15136:203:150::0;24508:385:108;24634:9;;24687:8;;24714:11;;;;24744:7;;;;;24770:11;;;;24800:5;;;;24824:17;;;;24860:10;;;;24634:251;;-1:-1:-1;;;24634:251:108;;-1:-1:-1;;;;;19035:32:150;;;24634:251:108;;;19017:51:150;19084:18;;;19077:34;;;;19127:18;;;19120:34;;;;19170:18;;;19163:34;;;;19241:14;19234:22;19213:19;;;19206:51;19273:19;;;19266:35;19317:19;;;19310:35;24597:4:108;;24634:9;;;;;:34;;18989:19:150;;24634:251:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24614:271;24508:385;-1:-1:-1;;24508:385:108:o;1063:97:25:-;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1126:27:25::1;:25;:27::i;2429:115::-:0;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:25::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:38::0;;850:96;23673:681:108;23891:16;;;23940:5;:43;;;;;;;;:::i;:::-;;23936:411;;;24046:5;24012:31;24033:10;24012:18;:31;:::i;:::-;:39;;;;:::i;:::-;24000:51;-1:-1:-1;24000:51:108;24081:30;476:4;24081:17;:30;:::i;:::-;24080:46;;;;:::i;:::-;24066:60;;23936:411;;;24157:35;24148:5;:44;;;;;;;;:::i;:::-;;24144:203;;;24255:5;24221:31;24242:10;24221:18;:31;:::i;:::-;:39;;;;:::i;:::-;24209:51;-1:-1:-1;24209:51:108;24290:30;476:4;24290:17;:30;:::i;:::-;24289:46;;;;:::i;:::-;24275:60;;24144:203;23673:681;;;;;;;;:::o;130:127:127:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;130:127;-1:-1:-1;;;130:127:127:o;263:::-;323:4;374:9;347:23;119:4;347:1;:23;:::i;2188:106:25:-;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:25;;20854:2:150;2246:41:25;;;20836:21:150;20893:2;20873:18;;;20866:30;-1:-1:-1;;;20912:18:150;;;20905:50;20972:18;;2246:41:25;20652:344:150;1166:95:25;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1239:7:25::1;:15:::0;;-1:-1:-1;;1239:15:25::1;::::0;;1166:95::o;14:138:150:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:374::-;227:8;237:6;291:3;284:4;276:6;272:17;268:27;258:55;;309:1;306;299:12;258:55;-1:-1:-1;332:20:150;;375:18;364:30;;361:50;;;407:1;404;397:12;361:50;444:4;436:6;432:17;420:29;;504:3;497:4;487:6;484:1;480:14;472:6;468:27;464:38;461:47;458:67;;;521:1;518;511:12;458:67;157:374;;;;;:::o;536:132::-;612:13;;634:28;612:13;634:28;:::i;673:247::-;732:6;785:2;773:9;764:7;760:23;756:32;753:52;;;801:1;798;791:12;753:52;840:9;827:23;859:31;884:5;859:31;:::i;925:251::-;995:6;1048:2;1036:9;1027:7;1023:23;1019:32;1016:52;;;1064:1;1061;1054:12;1016:52;1096:9;1090:16;1115:31;1140:5;1115:31;:::i;1181:388::-;1249:6;1257;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;1365:9;1352:23;1384:31;1409:5;1384:31;:::i;:::-;1434:5;-1:-1:-1;1491:2:150;1476:18;;1463:32;1504:33;1463:32;1504:33;:::i;:::-;1556:7;1546:17;;;1181:388;;;;;:::o;1574:382::-;1639:6;1647;1700:2;1688:9;1679:7;1675:23;1671:32;1668:52;;;1716:1;1713;1706:12;1668:52;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:150;1866:18;;1853:32;1894:30;1853:32;1894:30;:::i;1961:315::-;2029:6;2037;2090:2;2078:9;2069:7;2065:23;2061:32;2058:52;;;2106:1;2103;2096:12;2058:52;2145:9;2132:23;2164:31;2189:5;2164:31;:::i;:::-;2214:5;2266:2;2251:18;;;;2238:32;;-1:-1:-1;;;1961:315:150:o;2281:241::-;2337:6;2390:2;2378:9;2369:7;2365:23;2361:32;2358:52;;;2406:1;2403;2396:12;2358:52;2445:9;2432:23;2464:28;2486:5;2464:28;:::i;2527:245::-;2594:6;2647:2;2635:9;2626:7;2622:23;2618:32;2615:52;;;2663:1;2660;2653:12;2615:52;2695:9;2689:16;2714:28;2736:5;2714:28;:::i;3611:894::-;3760:6;3768;3776;3784;3792;3800;3853:3;3841:9;3832:7;3828:23;3824:33;3821:53;;;3870:1;3867;3860:12;3821:53;3909:9;3896:23;3948:1;3941:5;3938:12;3928:40;;3964:1;3961;3954:12;3928:40;3987:5;-1:-1:-1;4044:2:150;4029:18;;4016:32;4057:33;4016:32;4057:33;:::i;:::-;4109:7;-1:-1:-1;4163:2:150;4148:18;;4135:32;;-1:-1:-1;4214:2:150;4199:18;;4186:32;;-1:-1:-1;4269:3:150;4254:19;;4241:33;4297:18;4286:30;;4283:50;;;4329:1;4326;4319:12;4283:50;4368:77;4437:7;4428:6;4417:9;4413:22;4368:77;:::i;:::-;3611:894;;;;-1:-1:-1;3611:894:150;;-1:-1:-1;3611:894:150;;4464:8;;3611:894;-1:-1:-1;;;3611:894:150:o;4510:1070::-;4613:6;4666:3;4654:9;4645:7;4641:23;4637:33;4634:53;;;4683:1;4680;4673:12;4634:53;4709:22;;:::i;:::-;4754:40;4784:9;4754:40;:::i;:::-;4747:5;4740:55;4848:2;4837:9;4833:18;4827:25;4822:2;4815:5;4811:14;4804:49;4906:2;4895:9;4891:18;4885:25;4880:2;4873:5;4869:14;4862:49;4964:2;4953:9;4949:18;4943:25;4938:2;4931:5;4927:14;4920:49;5002:47;5044:3;5033:9;5029:19;5002:47;:::i;:::-;4996:3;4985:15;;4978:72;5104:3;5089:19;;;5083:26;5066:15;;;5059:51;5164:3;5149:19;;;5143:26;5126:15;;;5119:51;5224:3;5209:19;;;5203:26;5186:15;;;5179:51;5249:3;5290:18;;;5284:25;5268:14;;;5261:49;5329:3;5370:18;;;5364:25;5348:14;;;5341:49;5409:3;5450:18;;;5444:25;5428:14;;;5421:49;5489:3;5530:18;;;5524:25;5508:14;;;5501:49;;;;-1:-1:-1;4989:5:150;4510:1070;-1:-1:-1;4510:1070:150:o;5585:846::-;5683:6;5736:3;5724:9;5715:7;5711:23;5707:33;5704:53;;;5753:1;5750;5743:12;5704:53;5786:2;5780:9;5828:3;5820:6;5816:16;5898:6;5886:10;5883:22;5862:18;5850:10;5847:34;5844:62;5841:185;;;5948:10;5943:3;5939:20;5936:1;5929:31;5983:4;5980:1;5973:15;6011:4;6008:1;6001:15;5841:185;6046:10;6042:2;6035:22;;6087:9;6081:16;6073:6;6066:32;6152:2;6141:9;6137:18;6131:25;6126:2;6118:6;6114:15;6107:50;6211:2;6200:9;6196:18;6190:25;6185:2;6177:6;6173:15;6166:50;6259:2;6248:9;6244:18;6238:25;6272:28;6294:5;6272:28;:::i;:::-;6328:2;6316:15;;6309:30;6394:3;6379:19;;;6373:26;6355:16;;;6348:52;;;;-1:-1:-1;6320:6:150;5585:846;-1:-1:-1;5585:846:150:o;6436:582::-;6572:6;6580;6588;6596;6640:9;6631:7;6627:23;6670:3;6666:2;6662:12;6659:32;;;6687:1;6684;6677:12;6659:32;6710:3;6733:2;6729;6725:11;6722:31;;;6749:1;6746;6739:12;6722:31;6772:9;;-1:-1:-1;6816:18:150;;6803:32;;-1:-1:-1;6864:1:150;6854:12;;6844:40;;6880:1;6877;6870:12;6844:40;6436:582;;6903:5;;-1:-1:-1;;;;6955:3:150;6940:19;;6927:33;;7007:3;6992:19;6979:33;;6436:582::o;7023:976::-;7117:6;7170:3;7158:9;7149:7;7145:23;7141:33;7138:53;;;7187:1;7184;7177:12;7138:53;7213:17;;:::i;:::-;7253:40;7283:9;7253:40;:::i;:::-;7246:5;7239:55;7347:2;7336:9;7332:18;7326:25;7321:2;7314:5;7310:14;7303:49;7405:2;7394:9;7390:18;7384:25;7379:2;7372:5;7368:14;7361:49;7463:2;7452:9;7448:18;7442:25;7437:2;7430:5;7426:14;7419:49;7522:3;7511:9;7507:19;7501:26;7495:3;7488:5;7484:15;7477:51;7582:3;7571:9;7567:19;7561:26;7555:3;7548:5;7544:15;7537:51;7621:47;7663:3;7652:9;7648:19;7621:47;:::i;:::-;7615:3;7604:15;;7597:72;7723:3;7708:19;;;7702:26;7685:15;;;7678:51;7748:3;7789:18;;;7783:25;7767:14;;;7760:49;7828:3;7869:18;;;7863:25;7847:14;;;7840:49;7908:3;7949:18;;;7943:25;7927:14;;;7920:49;;;;-1:-1:-1;7608:5:150;7023:976;-1:-1:-1;7023:976:150:o;8004:180::-;8063:6;8116:2;8104:9;8095:7;8091:23;8087:32;8084:52;;;8132:1;8129;8122:12;8084:52;-1:-1:-1;8155:23:150;;8004:180;-1:-1:-1;8004:180:150:o;8189:184::-;8259:6;8312:2;8300:9;8291:7;8287:23;8283:32;8280:52;;;8328:1;8325;8318:12;8280:52;-1:-1:-1;8351:16:150;;8189:184;-1:-1:-1;8189:184:150:o;8378:866::-;8520:6;8528;8536;8544;8552;8605:2;8593:9;8584:7;8580:23;8576:32;8573:52;;;8621:1;8618;8611:12;8573:52;8657:9;8644:23;8634:33;;8718:2;8707:9;8703:18;8690:32;8741:18;8782:2;8774:6;8771:14;8768:34;;;8798:1;8795;8788:12;8768:34;8837:77;8906:7;8897:6;8886:9;8882:22;8837:77;:::i;:::-;8933:8;;-1:-1:-1;8811:103:150;-1:-1:-1;9021:2:150;9006:18;;8993:32;;-1:-1:-1;9037:16:150;;;9034:36;;;9066:1;9063;9056:12;9034:36;;9105:79;9176:7;9165:8;9154:9;9150:24;9105:79;:::i;:::-;8378:866;;;;-1:-1:-1;8378:866:150;;-1:-1:-1;9203:8:150;;9079:105;8378:866;-1:-1:-1;;;8378:866:150:o;9249:248::-;9317:6;9325;9378:2;9366:9;9357:7;9353:23;9349:32;9346:52;;;9394:1;9391;9384:12;9346:52;-1:-1:-1;;9417:23:150;;;9487:2;9472:18;;;9459:32;;-1:-1:-1;9249:248:150:o;9502:821::-;9651:6;9659;9667;9675;9683;9691;9744:3;9732:9;9723:7;9719:23;9715:33;9712:53;;;9761:1;9758;9751:12;9712:53;9797:9;9784:23;9774:33;;9854:2;9843:9;9839:18;9826:32;9816:42;;9908:2;9897:9;9893:18;9880:32;9941:1;9934:5;9931:12;9921:40;;9957:1;9954;9947:12;9921:40;9980:5;-1:-1:-1;10032:2:150;10017:18;;10004:32;;-1:-1:-1;10087:3:150;10072:19;;10059:33;10115:18;10104:30;;10101:50;;;10147:1;10144;10137:12;10328:316;10405:6;10413;10421;10474:2;10462:9;10453:7;10449:23;10445:32;10442:52;;;10490:1;10487;10480:12;10442:52;-1:-1:-1;;10513:23:150;;;10583:2;10568:18;;10555:32;;-1:-1:-1;10634:2:150;10619:18;;;10606:32;;10328:316;-1:-1:-1;10328:316:150:o;10649:660::-;10773:6;10781;10789;10797;10805;10858:3;10846:9;10837:7;10833:23;10829:33;10826:53;;;10875:1;10872;10865:12;10826:53;10911:9;10898:23;10888:33;;10968:2;10957:9;10953:18;10940:32;10930:42;;11019:2;11008:9;11004:18;10991:32;10981:42;;11074:2;11063:9;11059:18;11046:32;11101:18;11093:6;11090:30;11087:50;;;11133:1;11130;11123:12;11087:50;11172:77;11241:7;11232:6;11221:9;11217:22;11172:77;:::i;11314:385::-;11400:6;11408;11416;11424;11477:3;11465:9;11456:7;11452:23;11448:33;11445:53;;;11494:1;11491;11484:12;11445:53;-1:-1:-1;;11517:23:150;;;11587:2;11572:18;;11559:32;;-1:-1:-1;11638:2:150;11623:18;;11610:32;;11689:2;11674:18;11661:32;;-1:-1:-1;11314:385:150;-1:-1:-1;11314:385:150:o;11704:729::-;11837:6;11845;11853;11861;11869;11877;11930:3;11918:9;11909:7;11905:23;11901:33;11898:53;;;11947:1;11944;11937:12;11898:53;11983:9;11970:23;11960:33;;12040:2;12029:9;12025:18;12012:32;12002:42;;12091:2;12080:9;12076:18;12063:32;12053:42;;12142:2;12131:9;12127:18;12114:32;12104:42;;12197:3;12186:9;12182:19;12169:33;12225:18;12217:6;12214:30;12211:50;;;12257:1;12254;12247:12;12438:523;12542:6;12550;12558;12566;12574;12582;12635:3;12623:9;12614:7;12610:23;12606:33;12603:53;;;12652:1;12649;12642:12;12603:53;-1:-1:-1;;12675:23:150;;;12745:2;12730:18;;12717:32;;-1:-1:-1;12796:2:150;12781:18;;12768:32;;12847:2;12832:18;;12819:32;;-1:-1:-1;12898:3:150;12883:19;;12870:33;;-1:-1:-1;12950:3:150;12935:19;12922:33;;-1:-1:-1;12438:523:150;-1:-1:-1;12438:523:150:o;13171:266::-;13259:6;13254:3;13247:19;13311:6;13304:5;13297:4;13292:3;13288:14;13275:43;-1:-1:-1;13363:1:150;13338:16;;;13356:4;13334:27;;;13327:38;;;;13419:2;13398:15;;;-1:-1:-1;;13394:29:150;13385:39;;;13381:50;;13171:266::o;13442:149::-;13532:1;13525:5;13522:12;13512:46;;13538:18;;:::i;:::-;13567;;13442:149::o;13596:141::-;13678:1;13671:5;13668:12;13658:46;;13684:18;;:::i;13742:399::-;13829:12;;-1:-1:-1;;;;;13825:38:150;13813:51;;13913:4;13902:16;;;13896:23;13880:14;;;13873:47;13969:4;13958:16;;;13952:23;13936:14;;;13929:47;14022:4;14011:16;;14005:23;14064:1;14047:19;;14037:53;;14070:18;;:::i;:::-;14122:12;14115:4;14110:3;14106:14;14099:36;;13742:399;;:::o;14146:775::-;14224:12;;-1:-1:-1;;;;;13032:31:150;13020:44;;14291:4;14284:5;14280:16;14274:23;14267:4;14262:3;14258:14;14251:47;14347:4;14340:5;14336:16;14330:23;14323:4;14318:3;14314:14;14307:47;14403:4;14396:5;14392:16;14386:23;14379:4;14374:3;14370:14;14363:47;14459:4;14452:5;14448:16;14442:23;14435:4;14430:3;14426:14;14419:47;14515:4;14508:5;14504:16;14498:23;14491:4;14486:3;14482:14;14475:47;14568:4;14561:5;14557:16;14551:23;14583:45;14622:4;14617:3;14613:14;14599:12;13145:13;13138:21;13126:34;;13075:91;14583:45;-1:-1:-1;14677:4:150;14666:16;;;14660:23;14644:14;;;14637:47;14703:6;14745:14;;;14739:21;14725:12;;;14718:43;14780:6;14822:14;;;14816:21;14802:12;;;14795:43;14857:6;14899:14;;;14893:21;14879:12;;14872:43;14146:775::o;17814:467::-;-1:-1:-1;;;;;18085:32:150;;18067:51;;18149:2;18134:18;;18127:34;;;18192:2;18177:18;;18170:34;;;18054:3;18039:19;;18213:62;18271:2;18256:18;;18248:6;18213:62;:::i;:::-;17814:467;;;;;;;:::o;27054:338::-;27256:2;27238:21;;;27295:2;27275:18;;;27268:30;-1:-1:-1;;;27329:2:150;27314:18;;27307:44;27383:2;27368:18;;27054:338::o;27739:407::-;27941:2;27923:21;;;27980:2;27960:18;;;27953:30;28019:34;28014:2;27999:18;;27992:62;-1:-1:-1;;;28085:2:150;28070:18;;28063:41;28136:3;28121:19;;27739:407::o;30192:1090::-;30424:13;;-1:-1:-1;;;;;13032:31:150;13020:44;;30392:3;30377:19;;30505:4;30497:6;30493:17;30487:24;30480:4;30469:9;30465:20;30458:54;30568:4;30560:6;30556:17;30550:24;30543:4;30532:9;30528:20;30521:54;30631:4;30623:6;30619:17;30613:24;30606:4;30595:9;30591:20;30584:54;30685:4;30677:6;30673:17;30667:24;30700:51;30745:4;30734:9;30730:20;30716:12;13145:13;13138:21;13126:34;;13075:91;30700:51;;30807:4;30799:6;30795:17;30789:24;30782:4;30771:9;30767:20;30760:54;30870:4;30862:6;30858:17;30852:24;30845:4;30834:9;30830:20;30823:54;30933:4;30925:6;30921:17;30915:24;30908:4;30897:9;30893:20;30886:54;30959:6;31019:2;31011:6;31007:15;31001:22;30996:2;30985:9;30981:18;30974:50;;31043:6;31103:2;31095:6;31091:15;31085:22;31080:2;31069:9;31065:18;31058:50;;31127:6;31187:2;31179:6;31175:15;31169:22;31164:2;31153:9;31149:18;31142:50;;31211:6;31271:2;31263:6;31259:15;31253:22;31248:2;31237:9;31233:18;31226:50;;30192:1090;;;;:::o;31287:351::-;31521:3;31506:19;;31534:54;31510:9;31570:6;31534:54;:::i;:::-;31625:6;31619:3;31608:9;31604:19;31597:35;31287:351;;;;;:::o;31643:625::-;31859:4;31901:3;31890:9;31886:19;31878:27;;31914:49;31953:9;31944:6;31938:13;31914:49;:::i;:::-;32021:4;32009:17;;32003:24;31994:6;31979:22;;31972:56;32086:4;32074:17;;32068:24;32059:6;32044:22;;32037:56;32151:4;32139:17;;;32133:24;32124:6;32109:22;;32102:56;32189:3;32174:19;;32167:35;;;;32246:14;32239:22;32233:3;32218:19;;;32211:51;31643:625;:::o;32273:243::-;32455:3;32440:19;;32468:42;32444:9;32492:6;32468:42;:::i;32521:375::-;32753:3;32738:19;;32766:54;32742:9;32802:6;32766:54;:::i;:::-;-1:-1:-1;;;;;32857:32:150;;;;32851:3;32836:19;;;;32829:61;32857:32;;-1:-1:-1;32521:375:150:o;33083:1261::-;33283:4;33331:2;33320:9;33316:18;33361:6;33350:9;33343:25;33387:2;33425;33420;33409:9;33405:18;33398:30;33448:6;33478;33470;33463:22;33516:2;33505:9;33501:18;33494:25;;33578:2;33568:6;33565:1;33561:14;33550:9;33546:30;33542:39;33528:53;;33604:6;33628:1;33638:677;33652:6;33649:1;33646:13;33638:677;;;-1:-1:-1;;33717:22:150;;;33713:36;33701:49;;33789:20;;-1:-1:-1;;33864:14:150;33860:27;;;33856:41;33832:66;;33822:94;;33912:1;33909;33902:12;33822:94;33942:31;;34000:19;;34046:18;34035:30;;34032:50;;;34078:1;34075;34068:12;34032:50;34130:6;34114:14;34110:27;34102:6;34098:40;34095:60;;;34151:1;34148;34141:12;34095:60;34178:57;34228:6;34220;34215:2;34208:5;34204:14;34178:57;:::i;:::-;34168:67;-1:-1:-1;;;34293:12:150;;;;34258:15;;;;33674:1;33667:9;33638:677;;;-1:-1:-1;34332:6:150;;33083:1261;-1:-1:-1;;;;;;;;33083:1261:150:o;34755:317::-;34942:25;;;34930:2;34915:18;;34997:1;34986:13;;34976:47;;35003:18;;:::i;:::-;35059:6;35054:2;35043:9;35039:18;35032:34;34755:317;;;;;:::o;35077:841::-;35273:4;35315:3;35304:9;35300:19;35292:27;;35346:6;35335:9;35328:25;35425:1;35421;35416:3;35412:11;35408:19;35399:6;35393:13;35389:39;35384:2;35373:9;35369:18;35362:67;35483:2;35475:6;35471:15;35465:22;35460:2;35449:9;35445:18;35438:50;35542:2;35534:6;35530:15;35524:22;35519:2;35508:9;35504:18;35497:50;35594:2;35586:6;35582:15;35576:22;35607:61;35663:3;35652:9;35648:19;35634:12;35607:61;:::i;:::-;;35723:3;35715:6;35711:16;35705:23;35699:3;35688:9;35684:19;35677:52;35784:3;35776:6;35772:16;35766:23;35760:3;35749:9;35745:19;35738:52;35845:3;35837:6;35833:16;35827:23;35821:3;35810:9;35806:19;35799:52;35906:3;35898:6;35894:16;35888:23;35882:3;35871:9;35867:19;35860:52;35077:841;;;;;:::o;36582:667::-;36858:4;36900:3;36889:9;36885:19;36877:27;;36931:6;36920:9;36913:25;36974:6;36969:2;36958:9;36954:18;36947:34;37031:6;37024:14;37017:22;37012:2;37001:9;36997:18;36990:50;37076:6;37071:2;37060:9;37056:18;37049:34;37120:6;37114:3;37103:9;37099:19;37092:35;37136:63;37194:3;37183:9;37179:19;37171:6;37136:63;:::i;:::-;37236:6;37230:3;37219:9;37215:19;37208:35;36582:667;;;;;;;;;;:::o;37254:706::-;37631:25;;;37687:2;37672:18;;37665:34;;;37618:3;37603:19;;37708:54;37758:2;37743:18;;37735:6;37708:54;:::i;:::-;37771:51;37818:2;37807:9;37803:18;37795:6;37771:51;:::i;:::-;37859:6;37853:3;37842:9;37838:19;37831:35;37903:6;37897:3;37886:9;37882:19;37875:35;37947:6;37941:3;37930:9;37926:19;37919:35;37254:706;;;;;;;;;;:::o;39693:349::-;39765:2;39759:9;39807:3;39795:16;;39841:18;39826:34;;39862:22;;;39823:62;39820:185;;;39927:10;39922:3;39918:20;39915:1;39908:31;39962:4;39959:1;39952:15;39990:4;39987:1;39980:15;39820:185;40021:2;40014:22;39693:349;:::o;40047:344::-;40114:2;40108:9;40156:3;40144:16;;40190:18;40175:34;;40211:22;;;40172:62;40169:185;;;40276:10;40271:3;40267:20;40264:1;40257:31;40311:4;40308:1;40301:15;40339:4;40336:1;40329:15;40396:128;40436:3;40467:1;40463:6;40460:1;40457:13;40454:39;;;40473:18;;:::i;:::-;-1:-1:-1;40509:9:150;;40396:128::o;40529:217::-;40569:1;40595;40585:132;;40639:10;40634:3;40630:20;40627:1;40620:31;40674:4;40671:1;40664:15;40702:4;40699:1;40692:15;40585:132;-1:-1:-1;40731:9:150;;40529:217::o;40751:168::-;40791:7;40857:1;40853;40849:6;40845:14;40842:1;40839:21;40834:1;40827:9;40820:17;40816:45;40813:71;;;40864:18;;:::i;:::-;-1:-1:-1;40904:9:150;;40751:168::o;40924:125::-;40964:4;40992:1;40989;40986:8;40983:34;;;40997:18;;:::i;:::-;-1:-1:-1;41034:9:150;;40924:125::o;41054:135::-;41093:3;-1:-1:-1;;41114:17:150;;41111:43;;;41134:18;;:::i;:::-;-1:-1:-1;41181:1:150;41170:13;;41054:135::o;41194:127::-;41255:10;41250:3;41246:20;41243:1;41236:31;41286:4;41283:1;41276:15;41310:4;41307:1;41300:15;41326:127;41387:10;41382:3;41378:20;41375:1;41368:31;41418:4;41415:1;41408:15;41442:4;41439:1;41432:15;41458:127;41519:10;41514:3;41510:20;41507:1;41500:31;41550:4;41547:1;41540:15;41574:4;41571:1;41564:15;41590:131;-1:-1:-1;;;;;41665:31:150;;41655:42;;41645:70;;41711:1;41708;41701:12;41645:70;41590:131;:::o;41726:118::-;41812:5;41805:13;41798:21;41791:5;41788:32;41778:60;;41834:1;41831;41824:12","linkReferences":{}},"methodIdentifiers":{"addWhitelist(address)":"f80f5dd5","cancelOpenLimitOrder(uint256,uint256)":"b9b6573a","cancelPendingMarketOrder(uint256)":"c5ed6a08","closeTradeMarket(uint256,uint256,uint256,uint256)":"e5a97c92","executeLimitOrder(uint8,address,uint256,uint256,bytes[])":"46f6c8f5","executeMarketOrders(uint256,uint256[],bytes[])":"a03074c1","initialize(address,address)":"485cc955","isOperator(address)":"6d70f7ae","isWhitelisted()":"611b4095","lastUpdateTime(address,uint256)":"080b44bb","limitOrdersTimelock()":"0890d22a","openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256,uint256)":"f5567637","operator()":"570ca735","pairInfos()":"1346b0ff","pause()":"8456cb59","paused()":"5c975abb","removeWhitelist(address)":"78c8cda7","setLimitOrdersTimelock(uint256)":"d4a1caa7","setMarketExecFeeReciever(address)":"9e2033f5","storageT()":"16fff074","toggleWhitelist()":"7e15144b","unpause()":"3f4ba83a","updateMargin(uint256,uint256,uint8,uint256,bytes[])":"cd90b8a4","updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":"c641558e","updateOperator(address,bool)":"6d44a3b2","updateSl(uint256,uint256,uint256,bytes[])":"c383e5de","updateTp(uint256,uint256,uint256)":"d8defd15","updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":"15b760b1","whitelistedAddress(address)":"c30796ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderSameBlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"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\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"newTrade\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtectionTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarketOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"}],\"name\":\"OpenLimitPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdateInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"whitelist\",\"type\":\"bool\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"addWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"cancelOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"cancelPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_executionFee\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"_orderType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeLimitOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"orderId\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeMarketOrders\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitOrdersTimelock\",\"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\":\"t\",\"type\":\"tuple\"},{\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_executionFee\",\"type\":\"uint256\"}],\"name\":\"openTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"removeWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blocks\",\"type\":\"uint256\"}],\"name\":\"setLimitOrdersTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reciever\",\"type\":\"address\"}],\"name\":\"setMarketExecFeeReciever\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_sl\",\"type\":\"uint256\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isOperator\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTp\",\"type\":\"uint256\"}],\"name\":\"updateTp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTP\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateTpAndSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addWhitelist(address)\":{\"params\":{\"_address\":\"The address to add to the whitelist\"}},\"cancelOpenLimitOrder(uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\"}},\"closeTradeMarket(uint256,uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"The amount of collateral being closed\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\"}},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_orderType\":\"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\",\"_pairIndex\":\"The index of the trading pair\",\"_trader\":\"The address of the trader\",\"priceUpdateData\":\"Pyth price update data\"}},\"executeMarketOrders(uint256,uint256[],bytes[])\":{\"params\":{\"orderId\":\"The array of orderIDs\",\"pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update calldata\"}},\"initialize(address,address)\":{\"params\":{\"_pairInfos\":\"The address of the pair information contract\",\"_storageT\":\"The address of the storage contract\"}},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256,uint256)\":{\"params\":{\"_executionFee\":\"The fee for executing the trade (in USDC)\",\"_slippageP\":\"The slippage percentage\",\"_type\":\"Market or Limit or Stop Limit\",\"t\":\"The details of the trade to open\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"removeWhitelist(address)\":{\"params\":{\"_address\":\"The address to remove from the whitelist\"}},\"setLimitOrdersTimelock(uint256)\":{\"params\":{\"_blocks\":\"The new time-lock duration in blocks\"}},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"params\":{\"_amount\":\"The Collateral by which to update the margin\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\",\"_type\":\"Withdraw or Deposit\",\"priceUpdateData\":\"Pyth price update\"}},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\",\"_price\":\"The price level to set (_PRECISION)\",\"_sl\":\"The stop-loss price\",\"_tp\":\"The take-profit price\"}},\"updateSl(uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss level\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}},\"updateTp(uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_newTp\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\"}},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss price\",\"_newTP\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addWhitelist(address)\":{\"notice\":\"Adds an address to the whitelist\"},\"cancelOpenLimitOrder(uint256,uint256)\":{\"notice\":\"Cancels an open limit order\"},\"cancelPendingMarketOrder(uint256)\":{\"notice\":\"FallBack method in case unregister is not working directly\"},\"closeTradeMarket(uint256,uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"notice\":\"Executes a limit order (either open or close)\"},\"executeMarketOrders(uint256,uint256[],bytes[])\":{\"notice\":\"Keeper method to close pending market orders\"},\"initialize(address,address)\":{\"notice\":\"Initializes the proxy\"},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256,uint256)\":{\"notice\":\"Opens a new Market/Limit trade\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"removeWhitelist(address)\":{\"notice\":\"Remove an address from the whitelist\"},\"setLimitOrdersTimelock(uint256)\":{\"notice\":\"Sets the time-lock for limit order updates\"},\"toggleWhitelist()\":{\"notice\":\"Enables/disables Whitelisting\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"notice\":\"Updates(Deposit/Withdraw) the margin for an open trade\"},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Updates an open limit order\"},\"updateSl(uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the stop-loss level for a open trade\"},\"updateTp(uint256,uint256,uint256)\":{\"notice\":\"Updates the take-profit level for a open trade\"},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the take-profit and stop-loss for a open Trade\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Trading.sol\":\"Trading\"},\"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/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/Trading.sol\":{\"keccak256\":\"0xd0906ba5881f043962b01529667c99f8431787cd2860794f5d052c7f238acf5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1d6370e1d44dc8318eba6288071ea5a22d37960cab1d5ba1b1c2160797a40b1\",\"dweb:/ipfs/QmRjkwCKGXLu95QoYFvtRrmRpQuCntNHDynY2tBCLk65HD\"]},\"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\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderSameBlock","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"newTrade","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"}],"indexed":false},{"internalType":"uint256","name":"marginFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtectionTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarketOrderInitiated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitCanceled","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false},{"internalType":"uint256","name":"openPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"executionFee","type":"uint256","indexed":false},{"internalType":"enum IExecute.OpenLimitOrderType","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"slippageP","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bool","name":"isOperator","type":"bool","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdateInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"TpUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bool","name":"whitelist","type":"bool","indexed":false}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addWhitelist"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelPendingMarketOrder"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_executionFee","type":"uint256"}],"stateMutability":"payable","type":"function","name":"closeTradeMarket","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"enum ITradingStorage.LimitOrder","name":"_orderType","type":"uint8"},{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeLimitOrder"},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeMarketOrders"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"limitOrdersTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"t","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":"enum IExecute.OpenLimitOrderType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_executionFee","type":"uint256"}],"stateMutability":"payable","type":"function","name":"openTrade","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeWhitelist"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrdersTimelock"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketExecFeeReciever"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"toggleWhitelist"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateMargin","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_tp","type":"uint256"},{"internalType":"uint256","name":"_sl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_isOperator","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateOperator"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateSl"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newTp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateTp"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"uint256","name":"_newTP","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateTpAndSl"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"whitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addWhitelist(address)":{"params":{"_address":"The address to add to the whitelist"}},"cancelOpenLimitOrder(uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair"}},"closeTradeMarket(uint256,uint256,uint256,uint256)":{"params":{"_amount":"The amount of collateral being closed","_index":"The index of the trade","_pairIndex":"The index of the trading pair"}},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_orderType":"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)","_pairIndex":"The index of the trading pair","_trader":"The address of the trader","priceUpdateData":"Pyth price update data"}},"executeMarketOrders(uint256,uint256[],bytes[])":{"params":{"orderId":"The array of orderIDs","pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update calldata"}},"initialize(address,address)":{"params":{"_pairInfos":"The address of the pair information contract","_storageT":"The address of the storage contract"}},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256,uint256)":{"params":{"_executionFee":"The fee for executing the trade (in USDC)","_slippageP":"The slippage percentage","_type":"Market or Limit or Stop Limit","t":"The details of the trade to open"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"removeWhitelist(address)":{"params":{"_address":"The address to remove from the whitelist"}},"setLimitOrdersTimelock(uint256)":{"params":{"_blocks":"The new time-lock duration in blocks"}},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"params":{"_amount":"The Collateral by which to update the margin","_index":"The index of the trade","_pairIndex":"The index of the trading pair","_type":"Withdraw or Deposit","priceUpdateData":"Pyth price update"}},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair","_price":"The price level to set (_PRECISION)","_sl":"The stop-loss price","_tp":"The take-profit price"}},"updateSl(uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss level","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}},"updateTp(uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_newTp":"The new take-profit price","_pairIndex":"The index of the trading pair"}},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss price","_newTP":"The new take-profit price","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}}},"version":1},"userdoc":{"kind":"user","methods":{"addWhitelist(address)":{"notice":"Adds an address to the whitelist"},"cancelOpenLimitOrder(uint256,uint256)":{"notice":"Cancels an open limit order"},"cancelPendingMarketOrder(uint256)":{"notice":"FallBack method in case unregister is not working directly"},"closeTradeMarket(uint256,uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"notice":"Executes a limit order (either open or close)"},"executeMarketOrders(uint256,uint256[],bytes[])":{"notice":"Keeper method to close pending market orders"},"initialize(address,address)":{"notice":"Initializes the proxy"},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256,uint256)":{"notice":"Opens a new Market/Limit trade"},"pause()":{"notice":"Pauses the contract"},"removeWhitelist(address)":{"notice":"Remove an address from the whitelist"},"setLimitOrdersTimelock(uint256)":{"notice":"Sets the time-lock for limit order updates"},"toggleWhitelist()":{"notice":"Enables/disables Whitelisting"},"unpause()":{"notice":"Unpauses the contract"},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"notice":"Updates(Deposit/Withdraw) the margin for an open trade"},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"notice":"Updates an open limit order"},"updateSl(uint256,uint256,uint256,bytes[])":{"notice":"Updates the stop-loss level for a open trade"},"updateTp(uint256,uint256,uint256)":{"notice":"Updates the take-profit level for a open trade"},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"notice":"Updates the take-profit and stop-loss for a open Trade"}},"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/Trading.sol":"Trading"},"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/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/Trading.sol":{"keccak256":"0xd0906ba5881f043962b01529667c99f8431787cd2860794f5d052c7f238acf5c","urls":["bzz-raw://a1d6370e1d44dc8318eba6288071ea5a22d37960cab1d5ba1b1c2160797a40b1","dweb:/ipfs/QmRjkwCKGXLu95QoYFvtRrmRpQuCntNHDynY2tBCLk65HD"],"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"}},"version":1},"ast":{"absolutePath":"src/Trading.sol","id":78322,"exportedSymbols":{"AddressUpgradeable":[46968],"ContextUpgradeable":[47010],"ICallbacks":[88257],"IERC20":[51481],"IExecute":[88371],"IPairInfos":[88745],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"PausableUpgradeable":[43664],"PositionMath":[90841],"Trading":[78321]},"nodeType":"SourceUnit","src":"33:24865:108","nodes":[{"id":76245,"nodeType":"ImportDirective","src":"33:42:108","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":76246,"nodeType":"ImportDirective","src":"77:37:108","nodes":[],"absolutePath":"src/interfaces/IPairInfos.sol","file":"./interfaces/IPairInfos.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":88746,"symbolAliases":[],"unitAlias":""},{"id":76247,"nodeType":"ImportDirective","src":"116:35:108","nodes":[],"absolutePath":"src/interfaces/IExecute.sol","file":"./interfaces/IExecute.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":88372,"symbolAliases":[],"unitAlias":""},{"id":76248,"nodeType":"ImportDirective","src":"153:37:108","nodes":[],"absolutePath":"src/interfaces/ICallbacks.sol","file":"./interfaces/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":88258,"symbolAliases":[],"unitAlias":""},{"id":76249,"nodeType":"ImportDirective","src":"192:78:108","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":43665,"symbolAliases":[],"unitAlias":""},{"id":76251,"nodeType":"ImportDirective","src":"272:56:108","nodes":[],"absolutePath":"src/library/PositionMath.sol","file":"./library/PositionMath.sol","nameLocation":"-1:-1:-1","scope":78322,"sourceUnit":90842,"symbolAliases":[{"foreign":{"id":76250,"name":"PositionMath","nodeType":"Identifier","overloadedDeclarations":[],"src":"280:12:108","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76252,"nodeType":"PragmaDirective","src":"332:22:108","nodes":[],"literals":["solidity","0.8",".7"]},{"id":78321,"nodeType":"ContractDefinition","src":"358:24538:108","nodes":[{"id":76257,"nodeType":"UsingForDirective","src":"405:28:108","nodes":[],"libraryName":{"id":76255,"name":"PositionMath","nodeType":"IdentifierPath","referencedDeclaration":90841,"src":"411:12:108"},"typeName":{"id":76256,"name":"uint","nodeType":"ElementaryTypeName","src":"428:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":76260,"nodeType":"VariableDeclaration","src":"441:39:108","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"463:10:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76258,"name":"uint","nodeType":"ElementaryTypeName","src":"441:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":76259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"476:4:108","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":76263,"nodeType":"VariableDeclaration","src":"487:36:108","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_SL_P","nameLocation":"509:9:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76261,"name":"uint","nodeType":"ElementaryTypeName","src":"487:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830","id":76262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"521:2:108","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},"visibility":"private"},{"id":76266,"nodeType":"VariableDeclaration","src":"544:31:108","nodes":[],"constant":false,"functionSelector":"16fff074","mutability":"mutable","name":"storageT","nameLocation":"567:8:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"},"typeName":{"id":76265,"nodeType":"UserDefinedTypeName","pathNode":{"id":76264,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"544:15:108"},"referencedDeclaration":89943,"src":"544:15:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"visibility":"public"},{"id":76269,"nodeType":"VariableDeclaration","src":"582:27:108","nodes":[],"constant":false,"functionSelector":"1346b0ff","mutability":"mutable","name":"pairInfos","nameLocation":"600:9:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"},"typeName":{"id":76268,"nodeType":"UserDefinedTypeName","pathNode":{"id":76267,"name":"IPairInfos","nodeType":"IdentifierPath","referencedDeclaration":88745,"src":"582:10:108"},"referencedDeclaration":88745,"src":"582:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"visibility":"public"},{"id":76271,"nodeType":"VariableDeclaration","src":"618:31:108","nodes":[],"constant":false,"functionSelector":"0890d22a","mutability":"mutable","name":"limitOrdersTimelock","nameLocation":"630:19:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76270,"name":"uint","nodeType":"ElementaryTypeName","src":"618:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":76273,"nodeType":"VariableDeclaration","src":"656:25:108","nodes":[],"constant":false,"functionSelector":"611b4095","mutability":"mutable","name":"isWhitelisted","nameLocation":"668:13:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76272,"name":"bool","nodeType":"ElementaryTypeName","src":"656:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":76275,"nodeType":"VariableDeclaration","src":"711:23:108","nodes":[],"constant":false,"functionSelector":"570ca735","mutability":"mutable","name":"operator","nameLocation":"726:8:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76274,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":76279,"nodeType":"VariableDeclaration","src":"743:50:108","nodes":[],"constant":false,"functionSelector":"c30796ab","mutability":"mutable","name":"whitelistedAddress","nameLocation":"775:18:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":76278,"keyType":{"id":76276,"name":"address","nodeType":"ElementaryTypeName","src":"751:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"743:24:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":76277,"name":"bool","nodeType":"ElementaryTypeName","src":"762:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":76285,"nodeType":"VariableDeclaration","src":"800:63:108","nodes":[],"constant":false,"functionSelector":"080b44bb","mutability":"mutable","name":"lastUpdateTime","nameLocation":"849:14:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":76284,"keyType":{"id":76280,"name":"address","nodeType":"ElementaryTypeName","src":"808:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"800:41:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":76283,"keyType":{"id":76281,"name":"uint","nodeType":"ElementaryTypeName","src":"827:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"819:21:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":76282,"name":"uint","nodeType":"ElementaryTypeName","src":"835:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":76289,"nodeType":"VariableDeclaration","src":"870:42:108","nodes":[],"constant":false,"functionSelector":"6d70f7ae","mutability":"mutable","name":"isOperator","nameLocation":"902:10:108","scope":78321,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":76288,"keyType":{"id":76286,"name":"address","nodeType":"ElementaryTypeName","src":"878:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"870:24:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":76287,"name":"bool","nodeType":"ElementaryTypeName","src":"889:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":76293,"nodeType":"EventDefinition","src":"936:32:108","nodes":[],"anonymous":false,"name":"Whitelist","nameLocation":"942:9:108","parameters":{"id":76292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76291,"indexed":false,"mutability":"mutable","name":"whitelist","nameLocation":"957:9:108","nodeType":"VariableDeclaration","scope":76293,"src":"952:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76290,"name":"bool","nodeType":"ElementaryTypeName","src":"952:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"951:16:108"}},{"id":76299,"nodeType":"EventDefinition","src":"976:45:108","nodes":[],"anonymous":false,"name":"NumberUpdated","nameLocation":"982:13:108","parameters":{"id":76298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76295,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"1003:4:108","nodeType":"VariableDeclaration","scope":76299,"src":"996:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76294,"name":"string","nodeType":"ElementaryTypeName","src":"996:6:108","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":76297,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1014:5:108","nodeType":"VariableDeclaration","scope":76299,"src":"1009:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76296,"name":"uint","nodeType":"ElementaryTypeName","src":"1009:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"995:25:108"}},{"id":76305,"nodeType":"EventDefinition","src":"1027:45:108","nodes":[],"anonymous":false,"name":"AddressUpdated","nameLocation":"1033:14:108","parameters":{"id":76304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76301,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"1055:4:108","nodeType":"VariableDeclaration","scope":76305,"src":"1048:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76300,"name":"string","nodeType":"ElementaryTypeName","src":"1048:6:108","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":76303,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"1069:1:108","nodeType":"VariableDeclaration","scope":76305,"src":"1061:9:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76302,"name":"address","nodeType":"ElementaryTypeName","src":"1061:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1047:24:108"}},{"id":76317,"nodeType":"EventDefinition","src":"1080:164:108","nodes":[],"anonymous":false,"name":"MarketOrderInitiated","nameLocation":"1086:20:108","parameters":{"id":76316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76307,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"1133:6:108","nodeType":"VariableDeclaration","scope":76317,"src":"1117:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76306,"name":"address","nodeType":"ElementaryTypeName","src":"1117:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76309,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"1156:9:108","nodeType":"VariableDeclaration","scope":76317,"src":"1151:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76308,"name":"uint","nodeType":"ElementaryTypeName","src":"1151:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76311,"indexed":false,"mutability":"mutable","name":"open","nameLocation":"1182:4:108","nodeType":"VariableDeclaration","scope":76317,"src":"1177:9:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76310,"name":"bool","nodeType":"ElementaryTypeName","src":"1177:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":76313,"indexed":false,"mutability":"mutable","name":"orderId","nameLocation":"1203:7:108","nodeType":"VariableDeclaration","scope":76317,"src":"1198:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76312,"name":"uint","nodeType":"ElementaryTypeName","src":"1198:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76315,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1227:9:108","nodeType":"VariableDeclaration","scope":76317,"src":"1222:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76314,"name":"uint","nodeType":"ElementaryTypeName","src":"1222:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1106:137:108"}},{"id":76327,"nodeType":"EventDefinition","src":"1252:142:108","nodes":[],"anonymous":false,"name":"LimitOrderInitiated","nameLocation":"1258:19:108","parameters":{"id":76326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76319,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"1304:6:108","nodeType":"VariableDeclaration","scope":76327,"src":"1288:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76318,"name":"address","nodeType":"ElementaryTypeName","src":"1288:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76321,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"1327:9:108","nodeType":"VariableDeclaration","scope":76327,"src":"1322:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76320,"name":"uint","nodeType":"ElementaryTypeName","src":"1322:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76323,"indexed":false,"mutability":"mutable","name":"orderId","nameLocation":"1353:7:108","nodeType":"VariableDeclaration","scope":76327,"src":"1348:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76322,"name":"uint","nodeType":"ElementaryTypeName","src":"1348:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76325,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1377:9:108","nodeType":"VariableDeclaration","scope":76327,"src":"1372:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76324,"name":"uint","nodeType":"ElementaryTypeName","src":"1372:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1277:116:108"}},{"id":76335,"nodeType":"EventDefinition","src":"1402:118:108","nodes":[],"anonymous":false,"name":"LimitOrderSameBlock","nameLocation":"1408:19:108","parameters":{"id":76334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76329,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"1454:6:108","nodeType":"VariableDeclaration","scope":76335,"src":"1438:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76328,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76331,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"1477:9:108","nodeType":"VariableDeclaration","scope":76335,"src":"1472:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76330,"name":"uint","nodeType":"ElementaryTypeName","src":"1472:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76333,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1503:9:108","nodeType":"VariableDeclaration","scope":76335,"src":"1498:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76332,"name":"uint","nodeType":"ElementaryTypeName","src":"1498:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:92:108"}},{"id":76354,"nodeType":"EventDefinition","src":"1528:258:108","nodes":[],"anonymous":false,"name":"OpenLimitPlaced","nameLocation":"1534:15:108","parameters":{"id":76353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76337,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"1576:6:108","nodeType":"VariableDeclaration","scope":76354,"src":"1560:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76336,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76339,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"1599:9:108","nodeType":"VariableDeclaration","scope":76354,"src":"1594:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76338,"name":"uint","nodeType":"ElementaryTypeName","src":"1594:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76341,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"1625:5:108","nodeType":"VariableDeclaration","scope":76354,"src":"1620:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76340,"name":"uint","nodeType":"ElementaryTypeName","src":"1620:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76343,"indexed":false,"mutability":"mutable","name":"isBuy","nameLocation":"1647:5:108","nodeType":"VariableDeclaration","scope":76354,"src":"1642:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76342,"name":"bool","nodeType":"ElementaryTypeName","src":"1642:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":76345,"indexed":false,"mutability":"mutable","name":"openPrice","nameLocation":"1668:9:108","nodeType":"VariableDeclaration","scope":76354,"src":"1663:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76344,"name":"uint","nodeType":"ElementaryTypeName","src":"1663:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76347,"indexed":false,"mutability":"mutable","name":"executionFee","nameLocation":"1693:12:108","nodeType":"VariableDeclaration","scope":76354,"src":"1688:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76346,"name":"uint","nodeType":"ElementaryTypeName","src":"1688:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76350,"indexed":false,"mutability":"mutable","name":"orderType","nameLocation":"1744:9:108","nodeType":"VariableDeclaration","scope":76354,"src":"1716:37:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},"typeName":{"id":76349,"nodeType":"UserDefinedTypeName","pathNode":{"id":76348,"name":"IExecute.OpenLimitOrderType","nodeType":"IdentifierPath","referencedDeclaration":88279,"src":"1716:27:108"},"referencedDeclaration":88279,"src":"1716:27:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"visibility":"internal"},{"constant":false,"id":76352,"indexed":false,"mutability":"mutable","name":"slippageP","nameLocation":"1769:9:108","nodeType":"VariableDeclaration","scope":76354,"src":"1764:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76351,"name":"uint","nodeType":"ElementaryTypeName","src":"1764:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:236:108"}},{"id":76370,"nodeType":"EventDefinition","src":"1794:200:108","nodes":[],"anonymous":false,"name":"OpenLimitUpdated","nameLocation":"1800:16:108","parameters":{"id":76369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76356,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"1843:6:108","nodeType":"VariableDeclaration","scope":76370,"src":"1827:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76355,"name":"address","nodeType":"ElementaryTypeName","src":"1827:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76358,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"1865:9:108","nodeType":"VariableDeclaration","scope":76370,"src":"1860:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76357,"name":"uint","nodeType":"ElementaryTypeName","src":"1860:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76360,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"1890:5:108","nodeType":"VariableDeclaration","scope":76370,"src":"1885:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76359,"name":"uint","nodeType":"ElementaryTypeName","src":"1885:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76362,"indexed":false,"mutability":"mutable","name":"newPrice","nameLocation":"1911:8:108","nodeType":"VariableDeclaration","scope":76370,"src":"1906:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76361,"name":"uint","nodeType":"ElementaryTypeName","src":"1906:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76364,"indexed":false,"mutability":"mutable","name":"newTp","nameLocation":"1935:5:108","nodeType":"VariableDeclaration","scope":76370,"src":"1930:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76363,"name":"uint","nodeType":"ElementaryTypeName","src":"1930:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76366,"indexed":false,"mutability":"mutable","name":"newSl","nameLocation":"1956:5:108","nodeType":"VariableDeclaration","scope":76370,"src":"1951:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76365,"name":"uint","nodeType":"ElementaryTypeName","src":"1951:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76368,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1977:9:108","nodeType":"VariableDeclaration","scope":76370,"src":"1972:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76367,"name":"uint","nodeType":"ElementaryTypeName","src":"1972:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1816:177:108"}},{"id":76380,"nodeType":"EventDefinition","src":"2002:138:108","nodes":[],"anonymous":false,"name":"OpenLimitCanceled","nameLocation":"2008:17:108","parameters":{"id":76379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76372,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"2052:6:108","nodeType":"VariableDeclaration","scope":76380,"src":"2036:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76371,"name":"address","nodeType":"ElementaryTypeName","src":"2036:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76374,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"2075:9:108","nodeType":"VariableDeclaration","scope":76380,"src":"2070:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76373,"name":"uint","nodeType":"ElementaryTypeName","src":"2070:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76376,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2101:5:108","nodeType":"VariableDeclaration","scope":76380,"src":"2096:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76375,"name":"uint","nodeType":"ElementaryTypeName","src":"2096:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76378,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2123:9:108","nodeType":"VariableDeclaration","scope":76380,"src":"2118:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76377,"name":"uint","nodeType":"ElementaryTypeName","src":"2118:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:114:108"}},{"id":76392,"nodeType":"EventDefinition","src":"2148:152:108","nodes":[],"anonymous":false,"name":"TpUpdated","nameLocation":"2154:9:108","parameters":{"id":76391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76382,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"2190:6:108","nodeType":"VariableDeclaration","scope":76392,"src":"2174:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76381,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76384,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"2213:9:108","nodeType":"VariableDeclaration","scope":76392,"src":"2208:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76383,"name":"uint","nodeType":"ElementaryTypeName","src":"2208:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76386,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2239:5:108","nodeType":"VariableDeclaration","scope":76392,"src":"2234:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76385,"name":"uint","nodeType":"ElementaryTypeName","src":"2234:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76388,"indexed":false,"mutability":"mutable","name":"newTp","nameLocation":"2261:5:108","nodeType":"VariableDeclaration","scope":76392,"src":"2256:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76387,"name":"uint","nodeType":"ElementaryTypeName","src":"2256:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76390,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2283:9:108","nodeType":"VariableDeclaration","scope":76392,"src":"2278:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76389,"name":"uint","nodeType":"ElementaryTypeName","src":"2278:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2163:136:108"}},{"id":76404,"nodeType":"EventDefinition","src":"2308:152:108","nodes":[],"anonymous":false,"name":"SlUpdated","nameLocation":"2314:9:108","parameters":{"id":76403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76394,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"2350:6:108","nodeType":"VariableDeclaration","scope":76404,"src":"2334:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76393,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76396,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"2373:9:108","nodeType":"VariableDeclaration","scope":76404,"src":"2368:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76395,"name":"uint","nodeType":"ElementaryTypeName","src":"2368:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76398,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2399:5:108","nodeType":"VariableDeclaration","scope":76404,"src":"2394:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76397,"name":"uint","nodeType":"ElementaryTypeName","src":"2394:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76400,"indexed":false,"mutability":"mutable","name":"newSl","nameLocation":"2421:5:108","nodeType":"VariableDeclaration","scope":76404,"src":"2416:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76399,"name":"uint","nodeType":"ElementaryTypeName","src":"2416:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76402,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2443:9:108","nodeType":"VariableDeclaration","scope":76404,"src":"2438:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76401,"name":"uint","nodeType":"ElementaryTypeName","src":"2438:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2323:136:108"}},{"id":76418,"nodeType":"EventDefinition","src":"2468:179:108","nodes":[],"anonymous":false,"name":"SlUpdateInitiated","nameLocation":"2474:17:108","parameters":{"id":76417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76406,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"2518:6:108","nodeType":"VariableDeclaration","scope":76418,"src":"2502:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76405,"name":"address","nodeType":"ElementaryTypeName","src":"2502:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76408,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"2540:9:108","nodeType":"VariableDeclaration","scope":76418,"src":"2535:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76407,"name":"uint","nodeType":"ElementaryTypeName","src":"2535:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76410,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2565:5:108","nodeType":"VariableDeclaration","scope":76418,"src":"2560:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76409,"name":"uint","nodeType":"ElementaryTypeName","src":"2560:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76412,"indexed":false,"mutability":"mutable","name":"newSl","nameLocation":"2586:5:108","nodeType":"VariableDeclaration","scope":76418,"src":"2581:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76411,"name":"uint","nodeType":"ElementaryTypeName","src":"2581:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76414,"indexed":false,"mutability":"mutable","name":"orderId","nameLocation":"2607:7:108","nodeType":"VariableDeclaration","scope":76418,"src":"2602:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76413,"name":"uint","nodeType":"ElementaryTypeName","src":"2602:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76416,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2630:9:108","nodeType":"VariableDeclaration","scope":76418,"src":"2625:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76415,"name":"uint","nodeType":"ElementaryTypeName","src":"2625:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2491:155:108"}},{"id":76438,"nodeType":"EventDefinition","src":"2655:275:108","nodes":[],"anonymous":false,"name":"MarginUpdated","nameLocation":"2661:13:108","parameters":{"id":76437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76420,"indexed":true,"mutability":"mutable","name":"trader","nameLocation":"2701:6:108","nodeType":"VariableDeclaration","scope":76438,"src":"2685:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76419,"name":"address","nodeType":"ElementaryTypeName","src":"2685:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76422,"indexed":false,"mutability":"mutable","name":"pairIndex","nameLocation":"2723:9:108","nodeType":"VariableDeclaration","scope":76438,"src":"2718:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76421,"name":"uint","nodeType":"ElementaryTypeName","src":"2718:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76424,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2748:5:108","nodeType":"VariableDeclaration","scope":76438,"src":"2743:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76423,"name":"uint","nodeType":"ElementaryTypeName","src":"2743:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76427,"indexed":false,"mutability":"mutable","name":"_type","nameLocation":"2791:5:108","nodeType":"VariableDeclaration","scope":76438,"src":"2764:32:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"typeName":{"id":76426,"nodeType":"UserDefinedTypeName","pathNode":{"id":76425,"name":"ITradingStorage.updateType","nodeType":"IdentifierPath","referencedDeclaration":89408,"src":"2764:26:108"},"referencedDeclaration":89408,"src":"2764:26:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"visibility":"internal"},{"constant":false,"id":76430,"indexed":false,"mutability":"mutable","name":"newTrade","nameLocation":"2829:8:108","nodeType":"VariableDeclaration","scope":76438,"src":"2807:30:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":76429,"nodeType":"UserDefinedTypeName","pathNode":{"id":76428,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"2807:21:108"},"referencedDeclaration":89438,"src":"2807:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"},{"constant":false,"id":76432,"indexed":false,"mutability":"mutable","name":"marginFees","nameLocation":"2853:10:108","nodeType":"VariableDeclaration","scope":76438,"src":"2848:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76431,"name":"uint","nodeType":"ElementaryTypeName","src":"2848:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76434,"indexed":false,"mutability":"mutable","name":"lossProtectionTier","nameLocation":"2879:18:108","nodeType":"VariableDeclaration","scope":76438,"src":"2874:23:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76433,"name":"uint","nodeType":"ElementaryTypeName","src":"2874:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76436,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2913:9:108","nodeType":"VariableDeclaration","scope":76438,"src":"2908:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76435,"name":"uint","nodeType":"ElementaryTypeName","src":"2908:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2674:255:108"}},{"id":76444,"nodeType":"EventDefinition","src":"2938:82:108","nodes":[],"anonymous":false,"name":"OperatorUpdated","nameLocation":"2944:15:108","parameters":{"id":76443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76440,"indexed":false,"mutability":"mutable","name":"operator","nameLocation":"2978:8:108","nodeType":"VariableDeclaration","scope":76444,"src":"2970:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76439,"name":"address","nodeType":"ElementaryTypeName","src":"2970:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76442,"indexed":false,"mutability":"mutable","name":"isOperator","nameLocation":"3002:10:108","nodeType":"VariableDeclaration","scope":76444,"src":"2997:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76441,"name":"bool","nodeType":"ElementaryTypeName","src":"2997:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2959:60:108"}},{"id":76458,"nodeType":"ModifierDefinition","src":"3046:99:108","nodes":[],"body":{"id":76457,"nodeType":"Block","src":"3065:80:108","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76447,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3084:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3084:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76449,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"3098:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gov","nodeType":"MemberAccess","referencedDeclaration":89575,"src":"3098:12:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3098:14:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3084:28:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"474f565f4f4e4c59","id":76453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3114:10:108","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":76446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3076:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3076:49:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76455,"nodeType":"ExpressionStatement","src":"3076:49:108"},{"id":76456,"nodeType":"PlaceholderStatement","src":"3136:1:108"}]},"name":"onlyGov","nameLocation":"3055:7:108","parameters":{"id":76445,"nodeType":"ParameterList","parameters":[],"src":"3062:2:108"},"virtual":false,"visibility":"internal"},{"id":76472,"nodeType":"ModifierDefinition","src":"3153:132:108","nodes":[],"body":{"id":76471,"nodeType":"Block","src":"3178:107:108","nodes":[],"statements":[{"condition":{"id":76460,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76273,"src":"3193:13:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76469,"nodeType":"IfStatement","src":"3189:76:108","trueBody":{"expression":{"arguments":[{"baseExpression":{"id":76462,"name":"whitelistedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76279,"src":"3216:18:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76465,"indexExpression":{"expression":{"id":76463,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3235:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3235:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:30:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57484954454c4953545f4f4e4c59","id":76466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3248:16:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_cf55b8c09bae4cc53fb51a35e69dc1a398c902a5d62a2c69c0000726cd8db0bf","typeString":"literal_string \"WHITELIST_ONLY\""},"value":"WHITELIST_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cf55b8c09bae4cc53fb51a35e69dc1a398c902a5d62a2c69c0000726cd8db0bf","typeString":"literal_string \"WHITELIST_ONLY\""}],"id":76461,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3208:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3208:57:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76468,"nodeType":"ExpressionStatement","src":"3208:57:108"}},{"id":76470,"nodeType":"PlaceholderStatement","src":"3276:1:108"}]},"name":"onlyWhitelist","nameLocation":"3162:13:108","parameters":{"id":76459,"nodeType":"ParameterList","parameters":[],"src":"3175:2:108"},"virtual":false,"visibility":"internal"},{"id":76484,"nodeType":"ModifierDefinition","src":"3293:103:108","nodes":[],"body":{"id":76483,"nodeType":"Block","src":"3317:79:108","nodes":[],"statements":[{"expression":{"arguments":[{"baseExpression":{"id":76475,"name":"isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76289,"src":"3336:10:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76478,"indexExpression":{"expression":{"id":76476,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3347:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3347:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3336:22:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f4e4c595f4f50455241544f52","id":76479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3360:15:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_d38a93aafd51bf14ce027e567f449d56505656e02188b4f659e375d30e459abc","typeString":"literal_string \"ONLY_OPERATOR\""},"value":"ONLY_OPERATOR"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d38a93aafd51bf14ce027e567f449d56505656e02188b4f659e375d30e459abc","typeString":"literal_string \"ONLY_OPERATOR\""}],"id":76474,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3328:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3328:48:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76481,"nodeType":"ExpressionStatement","src":"3328:48:108"},{"id":76482,"nodeType":"PlaceholderStatement","src":"3387:1:108"}]},"name":"onlyOperator","nameLocation":"3302:12:108","parameters":{"id":76473,"nodeType":"ParameterList","parameters":[],"src":"3314:2:108"},"virtual":false,"visibility":"internal"},{"id":76491,"nodeType":"FunctionDefinition","src":"3404:55:108","nodes":[],"body":{"id":76490,"nodeType":"Block","src":"3418:41:108","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76487,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"3429:20:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3429:22:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76489,"nodeType":"ExpressionStatement","src":"3429:22:108"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":76485,"nodeType":"ParameterList","parameters":[],"src":"3415:2:108"},"returnParameters":{"id":76486,"nodeType":"ParameterList","parameters":[],"src":"3418:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76525,"nodeType":"FunctionDefinition","src":"3653:276:108","nodes":[],"body":{"id":76524,"nodeType":"Block","src":"3733:196:108","nodes":[],"statements":[{"expression":{"id":76505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76501,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"3744:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76503,"name":"_storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76494,"src":"3771:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76502,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"3755:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":76504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"src":"3744:37:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76506,"nodeType":"ExpressionStatement","src":"3744:37:108"},{"expression":{"id":76511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76507,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76269,"src":"3792:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76509,"name":"_pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76496,"src":"3815:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76508,"name":"IPairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88745,"src":"3804:10:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairInfos_$88745_$","typeString":"type(contract IPairInfos)"}},"id":76510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3804:22:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"src":"3792:34:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":76512,"nodeType":"ExpressionStatement","src":"3792:34:108"},{"expression":{"id":76515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76513,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"3837:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3330","id":76514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3859:2:108","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"3837:24:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76516,"nodeType":"ExpressionStatement","src":"3837:24:108"},{"expression":{"id":76519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76517,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76273,"src":"3872:13:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":76518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3888:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3872:21:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76520,"nodeType":"ExpressionStatement","src":"3872:21:108"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76521,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43568,"src":"3904:15:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3904:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76523,"nodeType":"ExpressionStatement","src":"3904:17:108"}]},"documentation":{"id":76492,"nodeType":"StructuredDocumentation","src":"3465:182:108","text":" @notice Initializes the proxy\n @param _storageT The address of the storage contract\n @param _pairInfos The address of the pair information contract"},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":76499,"kind":"modifierInvocation","modifierName":{"id":76498,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"3721:11:108"},"nodeType":"ModifierInvocation","src":"3721:11:108"}],"name":"initialize","nameLocation":"3662:10:108","parameters":{"id":76497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76494,"mutability":"mutable","name":"_storageT","nameLocation":"3681:9:108","nodeType":"VariableDeclaration","scope":76525,"src":"3673:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76493,"name":"address","nodeType":"ElementaryTypeName","src":"3673:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76496,"mutability":"mutable","name":"_pairInfos","nameLocation":"3700:10:108","nodeType":"VariableDeclaration","scope":76525,"src":"3692:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76495,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3672:39:108"},"returnParameters":{"id":76500,"nodeType":"ParameterList","parameters":[],"src":"3733:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76550,"nodeType":"FunctionDefinition","src":"4074:214:108","nodes":[],"body":{"id":76549,"nodeType":"Block","src":"4137:151:108","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76534,"name":"_blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76528,"src":"4156:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4166:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4156:11:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56414c55455f30","id":76537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4169:9:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_faca6a1fb24306958cb0c42cf55055fff89bbd8440b53b2b0973090b8faffb26","typeString":"literal_string \"VALUE_0\""},"value":"VALUE_0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_faca6a1fb24306958cb0c42cf55055fff89bbd8440b53b2b0973090b8faffb26","typeString":"literal_string \"VALUE_0\""}],"id":76533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4148:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4148:31:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76539,"nodeType":"ExpressionStatement","src":"4148:31:108"},{"expression":{"id":76542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76540,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"4190:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76541,"name":"_blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76528,"src":"4212:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4190:29:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76543,"nodeType":"ExpressionStatement","src":"4190:29:108"},{"eventCall":{"arguments":[{"hexValue":"6c696d69744f726465727354696d656c6f636b","id":76545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4249:21:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b279044158826e65993413efeb280f6c2b2ab3a905ed7ebca62bfafb8406c16","typeString":"literal_string \"limitOrdersTimelock\""},"value":"limitOrdersTimelock"},{"id":76546,"name":"_blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76528,"src":"4272:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9b279044158826e65993413efeb280f6c2b2ab3a905ed7ebca62bfafb8406c16","typeString":"literal_string \"limitOrdersTimelock\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76544,"name":"NumberUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76299,"src":"4235:13:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":76547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4235:45:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76548,"nodeType":"EmitStatement","src":"4230:50:108"}]},"documentation":{"id":76526,"nodeType":"StructuredDocumentation","src":"3937:131:108","text":" @notice Sets the time-lock for limit order updates\n @param _blocks The new time-lock duration in blocks"},"functionSelector":"d4a1caa7","implemented":true,"kind":"function","modifiers":[{"id":76531,"kind":"modifierInvocation","modifierName":{"id":76530,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"4129:7:108"},"nodeType":"ModifierInvocation","src":"4129:7:108"}],"name":"setLimitOrdersTimelock","nameLocation":"4083:22:108","parameters":{"id":76529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76528,"mutability":"mutable","name":"_blocks","nameLocation":"4111:7:108","nodeType":"VariableDeclaration","scope":76550,"src":"4106:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76527,"name":"uint","nodeType":"ElementaryTypeName","src":"4106:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4105:14:108"},"returnParameters":{"id":76532,"nodeType":"ParameterList","parameters":[],"src":"4137:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76579,"nodeType":"FunctionDefinition","src":"4423:209:108","nodes":[],"body":{"id":76578,"nodeType":"Block","src":"4480:152:108","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76559,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76553,"src":"4499:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4519:1:108","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":76561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4511:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76560,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:108","typeDescriptions":{}}},"id":76563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4511:10:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4499:22:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76558,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4491:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":76565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4491:31:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76566,"nodeType":"ExpressionStatement","src":"4491:31:108"},{"expression":{"id":76571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76567,"name":"whitelistedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76279,"src":"4533:18:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76569,"indexExpression":{"id":76568,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76553,"src":"4552:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4533:28:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":76570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4564:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4533:35:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76572,"nodeType":"ExpressionStatement","src":"4533:35:108"},{"eventCall":{"arguments":[{"hexValue":"61646457686974656c697374","id":76574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4599:14:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_4212d3609a4d6c0ed57c7740746a2d34664ebfe851485066ec45b5de67c5aea0","typeString":"literal_string \"addWhitelist\""},"value":"addWhitelist"},{"id":76575,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76553,"src":"4615:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4212d3609a4d6c0ed57c7740746a2d34664ebfe851485066ec45b5de67c5aea0","typeString":"literal_string \"addWhitelist\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":76573,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76305,"src":"4584:14:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":76576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4584:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76577,"nodeType":"EmitStatement","src":"4579:45:108"}]},"documentation":{"id":76551,"nodeType":"StructuredDocumentation","src":"4296:121:108","text":" @notice Adds an address to the whitelist\n @param _address The address to add to the whitelist"},"functionSelector":"f80f5dd5","implemented":true,"kind":"function","modifiers":[{"id":76556,"kind":"modifierInvocation","modifierName":{"id":76555,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"4472:7:108"},"nodeType":"ModifierInvocation","src":"4472:7:108"}],"name":"addWhitelist","nameLocation":"4432:12:108","parameters":{"id":76554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76553,"mutability":"mutable","name":"_address","nameLocation":"4453:8:108","nodeType":"VariableDeclaration","scope":76579,"src":"4445:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76552,"name":"address","nodeType":"ElementaryTypeName","src":"4445:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4444:18:108"},"returnParameters":{"id":76557,"nodeType":"ParameterList","parameters":[],"src":"4480:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76608,"nodeType":"FunctionDefinition","src":"4776:216:108","nodes":[],"body":{"id":76607,"nodeType":"Block","src":"4836:156:108","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76588,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"4855:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4875:1:108","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":76590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4867:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76589,"name":"address","nodeType":"ElementaryTypeName","src":"4867:7:108","typeDescriptions":{}}},"id":76592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4867:10:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4855:22:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76587,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4847:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":76594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4847:31:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76595,"nodeType":"ExpressionStatement","src":"4847:31:108"},{"expression":{"id":76600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76596,"name":"whitelistedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76279,"src":"4889:18:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76598,"indexExpression":{"id":76597,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"4908:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4889:28:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":76599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4920:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4889:36:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76601,"nodeType":"ExpressionStatement","src":"4889:36:108"},{"eventCall":{"arguments":[{"hexValue":"72656d6f766557686974656c697374","id":76603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4956:17:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_0bfaac9eeaf7bb2f1d3abe4c1805c5187a953056c84e47339e486654919ea701","typeString":"literal_string \"removeWhitelist\""},"value":"removeWhitelist"},{"id":76604,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"4975:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0bfaac9eeaf7bb2f1d3abe4c1805c5187a953056c84e47339e486654919ea701","typeString":"literal_string \"removeWhitelist\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":76602,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76305,"src":"4941:14:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":76605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4941:43:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76606,"nodeType":"EmitStatement","src":"4936:48:108"}]},"documentation":{"id":76580,"nodeType":"StructuredDocumentation","src":"4640:130:108","text":" @notice Remove an address from the whitelist\n @param _address The address to remove from the whitelist"},"functionSelector":"78c8cda7","implemented":true,"kind":"function","modifiers":[{"id":76585,"kind":"modifierInvocation","modifierName":{"id":76584,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"4828:7:108"},"nodeType":"ModifierInvocation","src":"4828:7:108"}],"name":"removeWhitelist","nameLocation":"4785:15:108","parameters":{"id":76583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76582,"mutability":"mutable","name":"_address","nameLocation":"4809:8:108","nodeType":"VariableDeclaration","scope":76608,"src":"4801:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76581,"name":"address","nodeType":"ElementaryTypeName","src":"4801:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4800:18:108"},"returnParameters":{"id":76586,"nodeType":"ParameterList","parameters":[],"src":"4836:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76618,"nodeType":"FunctionDefinition","src":"5054:61:108","nodes":[],"body":{"id":76617,"nodeType":"Block","src":"5088:27:108","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76614,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43642,"src":"5099:6:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5099:8:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76616,"nodeType":"ExpressionStatement","src":"5099:8:108"}]},"documentation":{"id":76609,"nodeType":"StructuredDocumentation","src":"5000:48:108","text":" @notice Pauses the contract"},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":76612,"kind":"modifierInvocation","modifierName":{"id":76611,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"5080:7:108"},"nodeType":"ModifierInvocation","src":"5080:7:108"}],"name":"pause","nameLocation":"5063:5:108","parameters":{"id":76610,"nodeType":"ParameterList","parameters":[],"src":"5068:2:108"},"returnParameters":{"id":76613,"nodeType":"ParameterList","parameters":[],"src":"5088:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76628,"nodeType":"FunctionDefinition","src":"5179:65:108","nodes":[],"body":{"id":76627,"nodeType":"Block","src":"5215:29:108","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76624,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43658,"src":"5226:8:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5226:10:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76626,"nodeType":"ExpressionStatement","src":"5226:10:108"}]},"documentation":{"id":76619,"nodeType":"StructuredDocumentation","src":"5123:50:108","text":" @notice Unpauses the contract"},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":76622,"kind":"modifierInvocation","modifierName":{"id":76621,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"5207:7:108"},"nodeType":"ModifierInvocation","src":"5207:7:108"}],"name":"unpause","nameLocation":"5188:7:108","parameters":{"id":76620,"nodeType":"ParameterList","parameters":[],"src":"5195:2:108"},"returnParameters":{"id":76623,"nodeType":"ParameterList","parameters":[],"src":"5215:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76644,"nodeType":"FunctionDefinition","src":"5316:133:108","nodes":[],"body":{"id":76643,"nodeType":"Block","src":"5360:89:108","nodes":[],"statements":[{"expression":{"id":76637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76634,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76273,"src":"5371:13:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5387:14:108","subExpression":{"id":76635,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76273,"src":"5388:13:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5371:30:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76638,"nodeType":"ExpressionStatement","src":"5371:30:108"},{"eventCall":{"arguments":[{"id":76640,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76273,"src":"5427:13:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76639,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"5417:9:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":76641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:24:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76642,"nodeType":"EmitStatement","src":"5412:29:108"}]},"documentation":{"id":76629,"nodeType":"StructuredDocumentation","src":"5252:58:108","text":" @notice Enables/disables Whitelisting"},"functionSelector":"7e15144b","implemented":true,"kind":"function","modifiers":[{"id":76632,"kind":"modifierInvocation","modifierName":{"id":76631,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"5352:7:108"},"nodeType":"ModifierInvocation","src":"5352:7:108"}],"name":"toggleWhitelist","nameLocation":"5325:15:108","parameters":{"id":76630,"nodeType":"ParameterList","parameters":[],"src":"5340:2:108"},"returnParameters":{"id":76633,"nodeType":"ParameterList","parameters":[],"src":"5360:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76665,"nodeType":"FunctionDefinition","src":"5457:186:108","nodes":[],"body":{"id":76664,"nodeType":"Block","src":"5534:109:108","nodes":[],"statements":[{"expression":{"id":76657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76653,"name":"isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76289,"src":"5545:10:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76655,"indexExpression":{"id":76654,"name":"_operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76646,"src":"5556:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5545:21:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76656,"name":"_isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76648,"src":"5569:11:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5545:35:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76658,"nodeType":"ExpressionStatement","src":"5545:35:108"},{"eventCall":{"arguments":[{"id":76660,"name":"_operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76646,"src":"5612:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76661,"name":"_isOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76648,"src":"5623:11:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76659,"name":"OperatorUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76444,"src":"5596:15:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":76662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5596:39:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76663,"nodeType":"EmitStatement","src":"5591:44:108"}]},"functionSelector":"6d44a3b2","implemented":true,"kind":"function","modifiers":[{"id":76651,"kind":"modifierInvocation","modifierName":{"id":76650,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"5527:7:108"},"nodeType":"ModifierInvocation","src":"5527:7:108"}],"name":"updateOperator","nameLocation":"5466:14:108","parameters":{"id":76649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76646,"mutability":"mutable","name":"_operator","nameLocation":"5489:9:108","nodeType":"VariableDeclaration","scope":76665,"src":"5481:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76645,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76648,"mutability":"mutable","name":"_isOperator","nameLocation":"5505:11:108","nodeType":"VariableDeclaration","scope":76665,"src":"5500:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76647,"name":"bool","nodeType":"ElementaryTypeName","src":"5500:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5480:37:108"},"returnParameters":{"id":76652,"nodeType":"ParameterList","parameters":[],"src":"5534:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76687,"nodeType":"FunctionDefinition","src":"5651:167:108","nodes":[],"body":{"id":76686,"nodeType":"Block","src":"5720:98:108","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76673,"name":"_reciever","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76667,"src":"5739:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5760:1:108","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":76675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5752:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76674,"name":"address","nodeType":"ElementaryTypeName","src":"5752:7:108","typeDescriptions":{}}},"id":76677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:10:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5739:23:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a45524f5f41444452455353","id":76679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5764:14:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af","typeString":"literal_string \"ZERO_ADDRESS\""},"value":"ZERO_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af","typeString":"literal_string \"ZERO_ADDRESS\""}],"id":76672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5731:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5731:48:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76681,"nodeType":"ExpressionStatement","src":"5731:48:108"},{"expression":{"id":76684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76682,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76275,"src":"5790:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76683,"name":"_reciever","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76667,"src":"5801:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5790:20:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76685,"nodeType":"ExpressionStatement","src":"5790:20:108"}]},"functionSelector":"9e2033f5","implemented":true,"kind":"function","modifiers":[{"id":76670,"kind":"modifierInvocation","modifierName":{"id":76669,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":76458,"src":"5713:7:108"},"nodeType":"ModifierInvocation","src":"5713:7:108"}],"name":"setMarketExecFeeReciever","nameLocation":"5660:24:108","parameters":{"id":76668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76667,"mutability":"mutable","name":"_reciever","nameLocation":"5693:9:108","nodeType":"VariableDeclaration","scope":76687,"src":"5685:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76666,"name":"address","nodeType":"ElementaryTypeName","src":"5685:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5684:19:108"},"returnParameters":{"id":76671,"nodeType":"ParameterList","parameters":[],"src":"5720:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76883,"nodeType":"FunctionDefinition","src":"6174:2014:108","nodes":[],"body":{"id":76882,"nodeType":"Block","src":"6426:1762:108","nodes":[],"statements":[{"assignments":[76711],"declarations":[{"constant":false,"id":76711,"mutability":"mutable","name":"aggregator","nameLocation":"6454:10:108","nodeType":"VariableDeclaration","scope":76882,"src":"6437:27:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":76710,"nodeType":"UserDefinedTypeName","pathNode":{"id":76709,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"6437:16:108"},"referencedDeclaration":89248,"src":"6437:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":76715,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76712,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"6467:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"6467:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":76714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6467:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"6437:56:108"},{"assignments":[76720],"declarations":[{"constant":false,"id":76720,"mutability":"mutable","name":"t","nameLocation":"6535:1:108","nodeType":"VariableDeclaration","scope":76882,"src":"6506:30:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":76719,"nodeType":"UserDefinedTypeName","pathNode":{"id":76718,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"6506:21:108"},"referencedDeclaration":89438,"src":"6506:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":76728,"initialValue":{"arguments":[{"expression":{"id":76723,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6559:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6559:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76725,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"6571:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76726,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"6583:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76721,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"6539:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"6539:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":76727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:51:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"6506:84:108"},{"assignments":[76733],"declarations":[{"constant":false,"id":76733,"mutability":"mutable","name":"i","nameLocation":"6634:1:108","nodeType":"VariableDeclaration","scope":76882,"src":"6601:34:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":76732,"nodeType":"UserDefinedTypeName","pathNode":{"id":76731,"name":"ITradingStorage.TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"6601:25:108"},"referencedDeclaration":89449,"src":"6601:25:108","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":76741,"initialValue":{"arguments":[{"expression":{"id":76736,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6662:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6662:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76738,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"6674:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76739,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"6686:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76734,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"6638:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"6638:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":76740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6638:55:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"nodeType":"VariableDeclarationStatement","src":"6601:92:108"},{"expression":{"arguments":[{"id":76745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6714:20:108","subExpression":{"expression":{"id":76743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76733,"src":"6715:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":76744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"6715:19:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"414c52454144595f4245494e475f434c4f534544","id":76746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6736:22:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_df542685560a7e4341cf63a32a2f89c8e5b29bdf29ec438e169e8e3ce4776c0a","typeString":"literal_string \"ALREADY_BEING_CLOSED\""},"value":"ALREADY_BEING_CLOSED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df542685560a7e4341cf63a32a2f89c8e5b29bdf29ec438e169e8e3ce4776c0a","typeString":"literal_string \"ALREADY_BEING_CLOSED\""}],"id":76742,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6706:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6706:53:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76748,"nodeType":"ExpressionStatement","src":"6706:53:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76750,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6778:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"6778:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6791:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6778:14:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f5452414445","id":76754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6794:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""},"value":"NO_TRADE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""}],"id":76749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6770:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:35:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76756,"nodeType":"ExpressionStatement","src":"6770:35:108"},{"assignments":[76758],"declarations":[{"constant":false,"id":76758,"mutability":"mutable","name":"marginFees","nameLocation":"6823:10:108","nodeType":"VariableDeclaration","scope":76882,"src":"6818:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76757,"name":"uint","nodeType":"ElementaryTypeName","src":"6818:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76774,"initialValue":{"arguments":[{"expression":{"id":76761,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6880:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"6880:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76763,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6903:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"6903:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76765,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6929:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"6929:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76767,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6951:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"6951:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":76769,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"6971:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"6971:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76771,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7003:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7003:10:108","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"}],"expression":{"id":76759,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76269,"src":"6836:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":76760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradeRolloverFee","nodeType":"MemberAccess","referencedDeclaration":88736,"src":"6836:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_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 external returns (uint256)"}},"id":76773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6836:188:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6818:206:108"},{"expression":{"id":76783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76775,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76707,"src":"7037:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76778,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"7067:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":76779,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"7079:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":76780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"7079:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":76781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UPDATE_MARGIN","nodeType":"MemberAccess","referencedDeclaration":89073,"src":"7079:40:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}],"expression":{"id":76776,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76711,"src":"7047:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":89178,"src":"7047:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_enum$_OrderType_$89075_$returns$_t_uint256_$","typeString":"function (uint256,enum IPriceAggregator.OrderType) external returns (uint256)"}},"id":76782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7047:73:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7037:83:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76784,"nodeType":"ExpressionStatement","src":"7037:83:108"},{"expression":{"arguments":[{"id":76788,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76707,"src":"7186:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":76791,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7245:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7245:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76793,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"7257:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76794,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"7269:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76795,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76695,"src":"7277:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},{"id":76796,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76697,"src":"7284:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76797,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76733,"src":"7293:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":76798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lossProtection","nodeType":"MemberAccess","referencedDeclaration":89448,"src":"7293:16:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76799,"name":"marginFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76758,"src":"7311:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76800,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7323:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7323:10:108","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_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76789,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"7208:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":76790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PendingMarginUpdate","nodeType":"MemberAccess","referencedDeclaration":89116,"src":"7208:36:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PendingMarginUpdate_$89116_storage_ptr_$","typeString":"type(struct IPriceAggregator.PendingMarginUpdate storage pointer)"}},"id":76802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7208:126:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}],"expression":{"id":76785,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76711,"src":"7131:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storePendingMarginUpdateOrder","nodeType":"MemberAccess","referencedDeclaration":89229,"src":"7131:40:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_memory_ptr_$returns$__$","typeString":"function (uint256,struct IPriceAggregator.PendingMarginUpdate memory) external"}},"id":76803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:214:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76804,"nodeType":"ExpressionStatement","src":"7131:214:108"},{"expression":{"id":76820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":76805,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7359:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7359:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76808,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7371:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"7371:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76810,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7358:31:108","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":76812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76733,"src":"7428:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":76813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89440,"src":"7428:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76814,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7461:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"7461:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76816,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76695,"src":"7493:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},{"id":76817,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76697,"src":"7513:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76818,"name":"marginFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76758,"src":"7535:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76811,"name":"_calculateNewLeverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78292,"src":"7392:21:108","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_updateType_$89408_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,enum ITradingStorage.updateType,uint256,uint256) pure returns (uint256,uint256)"}},"id":76819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7392:164:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7358:198:108","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76821,"nodeType":"ExpressionStatement","src":"7358:198:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76823,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7589:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7589:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7602:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7589:14:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76827,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7624:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7624:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"expression":{"id":76833,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7680:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"7680:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76829,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76711,"src":"7638:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"7638:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":76831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7638:25:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":76832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMinLeverage","nodeType":"MemberAccess","referencedDeclaration":88938,"src":"7638:41:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":76835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7638:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7624:68:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7589:103:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76838,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7713:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7713:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"id":76844,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7769:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":76845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"7769:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76840,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76711,"src":"7727:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"7727:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":76842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7727:25:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":76843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMaxLeverage","nodeType":"MemberAccess","referencedDeclaration":88945,"src":"7727:41:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":76846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7727:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7713:68:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7589:192:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c455645524147455f494e434f5252454354","id":76849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7796:20:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e95fde28c8d023362b0d0c2d7fd45b24f3e60f4359f1fd6fe517212b7fdf324","typeString":"literal_string \"LEVERAGE_INCORRECT\""},"value":"LEVERAGE_INCORRECT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e95fde28c8d023362b0d0c2d7fd45b24f3e60f4359f1fd6fe517212b7fdf324","typeString":"literal_string \"LEVERAGE_INCORRECT\""}],"id":76822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7567:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7567:260:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76851,"nodeType":"ExpressionStatement","src":"7567:260:108"},{"eventCall":{"arguments":[{"expression":{"id":76853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7873:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7873:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76855,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"7899:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76856,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"7925:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76857,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76695,"src":"7947:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},{"id":76858,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"7968:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"id":76859,"name":"marginFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76758,"src":"7985:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76733,"src":"8011:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":76861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lossProtection","nodeType":"MemberAccess","referencedDeclaration":89448,"src":"8011:16:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76862,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8043:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":76863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"8043:15:108","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_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76852,"name":"MarginUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76438,"src":"7845:13:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_updateType_$89408_$_t_struct$_Trade_$89438_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,enum ITradingStorage.updateType,struct ITradingStorage.Trade memory,uint256,uint256,uint256)"}},"id":76864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7845:214:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76865,"nodeType":"EmitStatement","src":"7840:219:108"},{"expression":{"arguments":[{"id":76869,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76720,"src":"8105:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"expression":{"id":76866,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"8084:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateTrade","nodeType":"MemberAccess","referencedDeclaration":89792,"src":"8084:20:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$returns$__$","typeString":"function (struct ITradingStorage.Trade memory) external"}},"id":76870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8084:23:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76871,"nodeType":"ExpressionStatement","src":"8084:23:108"},{"expression":{"arguments":[{"id":76878,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76707,"src":"8155:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":76879,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76700,"src":"8164:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76872,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76711,"src":"8118:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fulfill","nodeType":"MemberAccess","referencedDeclaration":89186,"src":"8118:18:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":76877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":76875,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8144:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8144:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8118:36:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":76880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8118:62:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76881,"nodeType":"ExpressionStatement","src":"8118:62:108"}]},"documentation":{"id":76688,"nodeType":"StructuredDocumentation","src":"5826:342:108","text":" @notice Updates(Deposit/Withdraw) the margin for an open trade\n @param _pairIndex The index of the trading pair\n @param _index The index of the trade\n @param _type Withdraw or Deposit\n @param _amount The Collateral by which to update the margin\n @param priceUpdateData Pyth price update"},"functionSelector":"cd90b8a4","implemented":true,"kind":"function","modifiers":[{"id":76703,"kind":"modifierInvocation","modifierName":{"id":76702,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"6377:13:108"},"nodeType":"ModifierInvocation","src":"6377:13:108"},{"id":76705,"kind":"modifierInvocation","modifierName":{"id":76704,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"6391:13:108"},"nodeType":"ModifierInvocation","src":"6391:13:108"}],"name":"updateMargin","nameLocation":"6183:12:108","parameters":{"id":76701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76690,"mutability":"mutable","name":"_pairIndex","nameLocation":"6211:10:108","nodeType":"VariableDeclaration","scope":76883,"src":"6206:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76689,"name":"uint","nodeType":"ElementaryTypeName","src":"6206:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76692,"mutability":"mutable","name":"_index","nameLocation":"6237:6:108","nodeType":"VariableDeclaration","scope":76883,"src":"6232:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76691,"name":"uint","nodeType":"ElementaryTypeName","src":"6232:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76695,"mutability":"mutable","name":"_type","nameLocation":"6281:5:108","nodeType":"VariableDeclaration","scope":76883,"src":"6254:32:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"typeName":{"id":76694,"nodeType":"UserDefinedTypeName","pathNode":{"id":76693,"name":"ITradingStorage.updateType","nodeType":"IdentifierPath","referencedDeclaration":89408,"src":"6254:26:108"},"referencedDeclaration":89408,"src":"6254:26:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"visibility":"internal"},{"constant":false,"id":76697,"mutability":"mutable","name":"_amount","nameLocation":"6302:7:108","nodeType":"VariableDeclaration","scope":76883,"src":"6297:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76696,"name":"uint","nodeType":"ElementaryTypeName","src":"6297:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76700,"mutability":"mutable","name":"priceUpdateData","nameLocation":"6337:15:108","nodeType":"VariableDeclaration","scope":76883,"src":"6320:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76698,"name":"bytes","nodeType":"ElementaryTypeName","src":"6320:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76699,"nodeType":"ArrayTypeName","src":"6320:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"6195:164:108"},"returnParameters":{"id":76708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76707,"mutability":"mutable","name":"orderId","nameLocation":"6418:7:108","nodeType":"VariableDeclaration","scope":76883,"src":"6413:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76706,"name":"uint","nodeType":"ElementaryTypeName","src":"6413:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6412:14:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77228,"nodeType":"FunctionDefinition","src":"8483:3569:108","nodes":[],"body":{"id":77227,"nodeType":"Block","src":"8756:3296:108","nodes":[],"statements":[{"assignments":[76905],"declarations":[{"constant":false,"id":76905,"mutability":"mutable","name":"aggregator","nameLocation":"8794:10:108","nodeType":"VariableDeclaration","scope":77227,"src":"8777:27:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":76904,"nodeType":"UserDefinedTypeName","pathNode":{"id":76903,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"8777:16:108"},"referencedDeclaration":89248,"src":"8777:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":76909,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76906,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"8807:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"8807:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":76908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8807:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"8777:56:108"},{"assignments":[76912],"declarations":[{"constant":false,"id":76912,"mutability":"mutable","name":"pairsStored","nameLocation":"8857:11:108","nodeType":"VariableDeclaration","scope":77227,"src":"8844:24:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":76911,"nodeType":"UserDefinedTypeName","pathNode":{"id":76910,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"8844:12:108"},"referencedDeclaration":89055,"src":"8844:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":76916,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76913,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76905,"src":"8871:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":76914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"8871:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":76915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8871:25:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"8844:52:108"},{"assignments":[76918,null],"declarations":[{"constant":false,"id":76918,"mutability":"mutable","name":"sent","nameLocation":"8915:4:108","nodeType":"VariableDeclaration","scope":77227,"src":"8910:9:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76917,"name":"bool","nodeType":"ElementaryTypeName","src":"8910:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":76929,"initialValue":{"arguments":[{"hexValue":"","id":76927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8966:2:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":76921,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76275,"src":"8933:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8925:8:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":76919,"name":"address","nodeType":"ElementaryTypeName","src":"8925:8:108","stateMutability":"payable","typeDescriptions":{}}},"id":76922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8925:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":76923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"8925:22:108","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":76926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":76924,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8955:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8955:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8925:40:108","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":76928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8925:44:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"8909:60:108"},{"expression":{"arguments":[{"id":76931,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76918,"src":"8988:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455845435554494f4e5f4645455f4e4f545f53454e54","id":76932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8994:24:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_98db2e59073d6cd86a820ea520a14d8c55fe3f37778f825cd0fb29e834006a06","typeString":"literal_string \"EXECUTION_FEE_NOT_SENT\""},"value":"EXECUTION_FEE_NOT_SENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_98db2e59073d6cd86a820ea520a14d8c55fe3f37778f825cd0fb29e834006a06","typeString":"literal_string \"EXECUTION_FEE_NOT_SENT\""}],"id":76930,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8980:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8980:39:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76934,"nodeType":"ExpressionStatement","src":"8980:39:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":76938,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9070:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9070:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":76936,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9040:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pendingOrderIdsCount","nodeType":"MemberAccess","referencedDeclaration":89871,"src":"9040:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":76940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9040:41:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76941,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9084:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxPendingMarketOrders","nodeType":"MemberAccess","referencedDeclaration":89876,"src":"9084:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":76943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9084:33:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9040:77:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d41585f50454e44494e475f4f5244455253","id":76945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9119:20:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c04e4d85dc455e86c3cd8c6dcf28e822955cec00171c2c94b1ae8b9f1b667cc0","typeString":"literal_string \"MAX_PENDING_ORDERS\""},"value":"MAX_PENDING_ORDERS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c04e4d85dc455e86c3cd8c6dcf28e822955cec00171c2c94b1ae8b9f1b667cc0","typeString":"literal_string \"MAX_PENDING_ORDERS\""}],"id":76935,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9032:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9032:108:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76947,"nodeType":"ExpressionStatement","src":"9032:108:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":76951,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9208:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9208:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76953,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9220:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9220:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76949,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9183:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesCount","nodeType":"MemberAccess","referencedDeclaration":89841,"src":"9183:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":76955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9183:49:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"expression":{"id":76958,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9284:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9284:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76960,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9296:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9296:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76956,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9252:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pendingMarketOpenCount","nodeType":"MemberAccess","referencedDeclaration":89850,"src":"9252:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":76962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9252:56:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9183:125:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"expression":{"id":76966,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9358:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9358:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76968,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9370:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9370:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76964,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9328:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openLimitOrdersCount","nodeType":"MemberAccess","referencedDeclaration":89832,"src":"9328:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":76970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9328:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9183:199:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76972,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"9402:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":76973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxTradesPerPair","nodeType":"MemberAccess","referencedDeclaration":89864,"src":"9402:25:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":76974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9402:27:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9183:246:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d41585f5452414445535f5045525f50414952","id":76976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9444:21:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_9049222efb65b51a69bebfb1c6377854f7c1221c2d7a90f135757aac8bcef3a2","typeString":"literal_string \"MAX_TRADES_PER_PAIR\""},"value":"MAX_TRADES_PER_PAIR"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9049222efb65b51a69bebfb1c6377854f7c1221c2d7a90f135757aac8bcef3a2","typeString":"literal_string \"MAX_TRADES_PER_PAIR\""}],"id":76948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9161:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9161:315:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76978,"nodeType":"ExpressionStatement","src":"9161:315:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":76983,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9520:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"9520:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":76980,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9497:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"9497:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"9497:22:108","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":76985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9497:34:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"expression":{"id":76988,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9565:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9565:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76986,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76912,"src":"9535:11:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":76987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMinLevPosUSDC","nodeType":"MemberAccess","referencedDeclaration":88998,"src":"9535:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":76990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9535:42:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9497:80:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42454c4f575f4d494e5f504f53","id":76992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9579:15:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e813f393d5d0f5a68331eb3279a80b774a306b5d639bbe320c06b3f065b88a6","typeString":"literal_string \"BELOW_MIN_POS\""},"value":"BELOW_MIN_POS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e813f393d5d0f5a68331eb3279a80b774a306b5d639bbe320c06b3f065b88a6","typeString":"literal_string \"BELOW_MIN_POS\""}],"id":76979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9489:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9489:106:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76994,"nodeType":"ExpressionStatement","src":"9489:106:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76996,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9630:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":76997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"9630:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9643:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9630:14:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77000,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9665:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"9665:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"expression":{"id":77004,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9707:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9707:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77002,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76912,"src":"9679:11:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":77003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMinLeverage","nodeType":"MemberAccess","referencedDeclaration":88938,"src":"9679:27:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":77006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9679:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9665:54:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9630:89:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77009,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9740:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"9740:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"id":77013,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9782:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"9782:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77011,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76912,"src":"9754:11:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":77012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMaxLeverage","nodeType":"MemberAccess","referencedDeclaration":88945,"src":"9754:27:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":77015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9754:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9740:54:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9630:164:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c455645524147455f494e434f5252454354","id":77018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9809:20:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e95fde28c8d023362b0d0c2d7fd45b24f3e60f4359f1fd6fe517212b7fdf324","typeString":"literal_string \"LEVERAGE_INCORRECT\""},"value":"LEVERAGE_INCORRECT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e95fde28c8d023362b0d0c2d7fd45b24f3e60f4359f1fd6fe517212b7fdf324","typeString":"literal_string \"LEVERAGE_INCORRECT\""}],"id":76995,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9608:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9608:232:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77020,"nodeType":"ExpressionStatement","src":"9608:232:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77022,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9861:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"9861:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":77024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9869:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9861:9:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":77026,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9875:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"9875:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77033,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9904:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"9904:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77035,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9911:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"9911:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9904:18:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9875:47:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77028,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9883:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"9883:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":77030,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9890:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"9890:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9883:18:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9874:49:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9861:62:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f5450","id":77041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9925:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_828dae73ef9701307e5a41dfddbd28d0536a9e33d721854916184d58601c73f6","typeString":"literal_string \"WRONG_TP\""},"value":"WRONG_TP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_828dae73ef9701307e5a41dfddbd28d0536a9e33d721854916184d58601c73f6","typeString":"literal_string \"WRONG_TP\""}],"id":77021,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9853:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9853:83:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77043,"nodeType":"ExpressionStatement","src":"9853:83:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77045,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9955:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"9955:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":77047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9963:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9955:9:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":77049,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9969:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"9969:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77056,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9998:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"9998:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":77058,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10005:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"10005:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9998:18:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9969:47:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77051,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9977:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"9977:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77053,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"9984:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"9984:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9977:18:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9968:49:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9955:62:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f534c","id":77064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10019:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_902e7ff5bda650d959cad0c5fd3f1aa9463d62e9b0480a9d7a7b7d0f24978996","typeString":"literal_string \"WRONG_SL\""},"value":"WRONG_SL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_902e7ff5bda650d959cad0c5fd3f1aa9463d62e9b0480a9d7a7b7d0f24978996","typeString":"literal_string \"WRONG_SL\""}],"id":77044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9947:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9947:83:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77066,"nodeType":"ExpressionStatement","src":"9947:83:108"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},"id":77071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77067,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76890,"src":"10047:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":77068,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"10056:8:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":77069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OpenLimitOrderType","nodeType":"MemberAccess","referencedDeclaration":88279,"src":"10056:27:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OpenLimitOrderType_$88279_$","typeString":"type(enum IExecute.OpenLimitOrderType)"}},"id":77070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET","nodeType":"MemberAccess","referencedDeclaration":88276,"src":"10056:34:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"src":"10047:43:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":77225,"nodeType":"Block","src":"11040:1005:108","statements":[{"expression":{"arguments":[{"expression":{"id":77158,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11079:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11079:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":77162,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"11099:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":77161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11091:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77160,"name":"address","nodeType":"ElementaryTypeName","src":"11091:7:108","typeDescriptions":{}}},"id":77163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11091:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77164,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11110:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"11110:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77155,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"11057:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"11057:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":77166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11057:72:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77167,"nodeType":"ExpressionStatement","src":"11057:72:108"},{"expression":{"id":77177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77168,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76901,"src":"11146:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":77171,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11176:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"11176:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":77173,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"11189:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":77174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"11189:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":77175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_OPEN","nodeType":"MemberAccess","referencedDeclaration":89069,"src":"11189:38:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}],"expression":{"id":77169,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76905,"src":"11156:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":89178,"src":"11156:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_enum$_OrderType_$89075_$returns$_t_uint256_$","typeString":"function (uint256,enum IPriceAggregator.OrderType) external returns (uint256)"}},"id":77176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11156:72:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11146:82:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77178,"nodeType":"ExpressionStatement","src":"11146:82:108"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":77186,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11401:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11401:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77188,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11438:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"11438:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":77190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11476:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11504:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":77192,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11532:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"11532:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":77194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11577:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":77195,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11605:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"11605:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":77197,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11637:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"11637:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77199,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11674:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"11674:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77201,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11705:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"11705:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":77203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11736:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":77184,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"11353:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Trade","nodeType":"MemberAccess","referencedDeclaration":89438,"src":"11353:21:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Trade_$89438_storage_ptr_$","typeString":"type(struct ITradingStorage.Trade storage pointer)"}},"id":77204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11353:407:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"hexValue":"30","id":77205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11783:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":77206,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11807:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"11807:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77208,"name":"_slippageP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76892,"src":"11841:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77182,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"11296:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89484,"src":"11296:34:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PendingMarketOrder_$89484_storage_ptr_$","typeString":"type(struct ITradingStorage.PendingMarketOrder storage pointer)"}},"id":77209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11296:574:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},{"id":77210,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76901,"src":"11889:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":77211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11915:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":77179,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"11245:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storePendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89674,"src":"11245:32:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_PendingMarketOrder_$89484_memory_ptr_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (struct ITradingStorage.PendingMarketOrder memory,uint256,bool) external"}},"id":77212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11245:689:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77213,"nodeType":"ExpressionStatement","src":"11245:689:108"},{"eventCall":{"arguments":[{"expression":{"id":77215,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11977:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11977:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77217,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"11989:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"11989:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":77219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12002:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":77220,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76901,"src":"12008:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77221,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12017:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"12017:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77214,"name":"MarketOrderInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76317,"src":"11956:20:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,bool,uint256,uint256)"}},"id":77223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11956:77:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77224,"nodeType":"EmitStatement","src":"11951:82:108"}]},"id":77226,"nodeType":"IfStatement","src":"10043:2002:108","trueBody":{"id":77154,"nodeType":"Block","src":"10092:942:108","statements":[{"expression":{"arguments":[{"expression":{"id":77075,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10129:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10129:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":77079,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"10149:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":77078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10141:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77077,"name":"address","nodeType":"ElementaryTypeName","src":"10141:7:108","typeDescriptions":{}}},"id":77080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10141:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77081,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10160:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"10160:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":77083,"name":"_executionFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76894,"src":"10181:13:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:34:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77072,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"10107:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"10107:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":77085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10107:88:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77086,"nodeType":"ExpressionStatement","src":"10107:88:108"},{"assignments":[77088],"declarations":[{"constant":false,"id":77088,"mutability":"mutable","name":"index","nameLocation":"10215:5:108","nodeType":"VariableDeclaration","scope":77154,"src":"10210:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77087,"name":"uint","nodeType":"ElementaryTypeName","src":"10210:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77096,"initialValue":{"arguments":[{"expression":{"id":77091,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10257:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10257:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77093,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10269:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10269:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77089,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"10223:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"firstEmptyOpenLimitIndex","nodeType":"MemberAccess","referencedDeclaration":89786,"src":"10223:33:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":77095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10223:58:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10210:71:108"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":77102,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10398:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10398:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77104,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10431:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10431:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77106,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77088,"src":"10465:5:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77107,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10493:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"10493:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77109,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10534:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"10534:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":77111,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10562:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"10562:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77113,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10595:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"10595:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77115,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10622:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"10622:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77117,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10649:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"10649:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77119,"name":"_slippageP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76892,"src":"10683:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77120,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10716:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"10716:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77122,"name":"_executionFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76894,"src":"10751:13:108","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"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77100,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"10345:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89474,"src":"10345:30:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OpenLimitOrder_$89474_storage_ptr_$","typeString":"type(struct ITradingStorage.OpenLimitOrder storage pointer)"}},"id":77123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10345:438:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}],"expression":{"id":77097,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"10298:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storeOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89746,"src":"10298:28:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$returns$__$","typeString":"function (struct ITradingStorage.OpenLimitOrder memory) external"}},"id":77124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10298:500:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77125,"nodeType":"ExpressionStatement","src":"10298:500:108"},{"expression":{"arguments":[{"expression":{"id":77131,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10861:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10861:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77133,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10873:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10873:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77135,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77088,"src":"10886:5:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77136,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76890,"src":"10893:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77126,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76905,"src":"10815:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executions","nodeType":"MemberAccess","referencedDeclaration":89168,"src":"10815:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IExecute_$88371_$","typeString":"function () view external returns (contract IExecute)"}},"id":77129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10815:23:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":77130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setOpenLimitOrderType","nodeType":"MemberAccess","referencedDeclaration":88370,"src":"10815:45:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_OpenLimitOrderType_$88279_$returns$__$","typeString":"function (address,uint256,uint256,enum IExecute.OpenLimitOrderType) external"}},"id":77137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10815:84:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77138,"nodeType":"ExpressionStatement","src":"10815:84:108"},{"eventCall":{"arguments":[{"expression":{"id":77140,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10937:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10937:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77142,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10949:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"10949:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77144,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77088,"src":"10962:5:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77145,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10969:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"10969:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":77147,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76887,"src":"10976:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade calldata"}},"id":77148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"10976:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77149,"name":"_executionFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76894,"src":"10989:13:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77150,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76890,"src":"11004:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},{"id":77151,"name":"_slippageP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76892,"src":"11011:10:108","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"},{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77139,"name":"OpenLimitPlaced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76354,"src":"10921:15:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$_t_enum$_OpenLimitOrderType_$88279_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,bool,uint256,uint256,enum IExecute.OpenLimitOrderType,uint256)"}},"id":77152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10921:101:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77153,"nodeType":"EmitStatement","src":"10916:106:108"}]}}]},"documentation":{"id":76884,"nodeType":"StructuredDocumentation","src":"8196:281:108","text":" @notice Opens a new Market/Limit trade\n @param t The details of the trade to open\n @param _type Market or Limit or Stop Limit\n @param _slippageP The slippage percentage\n @param _executionFee The fee for executing the trade (in USDC)"},"functionSelector":"f5567637","implemented":true,"kind":"function","modifiers":[{"id":76897,"kind":"modifierInvocation","modifierName":{"id":76896,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"8706:13:108"},"nodeType":"ModifierInvocation","src":"8706:13:108"},{"id":76899,"kind":"modifierInvocation","modifierName":{"id":76898,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"8720:13:108"},"nodeType":"ModifierInvocation","src":"8720:13:108"}],"name":"openTrade","nameLocation":"8492:9:108","parameters":{"id":76895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76887,"mutability":"mutable","name":"t","nameLocation":"8543:1:108","nodeType":"VariableDeclaration","scope":77228,"src":"8512:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_calldata_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":76886,"nodeType":"UserDefinedTypeName","pathNode":{"id":76885,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"8512:21:108"},"referencedDeclaration":89438,"src":"8512:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"},{"constant":false,"id":76890,"mutability":"mutable","name":"_type","nameLocation":"8583:5:108","nodeType":"VariableDeclaration","scope":77228,"src":"8555:33:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},"typeName":{"id":76889,"nodeType":"UserDefinedTypeName","pathNode":{"id":76888,"name":"IExecute.OpenLimitOrderType","nodeType":"IdentifierPath","referencedDeclaration":88279,"src":"8555:27:108"},"referencedDeclaration":88279,"src":"8555:27:108","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"visibility":"internal"},{"constant":false,"id":76892,"mutability":"mutable","name":"_slippageP","nameLocation":"8604:10:108","nodeType":"VariableDeclaration","scope":77228,"src":"8599:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76891,"name":"uint","nodeType":"ElementaryTypeName","src":"8599:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76894,"mutability":"mutable","name":"_executionFee","nameLocation":"8630:13:108","nodeType":"VariableDeclaration","scope":77228,"src":"8625:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76893,"name":"uint","nodeType":"ElementaryTypeName","src":"8625:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8501:187:108"},"returnParameters":{"id":76902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76901,"mutability":"mutable","name":"orderId","nameLocation":"8747:7:108","nodeType":"VariableDeclaration","scope":77228,"src":"8742:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76900,"name":"uint","nodeType":"ElementaryTypeName","src":"8742:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8741:14:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77363,"nodeType":"FunctionDefinition","src":"12294:1324:108","nodes":[],"body":{"id":77362,"nodeType":"Block","src":"12520:1098:108","nodes":[],"statements":[{"assignments":[77247,null],"declarations":[{"constant":false,"id":77247,"mutability":"mutable","name":"sent","nameLocation":"12539:4:108","nodeType":"VariableDeclaration","scope":77362,"src":"12534:9:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77246,"name":"bool","nodeType":"ElementaryTypeName","src":"12534:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":77258,"initialValue":{"arguments":[{"hexValue":"","id":77256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12590:2:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":77250,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76275,"src":"12557:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12549:8:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":77248,"name":"address","nodeType":"ElementaryTypeName","src":"12549:8:108","stateMutability":"payable","typeDescriptions":{}}},"id":77251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12549:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":77252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"12549:22:108","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":77253,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12579:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"12579:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"12549:40:108","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12549:44:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"12533:60:108"},{"expression":{"arguments":[{"id":77260,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77247,"src":"12612:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455845435554494f4e5f4645455f4e4f545f53454e54","id":77261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12618:24:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_98db2e59073d6cd86a820ea520a14d8c55fe3f37778f825cd0fb29e834006a06","typeString":"literal_string \"EXECUTION_FEE_NOT_SENT\""},"value":"EXECUTION_FEE_NOT_SENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_98db2e59073d6cd86a820ea520a14d8c55fe3f37778f825cd0fb29e834006a06","typeString":"literal_string \"EXECUTION_FEE_NOT_SENT\""}],"id":77259,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12604:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12604:39:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77263,"nodeType":"ExpressionStatement","src":"12604:39:108"},{"assignments":[77265],"declarations":[{"constant":false,"id":77265,"mutability":"mutable","name":"leverage","nameLocation":"12661:8:108","nodeType":"VariableDeclaration","scope":77362,"src":"12656:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77264,"name":"uint","nodeType":"ElementaryTypeName","src":"12656:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77274,"initialValue":{"expression":{"arguments":[{"expression":{"id":77268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12692:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"12692:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77270,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77231,"src":"12704:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77271,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77233,"src":"12716:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77266,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"12672:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"12672:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":77272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12672:51:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"12672:60:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12656:76:108"},{"assignments":[77276],"declarations":[{"constant":false,"id":77276,"mutability":"mutable","name":"beingMarketClosed","nameLocation":"12748:17:108","nodeType":"VariableDeclaration","scope":77362,"src":"12743:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77275,"name":"bool","nodeType":"ElementaryTypeName","src":"12743:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":77285,"initialValue":{"expression":{"arguments":[{"expression":{"id":77279,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12792:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"12792:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77281,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77231,"src":"12804:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77282,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77233,"src":"12816:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77277,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"12768:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"12768:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":77283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12768:55:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":77284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beingMarketClosed","nodeType":"MemberAccess","referencedDeclaration":89446,"src":"12768:73:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12743:98:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":77289,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12892:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"12892:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":77287,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"12862:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pendingOrderIdsCount","nodeType":"MemberAccess","referencedDeclaration":89871,"src":"12862:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":77291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12862:41:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77292,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"12906:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxPendingMarketOrders","nodeType":"MemberAccess","referencedDeclaration":89876,"src":"12906:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":77294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12906:33:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12862:77:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d41585f50454e44494e475f4f5244455253","id":77296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12941:20:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c04e4d85dc455e86c3cd8c6dcf28e822955cec00171c2c94b1ae8b9f1b667cc0","typeString":"literal_string \"MAX_PENDING_ORDERS\""},"value":"MAX_PENDING_ORDERS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c04e4d85dc455e86c3cd8c6dcf28e822955cec00171c2c94b1ae8b9f1b667cc0","typeString":"literal_string \"MAX_PENDING_ORDERS\""}],"id":77286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12854:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12854:108:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77298,"nodeType":"ExpressionStatement","src":"12854:108:108"},{"expression":{"arguments":[{"id":77301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12981:18:108","subExpression":{"id":77300,"name":"beingMarketClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77276,"src":"12982:17:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"414c52454144595f4245494e475f434c4f534544","id":77302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13001:22:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_df542685560a7e4341cf63a32a2f89c8e5b29bdf29ec438e169e8e3ce4776c0a","typeString":"literal_string \"ALREADY_BEING_CLOSED\""},"value":"ALREADY_BEING_CLOSED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df542685560a7e4341cf63a32a2f89c8e5b29bdf29ec438e169e8e3ce4776c0a","typeString":"literal_string \"ALREADY_BEING_CLOSED\""}],"id":77299,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12973:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12973:51:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77304,"nodeType":"ExpressionStatement","src":"12973:51:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77306,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77265,"src":"13043:8:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13054:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13043:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f5452414445","id":77309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13057:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""},"value":"NO_TRADE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""}],"id":77305,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13035:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13035:33:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77311,"nodeType":"ExpressionStatement","src":"13035:33:108"},{"expression":{"id":77322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77312,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77244,"src":"13081:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":77317,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77231,"src":"13127:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":77318,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"13139:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":77319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"13139:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":77320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_CLOSE","nodeType":"MemberAccess","referencedDeclaration":89070,"src":"13139:39:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77313,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"13091:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"13091:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":77315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13091:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":89178,"src":"13091:35:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_enum$_OrderType_$89075_$returns$_t_uint256_$","typeString":"function (uint256,enum IPriceAggregator.OrderType) external returns (uint256)"}},"id":77321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13091:88:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13081:98:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77323,"nodeType":"ExpressionStatement","src":"13081:98:108"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":77331,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13314:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"13314:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77333,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77231,"src":"13326:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77334,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77233,"src":"13338:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77335,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77235,"src":"13346:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":77336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13355:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13358:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"66616c7365","id":77338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13361:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":77339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13368:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13371:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13374:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13377:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":77329,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"13292:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Trade","nodeType":"MemberAccess","referencedDeclaration":89438,"src":"13292:21:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Trade_$89438_storage_ptr_$","typeString":"type(struct ITradingStorage.Trade storage pointer)"}},"id":77343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13292:87:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"hexValue":"30","id":77344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13398:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13418:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":77346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13438:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":77327,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"13239:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89484,"src":"13239:34:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PendingMarketOrder_$89484_storage_ptr_$","typeString":"type(struct ITradingStorage.PendingMarketOrder storage pointer)"}},"id":77347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13239:215:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},{"id":77348,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77244,"src":"13469:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":77349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13491:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":77324,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"13192:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storePendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89674,"src":"13192:32:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_PendingMarketOrder_$89484_memory_ptr_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (struct ITradingStorage.PendingMarketOrder memory,uint256,bool) external"}},"id":77350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13192:315:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77351,"nodeType":"ExpressionStatement","src":"13192:315:108"},{"eventCall":{"arguments":[{"expression":{"id":77353,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13554:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"13554:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77355,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77231,"src":"13566:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":77356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13578:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":77357,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77244,"src":"13585:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77358,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13594:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"13594:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77352,"name":"MarketOrderInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76317,"src":"13533:20:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,bool,uint256,uint256)"}},"id":77360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13533:77:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77361,"nodeType":"EmitStatement","src":"13528:82:108"}]},"documentation":{"id":77229,"nodeType":"StructuredDocumentation","src":"12060:228:108","text":" @notice Closes a trade using market execution\n @param _pairIndex The index of the trading pair\n @param _index The index of the trade\n @param _amount The amount of collateral being closed"},"functionSelector":"e5a97c92","implemented":true,"kind":"function","modifiers":[{"id":77240,"kind":"modifierInvocation","modifierName":{"id":77239,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"12471:13:108"},"nodeType":"ModifierInvocation","src":"12471:13:108"},{"id":77242,"kind":"modifierInvocation","modifierName":{"id":77241,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"12485:13:108"},"nodeType":"ModifierInvocation","src":"12485:13:108"}],"name":"closeTradeMarket","nameLocation":"12303:16:108","parameters":{"id":77238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77231,"mutability":"mutable","name":"_pairIndex","nameLocation":"12335:10:108","nodeType":"VariableDeclaration","scope":77363,"src":"12330:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77230,"name":"uint","nodeType":"ElementaryTypeName","src":"12330:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77233,"mutability":"mutable","name":"_index","nameLocation":"12361:6:108","nodeType":"VariableDeclaration","scope":77363,"src":"12356:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77232,"name":"uint","nodeType":"ElementaryTypeName","src":"12356:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77235,"mutability":"mutable","name":"_amount","nameLocation":"12383:7:108","nodeType":"VariableDeclaration","scope":77363,"src":"12378:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77234,"name":"uint","nodeType":"ElementaryTypeName","src":"12378:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77237,"mutability":"mutable","name":"_executionFee","nameLocation":"12433:13:108","nodeType":"VariableDeclaration","scope":77363,"src":"12428:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77236,"name":"uint","nodeType":"ElementaryTypeName","src":"12428:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12319:134:108"},"returnParameters":{"id":77245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77244,"mutability":"mutable","name":"orderId","nameLocation":"12512:7:108","nodeType":"VariableDeclaration","scope":77363,"src":"12507:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77243,"name":"uint","nodeType":"ElementaryTypeName","src":"12507:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12506:14:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77405,"nodeType":"FunctionDefinition","src":"13865:308:108","nodes":[],"body":{"id":77404,"nodeType":"Block","src":"13998:175:108","nodes":[],"statements":[{"body":{"id":77402,"nodeType":"Block","src":"14058:108:108","statements":[{"expression":{"arguments":[{"baseExpression":{"id":77396,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77369,"src":"14126:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":77398,"indexExpression":{"id":77397,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"14134:1:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14126:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77399,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77372,"src":"14138:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77388,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"14073:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"14073:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":77391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14073:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fulfill","nodeType":"MemberAccess","referencedDeclaration":89186,"src":"14073:34:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":77395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":77393,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14115:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"14115:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"14073:52:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":77400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14073:81:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77401,"nodeType":"ExpressionStatement","src":"14073:81:108"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"14035:1:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77382,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77369,"src":"14038:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":77383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14038:14:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14035:17:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77403,"initializationExpression":{"assignments":[77378],"declarations":[{"constant":false,"id":77378,"mutability":"mutable","name":"i","nameLocation":"14028:1:108","nodeType":"VariableDeclaration","scope":77403,"src":"14023:6:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77377,"name":"uint","nodeType":"ElementaryTypeName","src":"14023:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77380,"initialValue":{"hexValue":"30","id":77379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14032:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14023:10:108"},"loopExpression":{"expression":{"id":77386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14054:3:108","subExpression":{"id":77385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"14054:1:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77387,"nodeType":"ExpressionStatement","src":"14054:3:108"},"nodeType":"ForStatement","src":"14019:147:108"}]},"documentation":{"id":77364,"nodeType":"StructuredDocumentation","src":"13628:231:108","text":" @notice Keeper method to close pending market orders\n @param pairIndex The index of the trading pair\n @param orderId The array of orderIDs\n @param priceUpdateData Pyth price update calldata"},"functionSelector":"a03074c1","implemented":true,"kind":"function","modifiers":[{"id":77375,"kind":"modifierInvocation","modifierName":{"id":77374,"name":"onlyOperator","nodeType":"IdentifierPath","referencedDeclaration":76484,"src":"13986:12:108"},"nodeType":"ModifierInvocation","src":"13986:12:108"}],"name":"executeMarketOrders","nameLocation":"13874:19:108","parameters":{"id":77373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77366,"mutability":"mutable","name":"pairIndex","nameLocation":"13899:9:108","nodeType":"VariableDeclaration","scope":77405,"src":"13894:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77365,"name":"uint","nodeType":"ElementaryTypeName","src":"13894:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77369,"mutability":"mutable","name":"orderId","nameLocation":"13926:7:108","nodeType":"VariableDeclaration","scope":77405,"src":"13910:23:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":77367,"name":"uint","nodeType":"ElementaryTypeName","src":"13910:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77368,"nodeType":"ArrayTypeName","src":"13910:6:108","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":77372,"mutability":"mutable","name":"priceUpdateData","nameLocation":"13952:15:108","nodeType":"VariableDeclaration","scope":77405,"src":"13935:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":77370,"name":"bytes","nodeType":"ElementaryTypeName","src":"13935:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":77371,"nodeType":"ArrayTypeName","src":"13935:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"13893:75:108"},"returnParameters":{"id":77376,"nodeType":"ParameterList","parameters":[],"src":"13998:0:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77528,"nodeType":"FunctionDefinition","src":"14482:827:108","nodes":[],"body":{"id":77527,"nodeType":"Block","src":"14691:618:108","nodes":[],"statements":[{"assignments":[77429],"declarations":[{"constant":false,"id":77429,"mutability":"mutable","name":"o","nameLocation":"14740:1:108","nodeType":"VariableDeclaration","scope":77527,"src":"14702:39:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":77428,"nodeType":"UserDefinedTypeName","pathNode":{"id":77427,"name":"ITradingStorage.OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"14702:30:108"},"referencedDeclaration":89474,"src":"14702:30:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"id":77437,"initialValue":{"arguments":[{"expression":{"id":77432,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14771:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"14771:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77434,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77408,"src":"14783:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77435,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77410,"src":"14795:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77430,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"14744:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89732,"src":"14744:26:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.OpenLimitOrder memory)"}},"id":77436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14744:58:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"14702:100:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77439,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14821:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"14821:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":77441,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"14836:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89471,"src":"14836:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14821:22:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":77444,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"14847:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14821:45:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c494d49545f54494d454c4f434b","id":77446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14868:16:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""},"value":"LIMIT_TIMELOCK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""}],"id":77438,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14813:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14813:72:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77448,"nodeType":"ExpressionStatement","src":"14813:72:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77450,"name":"_tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77416,"src":"14906:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":77451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14913:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14906:8:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":77453,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"14919:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"14919:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77458,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"14942:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":77459,"name":"_tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77416,"src":"14951:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14942:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14919:35:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77455,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"14927:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":77456,"name":"_tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77416,"src":"14936:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14927:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77462,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14918:37:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14906:49:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f5450","id":77464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14957:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_828dae73ef9701307e5a41dfddbd28d0536a9e33d721854916184d58601c73f6","typeString":"literal_string \"WRONG_TP\""},"value":"WRONG_TP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_828dae73ef9701307e5a41dfddbd28d0536a9e33d721854916184d58601c73f6","typeString":"literal_string \"WRONG_TP\""}],"id":77449,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14898:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14898:70:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77466,"nodeType":"ExpressionStatement","src":"14898:70:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77468,"name":"_sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"14987:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":77469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14994:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14987:8:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":77471,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15000:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"15000:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77476,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"15023:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":77477,"name":"_sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"15032:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15023:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15000:35:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77473,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"15008:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":77474,"name":"_sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"15017:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15008:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77480,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14999:37:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14987:49:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f534c","id":77482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15038:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_902e7ff5bda650d959cad0c5fd3f1aa9463d62e9b0480a9d7a7b7d0f24978996","typeString":"literal_string \"WRONG_SL\""},"value":"WRONG_SL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_902e7ff5bda650d959cad0c5fd3f1aa9463d62e9b0480a9d7a7b7d0f24978996","typeString":"literal_string \"WRONG_SL\""}],"id":77467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14979:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14979:70:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77484,"nodeType":"ExpressionStatement","src":"14979:70:108"},{"expression":{"id":77489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77485,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15062:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"15062:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77488,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"15072:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15062:16:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77490,"nodeType":"ExpressionStatement","src":"15062:16:108"},{"expression":{"id":77495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77491,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15089:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"slippageP","nodeType":"MemberAccess","referencedDeclaration":89469,"src":"15089:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77494,"name":"_slippageP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77414,"src":"15103:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15089:24:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77496,"nodeType":"ExpressionStatement","src":"15089:24:108"},{"expression":{"id":77501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77497,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15124:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89463,"src":"15124:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77500,"name":"_tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77416,"src":"15131:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77502,"nodeType":"ExpressionStatement","src":"15124:10:108"},{"expression":{"id":77507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77503,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15145:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89465,"src":"15145:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77506,"name":"_sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"15152:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15145:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77508,"nodeType":"ExpressionStatement","src":"15145:10:108"},{"expression":{"arguments":[{"id":77512,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77429,"src":"15198:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}],"expression":{"id":77509,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"15168:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89768,"src":"15168:29:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$returns$__$","typeString":"function (struct ITradingStorage.OpenLimitOrder memory) external"}},"id":77513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15168:32:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77514,"nodeType":"ExpressionStatement","src":"15168:32:108"},{"eventCall":{"arguments":[{"expression":{"id":77516,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15235:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"15235:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77518,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77408,"src":"15247:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77519,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77410,"src":"15259:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77520,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77412,"src":"15267:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77521,"name":"_tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77416,"src":"15275:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77522,"name":"_sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"15280:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77523,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15285:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"15285:15:108","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77515,"name":"OpenLimitUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76370,"src":"15218:16:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256,uint256,uint256)"}},"id":77525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15218:83:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77526,"nodeType":"EmitStatement","src":"15213:88:108"}]},"documentation":{"id":77406,"nodeType":"StructuredDocumentation","src":"14181:295:108","text":" @notice Updates an open limit order\n @param _pairIndex The index of the trading pair\n @param _index The index of the order\n @param _price The price level to set (_PRECISION)\n @param _tp The take-profit price\n @param _sl The stop-loss price"},"functionSelector":"c641558e","implemented":true,"kind":"function","modifiers":[{"id":77421,"kind":"modifierInvocation","modifierName":{"id":77420,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"14663:13:108"},"nodeType":"ModifierInvocation","src":"14663:13:108"},{"id":77423,"kind":"modifierInvocation","modifierName":{"id":77422,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"14677:13:108"},"nodeType":"ModifierInvocation","src":"14677:13:108"}],"name":"updateOpenLimitOrder","nameLocation":"14491:20:108","parameters":{"id":77419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77408,"mutability":"mutable","name":"_pairIndex","nameLocation":"14527:10:108","nodeType":"VariableDeclaration","scope":77528,"src":"14522:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77407,"name":"uint","nodeType":"ElementaryTypeName","src":"14522:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77410,"mutability":"mutable","name":"_index","nameLocation":"14553:6:108","nodeType":"VariableDeclaration","scope":77528,"src":"14548:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77409,"name":"uint","nodeType":"ElementaryTypeName","src":"14548:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77412,"mutability":"mutable","name":"_price","nameLocation":"14575:6:108","nodeType":"VariableDeclaration","scope":77528,"src":"14570:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77411,"name":"uint","nodeType":"ElementaryTypeName","src":"14570:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77414,"mutability":"mutable","name":"_slippageP","nameLocation":"14598:10:108","nodeType":"VariableDeclaration","scope":77528,"src":"14593:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77413,"name":"uint","nodeType":"ElementaryTypeName","src":"14593:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77416,"mutability":"mutable","name":"_tp","nameLocation":"14624:3:108","nodeType":"VariableDeclaration","scope":77528,"src":"14619:8:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77415,"name":"uint","nodeType":"ElementaryTypeName","src":"14619:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77418,"mutability":"mutable","name":"_sl","nameLocation":"14643:3:108","nodeType":"VariableDeclaration","scope":77528,"src":"14638:8:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77417,"name":"uint","nodeType":"ElementaryTypeName","src":"14638:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14511:142:108"},"returnParameters":{"id":77424,"nodeType":"ParameterList","parameters":[],"src":"14691:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77599,"nodeType":"FunctionDefinition","src":"15480:557:108","nodes":[],"body":{"id":77598,"nodeType":"Block","src":"15577:460:108","nodes":[],"statements":[{"assignments":[77544],"declarations":[{"constant":false,"id":77544,"mutability":"mutable","name":"o","nameLocation":"15626:1:108","nodeType":"VariableDeclaration","scope":77598,"src":"15588:39:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":77543,"nodeType":"UserDefinedTypeName","pathNode":{"id":77542,"name":"ITradingStorage.OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"15588:30:108"},"referencedDeclaration":89474,"src":"15588:30:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"id":77552,"initialValue":{"arguments":[{"expression":{"id":77547,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15657:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"15657:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77549,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77531,"src":"15669:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77550,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77533,"src":"15681:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77545,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"15630:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89732,"src":"15630:26:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.OpenLimitOrder memory)"}},"id":77551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15630:58:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"15588:100:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77554,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15707:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"15707:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":77556,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77544,"src":"15722:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89471,"src":"15722:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15707:22:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":77559,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"15733:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15707:45:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c494d49545f54494d454c4f434b","id":77561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15754:16:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""},"value":"LIMIT_TIMELOCK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""}],"id":77553,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15699:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15699:72:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77563,"nodeType":"ExpressionStatement","src":"15699:72:108"},{"expression":{"arguments":[{"arguments":[{"id":77569,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"15814:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":77568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15806:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77567,"name":"address","nodeType":"ElementaryTypeName","src":"15806:7:108","typeDescriptions":{}}},"id":77570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15806:17:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77571,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15825:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"15825:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77573,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77544,"src":"15837:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"15837:14:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":77575,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77544,"src":"15854:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":77576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"executionFee","nodeType":"MemberAccess","referencedDeclaration":89473,"src":"15854:14:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15837:31:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77564,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"15784:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"15784:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":77578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15784:85:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77579,"nodeType":"ExpressionStatement","src":"15784:85:108"},{"expression":{"arguments":[{"expression":{"id":77583,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15914:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"15914:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77585,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77531,"src":"15926:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77586,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77533,"src":"15938:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77580,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"15880:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89653,"src":"15880:33:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) external"}},"id":77587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15880:65:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77588,"nodeType":"ExpressionStatement","src":"15880:65:108"},{"eventCall":{"arguments":[{"expression":{"id":77590,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15981:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"15981:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77592,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77531,"src":"15993:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77593,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77533,"src":"16005:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77594,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16013:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"16013:15:108","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":77589,"name":"OpenLimitCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76380,"src":"15963:17:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":77596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15963:66:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77597,"nodeType":"EmitStatement","src":"15958:71:108"}]},"documentation":{"id":77529,"nodeType":"StructuredDocumentation","src":"15317:157:108","text":" @notice Cancels an open limit order\n @param _pairIndex The index of the trading pair\n @param _index The index of the order"},"functionSelector":"b9b6573a","implemented":true,"kind":"function","modifiers":[{"id":77536,"kind":"modifierInvocation","modifierName":{"id":77535,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"15549:13:108"},"nodeType":"ModifierInvocation","src":"15549:13:108"},{"id":77538,"kind":"modifierInvocation","modifierName":{"id":77537,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"15563:13:108"},"nodeType":"ModifierInvocation","src":"15563:13:108"}],"name":"cancelOpenLimitOrder","nameLocation":"15489:20:108","parameters":{"id":77534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77531,"mutability":"mutable","name":"_pairIndex","nameLocation":"15515:10:108","nodeType":"VariableDeclaration","scope":77599,"src":"15510:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77530,"name":"uint","nodeType":"ElementaryTypeName","src":"15510:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77533,"mutability":"mutable","name":"_index","nameLocation":"15532:6:108","nodeType":"VariableDeclaration","scope":77599,"src":"15527:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77532,"name":"uint","nodeType":"ElementaryTypeName","src":"15527:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15509:30:108"},"returnParameters":{"id":77539,"nodeType":"ParameterList","parameters":[],"src":"15577:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77632,"nodeType":"FunctionDefinition","src":"16383:331:108","nodes":[],"body":{"id":77631,"nodeType":"Block","src":"16593:121:108","nodes":[],"statements":[{"expression":{"arguments":[{"id":77619,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77602,"src":"16614:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77620,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77604,"src":"16626:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77621,"name":"_newTP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77608,"src":"16634:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77618,"name":"_updateTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77989,"src":"16604:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":77622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16604:37:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77623,"nodeType":"ExpressionStatement","src":"16604:37:108"},{"expression":{"arguments":[{"id":77625,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77602,"src":"16662:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77626,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77604,"src":"16674:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77627,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77606,"src":"16682:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77628,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77611,"src":"16690:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":77624,"name":"_updateSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78222,"src":"16652:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (uint256,uint256,uint256,bytes calldata[] calldata)"}},"id":77629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16652:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77630,"nodeType":"ExpressionStatement","src":"16652:54:108"}]},"documentation":{"id":77600,"nodeType":"StructuredDocumentation","src":"16045:332:108","text":" @notice Updates the take-profit and stop-loss for a open Trade\n @param _pairIndex The index of the trading pair\n @param _index The index of the order\n @param _newSl The new stop-loss price\n @param _newTP The new take-profit price\n @param priceUpdateData Pyth price update data"},"functionSelector":"15b760b1","implemented":true,"kind":"function","modifiers":[{"id":77614,"kind":"modifierInvocation","modifierName":{"id":77613,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"16565:13:108"},"nodeType":"ModifierInvocation","src":"16565:13:108"},{"id":77616,"kind":"modifierInvocation","modifierName":{"id":77615,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"16579:13:108"},"nodeType":"ModifierInvocation","src":"16579:13:108"}],"name":"updateTpAndSl","nameLocation":"16392:13:108","parameters":{"id":77612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77602,"mutability":"mutable","name":"_pairIndex","nameLocation":"16421:10:108","nodeType":"VariableDeclaration","scope":77632,"src":"16416:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77601,"name":"uint","nodeType":"ElementaryTypeName","src":"16416:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77604,"mutability":"mutable","name":"_index","nameLocation":"16447:6:108","nodeType":"VariableDeclaration","scope":77632,"src":"16442:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77603,"name":"uint","nodeType":"ElementaryTypeName","src":"16442:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77606,"mutability":"mutable","name":"_newSl","nameLocation":"16469:6:108","nodeType":"VariableDeclaration","scope":77632,"src":"16464:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77605,"name":"uint","nodeType":"ElementaryTypeName","src":"16464:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77608,"mutability":"mutable","name":"_newTP","nameLocation":"16491:6:108","nodeType":"VariableDeclaration","scope":77632,"src":"16486:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77607,"name":"uint","nodeType":"ElementaryTypeName","src":"16486:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77611,"mutability":"mutable","name":"priceUpdateData","nameLocation":"16525:15:108","nodeType":"VariableDeclaration","scope":77632,"src":"16508:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":77609,"name":"bytes","nodeType":"ElementaryTypeName","src":"16508:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":77610,"nodeType":"ArrayTypeName","src":"16508:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"16405:142:108"},"returnParameters":{"id":77617,"nodeType":"ParameterList","parameters":[],"src":"16593:0:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77653,"nodeType":"FunctionDefinition","src":"16952:154:108","nodes":[],"body":{"id":77652,"nodeType":"Block","src":"17050:56:108","nodes":[],"statements":[{"expression":{"arguments":[{"id":77647,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77635,"src":"17071:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77648,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77637,"src":"17083:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77649,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77639,"src":"17091:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77646,"name":"_updateTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77989,"src":"17061:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":77650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17061:37:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77651,"nodeType":"ExpressionStatement","src":"17061:37:108"}]},"documentation":{"id":77633,"nodeType":"StructuredDocumentation","src":"16722:224:108","text":" @notice Updates the take-profit level for a open trade\n @param _pairIndex The index of the trading pair\n @param _index The index of the order\n @param _newTp The new take-profit price"},"functionSelector":"d8defd15","implemented":true,"kind":"function","modifiers":[{"id":77642,"kind":"modifierInvocation","modifierName":{"id":77641,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"17022:13:108"},"nodeType":"ModifierInvocation","src":"17022:13:108"},{"id":77644,"kind":"modifierInvocation","modifierName":{"id":77643,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"17036:13:108"},"nodeType":"ModifierInvocation","src":"17036:13:108"}],"name":"updateTp","nameLocation":"16961:8:108","parameters":{"id":77640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77635,"mutability":"mutable","name":"_pairIndex","nameLocation":"16975:10:108","nodeType":"VariableDeclaration","scope":77653,"src":"16970:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77634,"name":"uint","nodeType":"ElementaryTypeName","src":"16970:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77637,"mutability":"mutable","name":"_index","nameLocation":"16992:6:108","nodeType":"VariableDeclaration","scope":77653,"src":"16987:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77636,"name":"uint","nodeType":"ElementaryTypeName","src":"16987:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77639,"mutability":"mutable","name":"_newTp","nameLocation":"17005:6:108","nodeType":"VariableDeclaration","scope":77653,"src":"17000:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77638,"name":"uint","nodeType":"ElementaryTypeName","src":"17000:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16969:43:108"},"returnParameters":{"id":77645,"nodeType":"ParameterList","parameters":[],"src":"17050:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77678,"nodeType":"FunctionDefinition","src":"17394:256:108","nodes":[],"body":{"id":77677,"nodeType":"Block","src":"17577:73:108","nodes":[],"statements":[{"expression":{"arguments":[{"id":77671,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77656,"src":"17598:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77672,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77658,"src":"17610:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77673,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77660,"src":"17618:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77674,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77663,"src":"17626:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":77670,"name":"_updateSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78222,"src":"17588:9:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (uint256,uint256,uint256,bytes calldata[] calldata)"}},"id":77675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17588:54:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77676,"nodeType":"ExpressionStatement","src":"17588:54:108"}]},"documentation":{"id":77654,"nodeType":"StructuredDocumentation","src":"17114:274:108","text":" @notice Updates the stop-loss level for a open trade\n @param _pairIndex The index of the trading pair\n @param _index The index of the order\n @param _newSl The new stop-loss level\n @param priceUpdateData Pyth price update data"},"functionSelector":"c383e5de","implemented":true,"kind":"function","modifiers":[{"id":77666,"kind":"modifierInvocation","modifierName":{"id":77665,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"17549:13:108"},"nodeType":"ModifierInvocation","src":"17549:13:108"},{"id":77668,"kind":"modifierInvocation","modifierName":{"id":77667,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"17563:13:108"},"nodeType":"ModifierInvocation","src":"17563:13:108"}],"name":"updateSl","nameLocation":"17403:8:108","parameters":{"id":77664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77656,"mutability":"mutable","name":"_pairIndex","nameLocation":"17427:10:108","nodeType":"VariableDeclaration","scope":77678,"src":"17422:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77655,"name":"uint","nodeType":"ElementaryTypeName","src":"17422:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77658,"mutability":"mutable","name":"_index","nameLocation":"17453:6:108","nodeType":"VariableDeclaration","scope":77678,"src":"17448:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77657,"name":"uint","nodeType":"ElementaryTypeName","src":"17448:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77660,"mutability":"mutable","name":"_newSl","nameLocation":"17475:6:108","nodeType":"VariableDeclaration","scope":77678,"src":"17470:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77659,"name":"uint","nodeType":"ElementaryTypeName","src":"17470:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77663,"mutability":"mutable","name":"priceUpdateData","nameLocation":"17509:15:108","nodeType":"VariableDeclaration","scope":77678,"src":"17492:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":77661,"name":"bytes","nodeType":"ElementaryTypeName","src":"17492:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":77662,"nodeType":"ArrayTypeName","src":"17492:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"17411:120:108"},"returnParameters":{"id":77669,"nodeType":"ParameterList","parameters":[],"src":"17577:0:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77890,"nodeType":"FunctionDefinition","src":"18019:2078:108","nodes":[],"body":{"id":77889,"nodeType":"Block","src":"18263:1834:108","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":77702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77698,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"18282:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":77699,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"18296:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"18296:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":77701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"OPEN","nodeType":"MemberAccess","referencedDeclaration":89404,"src":"18296:31:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"18282:45:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":77802,"nodeType":"Block","src":"18634:487:108","statements":[{"assignments":[77738],"declarations":[{"constant":false,"id":77738,"mutability":"mutable","name":"t","nameLocation":"18678:1:108","nodeType":"VariableDeclaration","scope":77802,"src":"18649:30:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":77737,"nodeType":"UserDefinedTypeName","pathNode":{"id":77736,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"18649:21:108"},"referencedDeclaration":89438,"src":"18649:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":77745,"initialValue":{"arguments":[{"id":77741,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"18702:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77742,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"18711:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77743,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77688,"src":"18723:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77739,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"18682:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"18682:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":77744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18682:48:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"18649:81:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77747,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"18755:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"18755:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18768:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18755:14:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f5452414445","id":77751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18771:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""},"value":"NO_TRADE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""}],"id":77746,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18747:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18747:35:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77753,"nodeType":"ExpressionStatement","src":"18747:35:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":77759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77755,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"18805:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":77756,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"18819:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"18819:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":77758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SL","nodeType":"MemberAccess","referencedDeclaration":89402,"src":"18819:29:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"18805:43:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77760,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"18852:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"18852:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18859:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18852:8:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18805:55:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f534c","id":77765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18862:7:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_b830430d0ba1ef575e9248e8685ce4e74d0681af97e9ec41dc306346a2e91510","typeString":"literal_string \"NO_SL\""},"value":"NO_SL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b830430d0ba1ef575e9248e8685ce4e74d0681af97e9ec41dc306346a2e91510","typeString":"literal_string \"NO_SL\""}],"id":77754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18797:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18797:73:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77767,"nodeType":"ExpressionStatement","src":"18797:73:108"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":77772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77768,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"18891:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":77769,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"18905:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"18905:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":77771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQ","nodeType":"MemberAccess","referencedDeclaration":89403,"src":"18905:30:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"18891:44:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77801,"nodeType":"IfStatement","src":"18887:223:108","trueBody":{"id":77800,"nodeType":"Block","src":"18937:173:108","statements":[{"assignments":[77774],"declarations":[{"constant":false,"id":77774,"mutability":"mutable","name":"liqPrice","nameLocation":"18961:8:108","nodeType":"VariableDeclaration","scope":77800,"src":"18956:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77773,"name":"uint","nodeType":"ElementaryTypeName","src":"18956:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77778,"initialValue":{"arguments":[{"id":77776,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"18998:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"id":77775,"name":"_getTradeLiquidationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78320,"src":"18972:25:108","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Trade_$89438_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory) view returns (uint256)"}},"id":77777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18972:28:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18956:44:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77780,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"19027:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"19027:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":77782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19035:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19027:9:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":77784,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"19041:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"19041:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77790,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77774,"src":"19067:8:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77791,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"19078:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"19078:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19067:15:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19041:41:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77786,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77774,"src":"19049:8:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":77787,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77738,"src":"19060:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"19060:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19049:15:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19040:43:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19027:56:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4841535f534c","id":77797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19085:8:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fa907ac352b92d801617cef21469b202638636836cfa701e6d702bca38136b2","typeString":"literal_string \"HAS_SL\""},"value":"HAS_SL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8fa907ac352b92d801617cef21469b202638636836cfa701e6d702bca38136b2","typeString":"literal_string \"HAS_SL\""}],"id":77779,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19019:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19019:75:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77799,"nodeType":"ExpressionStatement","src":"19019:75:108"}]}}]},"id":77803,"nodeType":"IfStatement","src":"18278:843:108","trueBody":{"id":77733,"nodeType":"Block","src":"18329:299:108","statements":[{"assignments":[77705],"declarations":[{"constant":false,"id":77705,"mutability":"mutable","name":"pairsStored","nameLocation":"18357:11:108","nodeType":"VariableDeclaration","scope":77733,"src":"18344:24:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":77704,"nodeType":"UserDefinedTypeName","pathNode":{"id":77703,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"18344:12:108"},"referencedDeclaration":89055,"src":"18344:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":77713,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77707,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"18388:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"18388:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":77709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18388:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}],"id":77706,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"18371:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":77710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18371:44:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"18371:57:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":77712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18371:59:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"18344:86:108"},{"expression":{"arguments":[{"arguments":[{"id":77717,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"18490:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77718,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"18499:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77719,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77688,"src":"18511:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77715,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"18463:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89664,"src":"18463:26:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view external returns (bool)"}},"id":77720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18463:55:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f4c494d4954","id":77721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18520:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_c1534a523da5b6cbee8aebb3d2508e4e2dc240284e7b402dcec30788462eed37","typeString":"literal_string \"NO_LIMIT\""},"value":"NO_LIMIT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c1534a523da5b6cbee8aebb3d2508e4e2dc240284e7b402dcec30788462eed37","typeString":"literal_string \"NO_LIMIT\""}],"id":77714,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18455:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18455:76:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77723,"nodeType":"ExpressionStatement","src":"18455:76:108"},{"expression":{"id":77731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":77724,"name":"lastUpdateTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76285,"src":"18562:14:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":77727,"indexExpression":{"id":77725,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"18577:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18562:23:108","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":77728,"indexExpression":{"id":77726,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"18586:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18562:35:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":77729,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18601:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"18601:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18562:54:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77732,"nodeType":"ExpressionStatement","src":"18562:54:108"}]}},{"assignments":[77806],"declarations":[{"constant":false,"id":77806,"mutability":"mutable","name":"aggregator","nameLocation":"19150:10:108","nodeType":"VariableDeclaration","scope":77889,"src":"19133:27:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":77805,"nodeType":"UserDefinedTypeName","pathNode":{"id":77804,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"19133:16:108"},"referencedDeclaration":89248,"src":"19133:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":77810,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77807,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"19163:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"19163:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":77809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19163:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"19133:56:108"},{"assignments":[77813],"declarations":[{"constant":false,"id":77813,"mutability":"mutable","name":"executor","nameLocation":"19209:8:108","nodeType":"VariableDeclaration","scope":77889,"src":"19200:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"},"typeName":{"id":77812,"nodeType":"UserDefinedTypeName","pathNode":{"id":77811,"name":"IExecute","nodeType":"IdentifierPath","referencedDeclaration":88371,"src":"19200:8:108"},"referencedDeclaration":88371,"src":"19200:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"visibility":"internal"}],"id":77817,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77814,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77806,"src":"19220:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executions","nodeType":"MemberAccess","referencedDeclaration":89168,"src":"19220:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IExecute_$88371_$","typeString":"function () view external returns (contract IExecute)"}},"id":77816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19220:23:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"nodeType":"VariableDeclarationStatement","src":"19200:43:108"},{"assignments":[77822],"declarations":[{"constant":false,"id":77822,"mutability":"mutable","name":"triggeredLimitId","nameLocation":"19289:16:108","nodeType":"VariableDeclaration","scope":77889,"src":"19256:49:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId"},"typeName":{"id":77821,"nodeType":"UserDefinedTypeName","pathNode":{"id":77820,"name":"IExecute.TriggeredLimitId","nodeType":"IdentifierPath","referencedDeclaration":88275,"src":"19256:25:108"},"referencedDeclaration":88275,"src":"19256:25:108","typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_storage_ptr","typeString":"struct IExecute.TriggeredLimitId"}},"visibility":"internal"}],"id":77830,"initialValue":{"arguments":[{"id":77825,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"19348:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77826,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"19370:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77827,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77688,"src":"19395:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77828,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"19416:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":77823,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"19308:8:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":77824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"19308:25:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":77829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19308:129:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}},"nodeType":"VariableDeclarationStatement","src":"19256:181:108"},{"assignments":[77832],"declarations":[{"constant":false,"id":77832,"mutability":"mutable","name":"orderId","nameLocation":"19455:7:108","nodeType":"VariableDeclaration","scope":77889,"src":"19450:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77831,"name":"uint","nodeType":"ElementaryTypeName","src":"19450:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77849,"initialValue":{"arguments":[{"id":77835,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"19499:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":77840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77836,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"19524:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":77837,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"19538:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"19538:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":77839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"OPEN","nodeType":"MemberAccess","referencedDeclaration":89404,"src":"19538:31:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"19524:45:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"expression":{"id":77844,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"19646:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":77845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"19646:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":77846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIMIT_CLOSE","nodeType":"MemberAccess","referencedDeclaration":89072,"src":"19646:38:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"id":77847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19524:160:108","trueExpression":{"expression":{"expression":{"id":77841,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"19589:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":77842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"19589:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":77843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIMIT_OPEN","nodeType":"MemberAccess","referencedDeclaration":89071,"src":"19589:37:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}],"expression":{"id":77833,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77806,"src":"19465:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":89178,"src":"19465:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_enum$_OrderType_$89075_$returns$_t_uint256_$","typeString":"function (uint256,enum IPriceAggregator.OrderType) external returns (uint256)"}},"id":77848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19465:230:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19450:245:108"},{"expression":{"arguments":[{"arguments":[{"id":77855,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"19788:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77856,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"19797:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77857,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77688,"src":"19809:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77858,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77682,"src":"19817:10:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":77853,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"19754:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":77854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89494,"src":"19754:33:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PendingLimitOrder_$89494_storage_ptr_$","typeString":"type(struct ITradingStorage.PendingLimitOrder storage pointer)"}},"id":77859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19754:74:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},{"id":77860,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77832,"src":"19843:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77850,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"19708:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storePendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89762,"src":"19708:31:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_PendingLimitOrder_$89494_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct ITradingStorage.PendingLimitOrder memory,uint256) external"}},"id":77861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19708:153:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77862,"nodeType":"ExpressionStatement","src":"19708:153:108"},{"expression":{"arguments":[{"id":77866,"name":"triggeredLimitId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77822,"src":"19903:16:108","typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}},{"expression":{"id":77867,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19921:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"19921:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":77863,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77813,"src":"19874:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":77865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storeFirstToTrigger","nodeType":"MemberAccess","referencedDeclaration":88332,"src":"19874:28:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$_t_address_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory,address) external"}},"id":77869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19874:58:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77870,"nodeType":"ExpressionStatement","src":"19874:58:108"},{"eventCall":{"arguments":[{"id":77872,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77684,"src":"19968:7:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77873,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77686,"src":"19977:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77874,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77832,"src":"19989:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77875,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19998:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"19998:15:108","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":77871,"name":"LimitOrderInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76327,"src":"19948:19:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":77877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19948:66:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77878,"nodeType":"EmitStatement","src":"19943:71:108"},{"expression":{"arguments":[{"id":77885,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77832,"src":"20064:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77886,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77691,"src":"20073:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":77879,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77806,"src":"20027:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":77881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fulfill","nodeType":"MemberAccess","referencedDeclaration":89186,"src":"20027:18:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":77884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":77882,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20053:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"20053:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"20027:36:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":77887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20027:62:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77888,"nodeType":"ExpressionStatement","src":"20027:62:108"}]},"documentation":{"id":77679,"nodeType":"StructuredDocumentation","src":"17658:355:108","text":" @notice Executes a limit order (either open or close)\n @param _orderType The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\n @param _trader The address of the trader\n @param _pairIndex The index of the trading pair\n @param _index The index of the order\n @param priceUpdateData Pyth price update data"},"functionSelector":"46f6c8f5","implemented":true,"kind":"function","modifiers":[{"id":77694,"kind":"modifierInvocation","modifierName":{"id":77693,"name":"onlyWhitelist","nodeType":"IdentifierPath","referencedDeclaration":76472,"src":"18235:13:108"},"nodeType":"ModifierInvocation","src":"18235:13:108"},{"id":77696,"kind":"modifierInvocation","modifierName":{"id":77695,"name":"whenNotPaused","nodeType":"IdentifierPath","referencedDeclaration":43586,"src":"18249:13:108"},"nodeType":"ModifierInvocation","src":"18249:13:108"}],"name":"executeLimitOrder","nameLocation":"18028:17:108","parameters":{"id":77692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77682,"mutability":"mutable","name":"_orderType","nameLocation":"18083:10:108","nodeType":"VariableDeclaration","scope":77890,"src":"18056:37:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"typeName":{"id":77681,"nodeType":"UserDefinedTypeName","pathNode":{"id":77680,"name":"ITradingStorage.LimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89405,"src":"18056:26:108"},"referencedDeclaration":89405,"src":"18056:26:108","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"visibility":"internal"},{"constant":false,"id":77684,"mutability":"mutable","name":"_trader","nameLocation":"18112:7:108","nodeType":"VariableDeclaration","scope":77890,"src":"18104:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77683,"name":"address","nodeType":"ElementaryTypeName","src":"18104:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77686,"mutability":"mutable","name":"_pairIndex","nameLocation":"18135:10:108","nodeType":"VariableDeclaration","scope":77890,"src":"18130:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77685,"name":"uint","nodeType":"ElementaryTypeName","src":"18130:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77688,"mutability":"mutable","name":"_index","nameLocation":"18161:6:108","nodeType":"VariableDeclaration","scope":77890,"src":"18156:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77687,"name":"uint","nodeType":"ElementaryTypeName","src":"18156:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77691,"mutability":"mutable","name":"priceUpdateData","nameLocation":"18195:15:108","nodeType":"VariableDeclaration","scope":77890,"src":"18178:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":77689,"name":"bytes","nodeType":"ElementaryTypeName","src":"18178:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":77690,"nodeType":"ArrayTypeName","src":"18178:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"18045:172:108"},"returnParameters":{"id":77697,"nodeType":"ParameterList","parameters":[],"src":"18263:0:108"},"scope":78321,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77905,"nodeType":"FunctionDefinition","src":"20198:134:108","nodes":[],"body":{"id":77904,"nodeType":"Block","src":"20266:66:108","nodes":[],"statements":[{"expression":{"arguments":[{"id":77901,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77893,"src":"20320:3:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77898,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"20277:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forceUnregisterPendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89942,"src":"20277:42:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":77902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20277:47:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77903,"nodeType":"ExpressionStatement","src":"20277:47:108"}]},"documentation":{"id":77891,"nodeType":"StructuredDocumentation","src":"20105:87:108","text":" @notice FallBack method in case unregister is not working directly"},"functionSelector":"c5ed6a08","implemented":true,"kind":"function","modifiers":[{"id":77896,"kind":"modifierInvocation","modifierName":{"id":77895,"name":"onlyOperator","nodeType":"IdentifierPath","referencedDeclaration":76484,"src":"20254:12:108"},"nodeType":"ModifierInvocation","src":"20254:12:108"}],"name":"cancelPendingMarketOrder","nameLocation":"20207:24:108","parameters":{"id":77894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77893,"mutability":"mutable","name":"_id","nameLocation":"20240:3:108","nodeType":"VariableDeclaration","scope":77905,"src":"20232:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77892,"name":"uint256","nodeType":"ElementaryTypeName","src":"20232:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20231:13:108"},"returnParameters":{"id":77897,"nodeType":"ParameterList","parameters":[],"src":"20266:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77989,"nodeType":"FunctionDefinition","src":"20574:623:108","nodes":[],"body":{"id":77988,"nodeType":"Block","src":"20645:552:108","nodes":[],"statements":[{"assignments":[77916],"declarations":[{"constant":false,"id":77916,"mutability":"mutable","name":"leverage","nameLocation":"20661:8:108","nodeType":"VariableDeclaration","scope":77988,"src":"20656:13:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77915,"name":"uint","nodeType":"ElementaryTypeName","src":"20656:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77925,"initialValue":{"expression":{"arguments":[{"expression":{"id":77919,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20692:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"20692:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77921,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77908,"src":"20704:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77922,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77910,"src":"20716:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77917,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"20672:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"20672:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":77923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20672:51:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":77924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20672:60:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20656:76:108"},{"assignments":[77927],"declarations":[{"constant":false,"id":77927,"mutability":"mutable","name":"tpLastUpdated","nameLocation":"20748:13:108","nodeType":"VariableDeclaration","scope":77988,"src":"20743:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77926,"name":"uint","nodeType":"ElementaryTypeName","src":"20743:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77936,"initialValue":{"expression":{"arguments":[{"expression":{"id":77930,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20788:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"20788:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77932,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77908,"src":"20800:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77933,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77910,"src":"20812:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77928,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"20764:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"20764:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":77934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20764:55:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":77935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tpLastUpdated","nodeType":"MemberAccess","referencedDeclaration":89442,"src":"20764:69:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20743:90:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77938,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77916,"src":"20854:8:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20865:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20854:12:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f5452414445","id":77941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20868:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""},"value":"NO_TRADE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""}],"id":77937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20846:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20846:33:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77943,"nodeType":"ExpressionStatement","src":"20846:33:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77945,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"20898:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"20898:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":77947,"name":"tpLastUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77927,"src":"20913:13:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20898:28:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":77949,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"20930:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20898:51:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c494d49545f54494d454c4f434b","id":77951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20951:16:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""},"value":"LIMIT_TIMELOCK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""}],"id":77944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20890:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20890:78:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77953,"nodeType":"ExpressionStatement","src":"20890:78:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77955,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77912,"src":"20987:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":77960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21006:6:108","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":77959,"name":"int256","nodeType":"ElementaryTypeName","src":"21006:6:108","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":77958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21001:4:108","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":77961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21001:12:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":77962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"21001:16:108","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":77957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20996:4:108","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":77956,"name":"uint","nodeType":"ElementaryTypeName","src":"20996:4:108","typeDescriptions":{}}},"id":77963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20996:22:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20987:31:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e434f52524543545f5450","id":77965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21020:14:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_eca16b38c5fcee9cc00ae92dba355367ff44d40698eb7b79ddec97714b262a35","typeString":"literal_string \"INCORRECT_TP\""},"value":"INCORRECT_TP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eca16b38c5fcee9cc00ae92dba355367ff44d40698eb7b79ddec97714b262a35","typeString":"literal_string \"INCORRECT_TP\""}],"id":77954,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20979:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":77966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20979:56:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77967,"nodeType":"ExpressionStatement","src":"20979:56:108"},{"expression":{"arguments":[{"expression":{"id":77971,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21066:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21066:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77973,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77908,"src":"21078:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77974,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77910,"src":"21090:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77975,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77912,"src":"21098:6:108","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"}],"expression":{"id":77968,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"21048:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":77970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateTp","nodeType":"MemberAccess","referencedDeclaration":89720,"src":"21048:17:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256) external"}},"id":77976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21048:57:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77977,"nodeType":"ExpressionStatement","src":"21048:57:108"},{"eventCall":{"arguments":[{"expression":{"id":77979,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21133:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21133:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77981,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77908,"src":"21145:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77982,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77910,"src":"21157:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77983,"name":"_newTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77912,"src":"21165:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":77984,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21173:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":77985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"21173:15:108","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77978,"name":"TpUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76392,"src":"21123:9:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256)"}},"id":77986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21123:66:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77987,"nodeType":"EmitStatement","src":"21118:71:108"}]},"documentation":{"id":77906,"nodeType":"StructuredDocumentation","src":"20344:224:108","text":" @notice Internal function to update Take Profit value.\n @param _pairIndex The index of the trading pair.\n @param _index The index of the trade.\n @param _newTp New Take Profit value."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateTp","nameLocation":"20583:9:108","parameters":{"id":77913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77908,"mutability":"mutable","name":"_pairIndex","nameLocation":"20598:10:108","nodeType":"VariableDeclaration","scope":77989,"src":"20593:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77907,"name":"uint","nodeType":"ElementaryTypeName","src":"20593:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77910,"mutability":"mutable","name":"_index","nameLocation":"20615:6:108","nodeType":"VariableDeclaration","scope":77989,"src":"20610:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77909,"name":"uint","nodeType":"ElementaryTypeName","src":"20610:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77912,"mutability":"mutable","name":"_newTp","nameLocation":"20628:6:108","nodeType":"VariableDeclaration","scope":77989,"src":"20623:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77911,"name":"uint","nodeType":"ElementaryTypeName","src":"20623:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20592:43:108"},"returnParameters":{"id":77914,"nodeType":"ParameterList","parameters":[],"src":"20645:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":78222,"nodeType":"FunctionDefinition","src":"21479:1814:108","nodes":[],"body":{"id":78221,"nodeType":"Block","src":"21584:1709:108","nodes":[],"statements":[{"assignments":[78006],"declarations":[{"constant":false,"id":78006,"mutability":"mutable","name":"t","nameLocation":"21624:1:108","nodeType":"VariableDeclaration","scope":78221,"src":"21595:30:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78005,"nodeType":"UserDefinedTypeName","pathNode":{"id":78004,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"21595:21:108"},"referencedDeclaration":89438,"src":"21595:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":78014,"initialValue":{"arguments":[{"expression":{"id":78009,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21648:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21648:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78011,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"21660:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78012,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"21672:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78007,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"21628:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"21628:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":78013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21628:51:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"21595:84:108"},{"assignments":[78016],"declarations":[{"constant":false,"id":78016,"mutability":"mutable","name":"slLastUpdated","nameLocation":"21695:13:108","nodeType":"VariableDeclaration","scope":78221,"src":"21690:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78015,"name":"uint","nodeType":"ElementaryTypeName","src":"21690:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78025,"initialValue":{"expression":{"arguments":[{"expression":{"id":78019,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21735:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"21735:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78021,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"21747:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78022,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"21759:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78017,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"21711:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"21711:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":78023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21711:55:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":78024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slLastUpdated","nodeType":"MemberAccess","referencedDeclaration":89444,"src":"21711:69:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21690:90:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78027,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"21801:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21801:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21801:14:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e4f5f5452414445","id":78031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21817:10:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""},"value":"NO_TRADE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b4b5d46660943666f3d9e94a615f29a03a5939d17e3b2dd0962632442c22cfa","typeString":"literal_string \"NO_TRADE\""}],"id":78026,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21793:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21793:35:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78033,"nodeType":"ExpressionStatement","src":"21793:35:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78035,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"21847:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":78040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21866:6:108","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78039,"name":"int256","nodeType":"ElementaryTypeName","src":"21866:6:108","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":78038,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21861:4:108","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":78041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21861:12:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":78042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"21861:16:108","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":78037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21856:4:108","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":78036,"name":"uint","nodeType":"ElementaryTypeName","src":"21856:4:108","typeDescriptions":{}}},"id":78043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21856:22:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21847:31:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e434f52524543545f534c","id":78045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21880:14:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_e26576f002b2df25694585b22c68c507e527b4e79b2e94d784b0884731fa8046","typeString":"literal_string \"INCORRECT_SL\""},"value":"INCORRECT_SL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e26576f002b2df25694585b22c68c507e527b4e79b2e94d784b0884731fa8046","typeString":"literal_string \"INCORRECT_SL\""}],"id":78034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21839:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21839:56:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78047,"nodeType":"ExpressionStatement","src":"21839:56:108"},{"assignments":[78049],"declarations":[{"constant":false,"id":78049,"mutability":"mutable","name":"maxSlDist","nameLocation":"21913:9:108","nodeType":"VariableDeclaration","scope":78221,"src":"21908:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78048,"name":"uint","nodeType":"ElementaryTypeName","src":"21908:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78062,"initialValue":{"arguments":[{"expression":{"id":78059,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"21963:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21963:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78050,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"21927:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"21927:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":78052,"name":"_MAX_SL_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76263,"src":"21941:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21927:23:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21926:25:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":78055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21954:3:108","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"21926:31:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21925:33:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":90840,"src":"21925:37:108","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":78061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21925:49:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21908:66:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78064,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22007:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22017:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22007:11:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":78067,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22023:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"22023:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78075,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22067:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78076,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22077:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"22077:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":78078,"name":"maxSlDist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78049,"src":"22091:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22077:23:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22067:33:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22023:77:108","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78069,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22031:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78070,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22041:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"22041:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78072,"name":"maxSlDist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78049,"src":"22055:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22041:23:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22031:33:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22022:79:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22007:94:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"534c5f544f4f5f424947","id":78084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22116:12:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_deb0dac1388032ab8943a8f1adbd9fb8ce2d84f81aba6dfc36ceceacabdb1797","typeString":"literal_string \"SL_TOO_BIG\""},"value":"SL_TOO_BIG"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_deb0dac1388032ab8943a8f1adbd9fb8ce2d84f81aba6dfc36ceceacabdb1797","typeString":"literal_string \"SL_TOO_BIG\""}],"id":78063,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21985:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21985:154:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78086,"nodeType":"ExpressionStatement","src":"21985:154:108"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78088,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22160:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":78089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"22160:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78090,"name":"slLastUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78016,"src":"22175:13:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22160:28:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":78092,"name":"limitOrdersTimelock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76271,"src":"22192:19:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22160:51:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c494d49545f54494d454c4f434b","id":78094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22213:16:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""},"value":"LIMIT_TIMELOCK"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64c7a6a4a0f4dc1c081f54d2085aab614c866e1351371f617cb0ff7c8e8cf3f7","typeString":"literal_string \"LIMIT_TIMELOCK\""}],"id":78087,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22152:7:108","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22152:78:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78096,"nodeType":"ExpressionStatement","src":"22152:78:108"},{"assignments":[78099],"declarations":[{"constant":false,"id":78099,"mutability":"mutable","name":"aggregator","nameLocation":"22260:10:108","nodeType":"VariableDeclaration","scope":78221,"src":"22243:27:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":78098,"nodeType":"UserDefinedTypeName","pathNode":{"id":78097,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"22243:16:108"},"referencedDeclaration":89248,"src":"22243:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":78103,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78100,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"22273:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"22273:24:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":78102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22273:26:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"22243:56:108"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78104,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22316:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22326:1:108","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22316:11:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":78113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"22331:58:108","subExpression":{"arguments":[{"id":78111,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"22378:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78107,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78099,"src":"22332:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"22332:23:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":78109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22332:25:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":78110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"guaranteedSlEnabled","nodeType":"MemberAccess","referencedDeclaration":88966,"src":"22332:45:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":78112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22332:57:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22316:73:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78219,"nodeType":"Block","src":"22567:719:108","statements":[{"assignments":[78137],"declarations":[{"constant":false,"id":78137,"mutability":"mutable","name":"levPosUSDC","nameLocation":"22587:10:108","nodeType":"VariableDeclaration","scope":78219,"src":"22582:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78136,"name":"uint","nodeType":"ElementaryTypeName","src":"22582:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78144,"initialValue":{"arguments":[{"expression":{"id":78141,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22622:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"22622:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":78138,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22600:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"22600:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"22600:21:108","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":78143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22600:33:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22582:51:108"},{"expression":{"id":78162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78145,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22650:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78147,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"22650:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"expression":{"id":78150,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22697:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"22697:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78152,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22707:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"22707:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78154,"name":"levPosUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"22720:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":78155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:108","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22720:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":78157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22737:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"74727565","id":78158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22744:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":78159,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22750:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"22750:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":78148,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"22671:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"handleDevGovFees","nodeType":"MemberAccess","referencedDeclaration":89814,"src":"22671:25:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,bool,bool,bool) external returns (uint256)"}},"id":78161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22671:85:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22650:106:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78163,"nodeType":"ExpressionStatement","src":"22650:106:108"},{"expression":{"arguments":[{"id":78167,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"22794:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"expression":{"id":78164,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"22773:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateTrade","nodeType":"MemberAccess","referencedDeclaration":89792,"src":"22773:20:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$returns$__$","typeString":"function (struct ITradingStorage.Trade memory) external"}},"id":78168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22773:23:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78169,"nodeType":"ExpressionStatement","src":"22773:23:108"},{"assignments":[78171],"declarations":[{"constant":false,"id":78171,"mutability":"mutable","name":"orderId","nameLocation":"22818:7:108","nodeType":"VariableDeclaration","scope":78219,"src":"22813:12:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78170,"name":"uint","nodeType":"ElementaryTypeName","src":"22813:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78179,"initialValue":{"arguments":[{"id":78174,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"22848:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":78175,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"22860:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":78176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OrderType","nodeType":"MemberAccess","referencedDeclaration":89075,"src":"22860:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":78177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UPDATE_SL","nodeType":"MemberAccess","referencedDeclaration":89074,"src":"22860:36:108","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}],"expression":{"id":78172,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78099,"src":"22828:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":89178,"src":"22828:19:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_enum$_OrderType_$89075_$returns$_t_uint256_$","typeString":"function (uint256,enum IPriceAggregator.OrderType) external returns (uint256)"}},"id":78178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22828:69:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22813:84:108"},{"expression":{"arguments":[{"id":78183,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78171,"src":"22963:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":78186,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23016:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"23016:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78188,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"23028:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78189,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"23040:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78190,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"23048:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"23048:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78192,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"23061:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"23061:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":78194,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"23068:6:108","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"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78184,"name":"IPriceAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89248,"src":"22989:16:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceAggregator_$89248_$","typeString":"type(contract IPriceAggregator)"}},"id":78185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PendingSl","nodeType":"MemberAccess","referencedDeclaration":89098,"src":"22989:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PendingSl_$89098_storage_ptr_$","typeString":"type(struct IPriceAggregator.PendingSl storage pointer)"}},"id":78195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22989:86:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}],"expression":{"id":78180,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78099,"src":"22914:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storePendingSlOrder","nodeType":"MemberAccess","referencedDeclaration":89221,"src":"22914:30:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_struct$_PendingSl_$89098_memory_ptr_$returns$__$","typeString":"function (uint256,struct IPriceAggregator.PendingSl memory) external"}},"id":78196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22914:176:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78197,"nodeType":"ExpressionStatement","src":"22914:176:108"},{"eventCall":{"arguments":[{"expression":{"id":78199,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23130:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"23130:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78201,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"23142:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78202,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"23154:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78203,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"23162:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78204,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78171,"src":"23170:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78205,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23179:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":78206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"23179:15:108","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78198,"name":"SlUpdateInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76418,"src":"23112:17:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256,uint256)"}},"id":78207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23112:83:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78208,"nodeType":"EmitStatement","src":"23107:88:108"},{"expression":{"arguments":[{"id":78215,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78171,"src":"23249:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78216,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77999,"src":"23258:15:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":78209,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78099,"src":"23212:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fulfill","nodeType":"MemberAccess","referencedDeclaration":89186,"src":"23212:18:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":78214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":78212,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23238:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"23238:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"23212:36:108","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (uint256,bytes memory[] memory) payable external"}},"id":78217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23212:62:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78218,"nodeType":"ExpressionStatement","src":"23212:62:108"}]},"id":78220,"nodeType":"IfStatement","src":"22312:974:108","trueBody":{"id":78135,"nodeType":"Block","src":"22391:170:108","statements":[{"expression":{"arguments":[{"expression":{"id":78118,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22424:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"22424:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78120,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"22436:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78121,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"22448:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78122,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22456:6:108","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"}],"expression":{"id":78115,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76266,"src":"22406:8:108","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateSl","nodeType":"MemberAccess","referencedDeclaration":89709,"src":"22406:17:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256) external"}},"id":78123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22406:57:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78124,"nodeType":"ExpressionStatement","src":"22406:57:108"},{"eventCall":{"arguments":[{"expression":{"id":78126,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22493:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"22493:10:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78128,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77992,"src":"22505:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78129,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77994,"src":"22517:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78130,"name":"_newSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22525:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78131,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22533:5:108","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":78132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"22533:15:108","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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78125,"name":"SlUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76404,"src":"22483:9:108","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256)"}},"id":78133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22483:66:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78134,"nodeType":"EmitStatement","src":"22478:71:108"}]}}]},"documentation":{"id":77990,"nodeType":"StructuredDocumentation","src":"21205:268:108","text":" @notice Internal function to update Stop Loss value.\n @param _pairIndex The index of the trading pair.\n @param _index The index of the trade.\n @param _newSl New Stop Loss value.\n @param priceUpdateData Pyth price data."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateSl","nameLocation":"21488:9:108","parameters":{"id":78000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77992,"mutability":"mutable","name":"_pairIndex","nameLocation":"21503:10:108","nodeType":"VariableDeclaration","scope":78222,"src":"21498:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77991,"name":"uint","nodeType":"ElementaryTypeName","src":"21498:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77994,"mutability":"mutable","name":"_index","nameLocation":"21520:6:108","nodeType":"VariableDeclaration","scope":78222,"src":"21515:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77993,"name":"uint","nodeType":"ElementaryTypeName","src":"21515:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77996,"mutability":"mutable","name":"_newSl","nameLocation":"21533:6:108","nodeType":"VariableDeclaration","scope":78222,"src":"21528:11:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77995,"name":"uint","nodeType":"ElementaryTypeName","src":"21528:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77999,"mutability":"mutable","name":"priceUpdateData","nameLocation":"21558:15:108","nodeType":"VariableDeclaration","scope":78222,"src":"21541:32:108","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":77997,"name":"bytes","nodeType":"ElementaryTypeName","src":"21541:5:108","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":77998,"nodeType":"ArrayTypeName","src":"21541:7:108","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"21497:77:108"},"returnParameters":{"id":78001,"nodeType":"ParameterList","parameters":[],"src":"21584:0:108"},"scope":78321,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":78292,"nodeType":"FunctionDefinition","src":"23673:681:108","nodes":[],"body":{"id":78291,"nodeType":"Block","src":"23925:429:108","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"id":78245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78241,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78230,"src":"23940:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":78242,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"23949:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":78243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateType","nodeType":"MemberAccess","referencedDeclaration":89408,"src":"23949:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_updateType_$89408_$","typeString":"type(enum ITradingStorage.updateType)"}},"id":78244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"DEPOSIT","nodeType":"MemberAccess","referencedDeclaration":89406,"src":"23949:34:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"src":"23940:43:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"id":78269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78265,"name":"_type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78230,"src":"24148:5:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":78266,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"24157:15:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":78267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateType","nodeType":"MemberAccess","referencedDeclaration":89408,"src":"24157:26:108","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_updateType_$89408_$","typeString":"type(enum ITradingStorage.updateType)"}},"id":78268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WITHDRAW","nodeType":"MemberAccess","referencedDeclaration":89407,"src":"24157:35:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"src":"24148:44:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78289,"nodeType":"IfStatement","src":"24144:203:108","trueBody":{"id":78288,"nodeType":"Block","src":"24194:153:108","statements":[{"expression":{"id":78276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78270,"name":"newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78239,"src":"24209:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78271,"name":"_currentCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78227,"src":"24221:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78272,"name":"_newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78232,"src":"24242:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24221:31:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78274,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78234,"src":"24255:5:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24221:39:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24209:51:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78277,"nodeType":"ExpressionStatement","src":"24209:51:108"},{"expression":{"id":78286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78278,"name":"newLeverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78237,"src":"24275:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78279,"name":"_openInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78225,"src":"24290:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":78280,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76260,"src":"24310:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24290:30:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24289:32:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"id":78283,"name":"newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78239,"src":"24325:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24324:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24289:46:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24275:60:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78287,"nodeType":"ExpressionStatement","src":"24275:60:108"}]}},"id":78290,"nodeType":"IfStatement","src":"23936:411:108","trueBody":{"id":78264,"nodeType":"Block","src":"23985:153:108","statements":[{"expression":{"id":78252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78246,"name":"newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78239,"src":"24000:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78247,"name":"_currentCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78227,"src":"24012:18:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":78248,"name":"_newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78232,"src":"24033:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24012:31:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78250,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78234,"src":"24046:5:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24012:39:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24000:51:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78253,"nodeType":"ExpressionStatement","src":"24000:51:108"},{"expression":{"id":78262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78254,"name":"newLeverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78237,"src":"24066:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78255,"name":"_openInterestUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78225,"src":"24081:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":78256,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76260,"src":"24101:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24081:30:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24080:32:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"id":78259,"name":"newAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78239,"src":"24116:9:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24115:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24080:46:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24066:60:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78263,"nodeType":"ExpressionStatement","src":"24066:60:108"}]}}]},"documentation":{"id":78223,"nodeType":"StructuredDocumentation","src":"23301:366:108","text":" @notice Internal function to calculate new leverage.\n @param _openInterestUSDC The total open interest in USDC.\n @param _currentCollateral The current collateral amount.\n @param _type The type of update (DEPOSIT/WITHDRAW).\n @param _newAmount The new amount to be deposited/withdrawn.\n @param _fees Margin Fees"},"implemented":true,"kind":"function","modifiers":[],"name":"_calculateNewLeverage","nameLocation":"23682:21:108","parameters":{"id":78235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78225,"mutability":"mutable","name":"_openInterestUSDC","nameLocation":"23719:17:108","nodeType":"VariableDeclaration","scope":78292,"src":"23714:22:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78224,"name":"uint","nodeType":"ElementaryTypeName","src":"23714:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78227,"mutability":"mutable","name":"_currentCollateral","nameLocation":"23752:18:108","nodeType":"VariableDeclaration","scope":78292,"src":"23747:23:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78226,"name":"uint","nodeType":"ElementaryTypeName","src":"23747:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78230,"mutability":"mutable","name":"_type","nameLocation":"23808:5:108","nodeType":"VariableDeclaration","scope":78292,"src":"23781:32:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"typeName":{"id":78229,"nodeType":"UserDefinedTypeName","pathNode":{"id":78228,"name":"ITradingStorage.updateType","nodeType":"IdentifierPath","referencedDeclaration":89408,"src":"23781:26:108"},"referencedDeclaration":89408,"src":"23781:26:108","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"visibility":"internal"},{"constant":false,"id":78232,"mutability":"mutable","name":"_newAmount","nameLocation":"23829:10:108","nodeType":"VariableDeclaration","scope":78292,"src":"23824:15:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78231,"name":"uint","nodeType":"ElementaryTypeName","src":"23824:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78234,"mutability":"mutable","name":"_fees","nameLocation":"23855:5:108","nodeType":"VariableDeclaration","scope":78292,"src":"23850:10:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78233,"name":"uint","nodeType":"ElementaryTypeName","src":"23850:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23703:164:108"},"returnParameters":{"id":78240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78237,"mutability":"mutable","name":"newLeverage","nameLocation":"23896:11:108","nodeType":"VariableDeclaration","scope":78292,"src":"23891:16:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78236,"name":"uint","nodeType":"ElementaryTypeName","src":"23891:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78239,"mutability":"mutable","name":"newAmount","nameLocation":"23914:9:108","nodeType":"VariableDeclaration","scope":78292,"src":"23909:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78238,"name":"uint","nodeType":"ElementaryTypeName","src":"23909:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23890:34:108"},"scope":78321,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":78320,"nodeType":"FunctionDefinition","src":"24508:385:108","nodes":[],"body":{"id":78319,"nodeType":"Block","src":"24603:290:108","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":78303,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24687:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"24687:8:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78305,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24714:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"24714:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78307,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24744:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"24744:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78309,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24770:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"24770:11:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78311,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24800:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"24800:5:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":78313,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24824:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"24824:17:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78315,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78296,"src":"24860:1:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"24860:10:108","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"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78301,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76269,"src":"24634:9:108","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":78302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradeLiquidationPrice","nodeType":"MemberAccess","referencedDeclaration":88699,"src":"24634:34:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,bool,uint256,uint256) view external returns (uint256)"}},"id":78317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24634:251:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":78300,"id":78318,"nodeType":"Return","src":"24614:271:108"}]},"documentation":{"id":78293,"nodeType":"StructuredDocumentation","src":"24364:138:108","text":" @notice Internal function to get the liquidation price of a trade.\n @param t The trade information in memory."},"implemented":true,"kind":"function","modifiers":[],"name":"_getTradeLiquidationPrice","nameLocation":"24517:25:108","parameters":{"id":78297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78296,"mutability":"mutable","name":"t","nameLocation":"24572:1:108","nodeType":"VariableDeclaration","scope":78320,"src":"24543:30:108","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78295,"nodeType":"UserDefinedTypeName","pathNode":{"id":78294,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"24543:21:108"},"referencedDeclaration":89438,"src":"24543:21:108","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"24542:32:108"},"returnParameters":{"id":78300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78320,"src":"24597:4:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78298,"name":"uint","nodeType":"ElementaryTypeName","src":"24597:4:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24596:6:108"},"scope":78321,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":76253,"name":"PausableUpgradeable","nodeType":"IdentifierPath","referencedDeclaration":43664,"src":"378:19:108"},"id":76254,"nodeType":"InheritanceSpecifier","src":"378:19:108"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[78321,43664,47010,43537],"name":"Trading","nameLocation":"367:7:108","scope":78322,"usedErrors":[]}],"license":"MIT"},"id":108}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarket","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"delegatedAction","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"call_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"delegations","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executeLimitOrder","inputs":[{"name":"_orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"},{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeMarketOrders","inputs":[{"name":"orderId","type":"uint256[]","internalType":"uint256[]"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"limitOrdersTimelock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrade","inputs":[{"name":"t","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":"_type","type":"uint8","internalType":"enum IExecute.OpenLimitOrderType"},{"name":"_slippageP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeDelegate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegate","inputs":[{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrdersTimelock","inputs":[{"name":"_blocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketExecFeeReciever","inputs":[{"name":"_reciever","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMargin","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum ITradingStorage.updateType"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_tp","type":"uint256","internalType":"uint256"},{"name":"_sl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_isOperator","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTpAndSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"_newTP","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LimitOrderSameBlock","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_type","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.updateType"},{"name":"newTrade","type":"tuple","indexed":false,"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":"marginFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtectionTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitCanceled","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitPlaced","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"openPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executionFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum IExecute.OpenLimitOrderType"},{"name":"slippageP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"isOperator","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlUpdateInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TpUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ce780620000f36000396000f3fe6080604052600436106101815760003560e01c80636d70f7ae116100d1578063c0b4d24d1161008a578063ca5eb5e111610064578063ca5eb5e11461044b578063cd90b8a414610495578063d1a91ff2146104a8578063d4a1caa7146104bd57600080fd5b8063c0b4d24d146103f8578063c5ed6a081461040b578063c641558e1461042b57600080fd5b80636d70f7ae1461031d5780638456cb591461034d5780639a10cc32146103625780639e2033f514610382578063b9b6573a146103a2578063bffe3486146103c257600080fd5b806336fb8b151161013e578063485cc95511610118578063485cc95514610299578063570ca735146102b95780635c975abb146102d95780636d44a3b2146102fd57600080fd5b806336fb8b15146102425780633f4ba83a1461027157806346f6c8f51461028657600080fd5b80630890d22a146101865780631346b0ff146101af57806315b760b1146101e757806316fff074146101fc57806319cde9a11461021c5780632c3cbce41461022f575b600080fd5b34801561019257600080fd5b5061019c60695481565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b506068546101cf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b6101fa6101f53660046154d0565b6104dd565b005b34801561020857600080fd5b506067546101cf906001600160a01b031681565b61019c61022a366004615310565b61050b565b61019c61023d3660046154a4565b611600565b34801561024e57600080fd5b506101fa33600090815260656020526040902080546001600160a01b0319169055565b34801561027d57600080fd5b506101fa612084565b6101fa6102943660046150c7565b612144565b3480156102a557600080fd5b506101fa6102b4366004614f35565b612ba7565b3480156102c557600080fd5b50606a546101cf906001600160a01b031681565b3480156102e557600080fd5b5060335460ff165b60405190151581526020016101a6565b34801561030957600080fd5b506101fa610318366004614f6e565b612cef565b34801561032957600080fd5b506102ed610338366004614ef4565b606b6020526000908152604090205460ff1681565b34801561035957600080fd5b506101fa612e08565b610375610370366004614f9c565b612ec6565b6040516101a691906156e8565b34801561038e57600080fd5b506101fa61039d366004614ef4565b613001565b3480156103ae57600080fd5b506101fa6103bd366004615429565b61311e565b3480156103ce57600080fd5b506101cf6103dd366004614ef4565b6065602052600090815260409020546001600160a01b031681565b6101fa610406366004615021565b613357565b34801561041757600080fd5b506101fa6104263660046153f7565b6134ab565b34801561043757600080fd5b506101fa61044636600461551c565b613534565b34801561045757600080fd5b506101fa610466366004614ef4565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61019c6104a336600461544b565b613798565b3480156104b457600080fd5b506101cf6140ff565b3480156104c957600080fd5b506101fa6104d83660046153f7565b614127565b6104e561427b565b6104f08686856142c1565b8015610503576105038686868585614561565b505050505050565b600061051561427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561055a57600080fd5b505afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190614f18565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106079190614f18565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561065757600080fd5b505afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f9190615410565b6067546001600160a01b031663f7b3c6fd6106a86140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190615410565b106107665760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b457600080fd5b505afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190615410565b6067546001600160a01b03166397e7995a6108056140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190615410565b6067546001600160a01b0316639c8912f161089f6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190615410565b6067546001600160a01b0316631c8636b46109396140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190615410565b6109c49190615b5b565b6109ce9190615b5b565b10610a115760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b604482015260640161075d565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190615410565b610a9e608088013560e0890135614c70565b1015610adc5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b604482015260640161075d565b6101008601351580610b1b5750610af960e0870160c0880161508d565b610b0e578560a0013586610100013510610b1b565b8560a00135866101000135115b610b525760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b6101208601351580610b915750610b6f60e0870160c0880161508d565b610b84578560a0013586610120013511610b91565b8560a00135866101200135105b610bc85760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6000856003811115610bdc57610bdc615c2c565b14158015610bfc57506001856003811115610bf957610bf9615c2c565b14155b156110b55760008660e00135118015610c9a5750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610c5a57600080fd5b505afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c929190615410565b8660e0013510155b8015610d2b5750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190615410565b8660e0013511155b610d475760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a610d606140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610dea6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190615410565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610e966140ff565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610ece60e08c0160c08d0161508d565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610f2c9190615805565b600060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614f18565b6001600160a01b031663ec570610610fe56140ff565b8960200135848a6040518563ffffffff1660e01b815260040161100b94939291906156b2565b600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506110456140ff565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361108560e08c0160c08d0161508d565b8b60a0013560008c8c8f608001356040516110a7989796959493929190615a75565b60405180910390a25061155a565b60008660e0013511801561116957506001600160a01b03811663995b7656602088013560018860038111156110ec576110ec615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190615410565b8660e0013510155b801561121557506001600160a01b038116639b2f6cab6020880135600188600381111561119857611198615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190615410565b8660e0013511155b6112315760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a61124a6140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b50600092506112c0915050565b8560038111156112d2576112d2615c2c565b146113615760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061130a9060208a0135906006906004016159df565b602060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190615410565b6113e6565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906113949060208a0135906000906004016159df565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190615410565b606754604080516101e081019091529194506001600160a01b03169063d8137fe8908060808101806114166140ff565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c0016020810190611460919061508d565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b81526004016114c7939291906158b8565b600060405180830381600087803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050506115016140ff565b604080516020808a013582526001908201529081018590524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d80600081146115a7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ac565b606091505b50509050806115f65760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b5050509392505050565b600061160a61427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f79190614f18565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d8060008114611749576040519150601f19603f3d011682016040523d82523d6000602084013e61174e565b606091505b50509050806117985760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6117b46140ff565b89896040518463ffffffff1660e01b81526004016117d493929190615691565b6101606040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061535a565b6067549091506000906001600160a01b0316638c8ff1d56118446140ff565b8a8a6040518463ffffffff1660e01b815260040161186493929190615691565b60a06040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190615298565b60600151905081606001518611156118fb5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161075d565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190615410565b6067546001600160a01b031663f7b3c6fd61199a6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a119190615410565b10611a535760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b604482015260640161075d565b8015611a985760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e0015111611abc5760405162461bcd60e51b815260040161075d906156fb565b836001600160a01b031663737113b589611ae38560e001518a614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190615410565b610140830151611b699042615bb4565b1015611ba55760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c229190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614f18565b6001600160a01b031663c5f5951a611ca86140ff565b8b8b6040518463ffffffff1660e01b8152600401611cc893929190615691565b60206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1891906150aa565b905080611e2a57606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190614f18565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611dd39291906159df565b602060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190615410565b611f30565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7857600080fd5b505afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190614f18565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401611ede9291906159df565b602060405180830381600087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190615410565b606754604080516101e081019091529197506001600160a01b03169063d8137fe890806080810180611f606140ff565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b8152600401611fea939291906158b8565b600060405180830381600087803b15801561200457600080fd5b505af1158015612018573d6000803e3d6000fd5b505050506120246140ff565b604080518b8152600060208201529081018890524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d257600080fd5b505afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190614f18565b6001600160a01b0316336001600160a01b03161461213a5760405162461bcd60e51b815260040161075d906157e3565b612142614c95565b565b61214c61427b565b336000908152606b602052604090205460ff1661217b5760405162461bcd60e51b815260040161075d90615771565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561223057600080fd5b505afa158015612244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122689190614f18565b9050600387600381111561227e5761227e615c2c565b141561234457606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a906122b890899089908990600401615691565b60206040518083038186803b1580156122d057600080fd5b505afa1580156122e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230891906150aa565b61233f5760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b604482015260640161075d565b61268c565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90612379908a908a908a90600401615691565b6101606040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ca919061535a565b905060008160e00151116123f05760405162461bcd60e51b815260040161075d906156fb565b600188600381111561240457612404615c2c565b14158061241657506000816101200151115b61244a5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b604482015260640161075d565b600288600381111561245e5761245e615c2c565b1415612599576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156124f657600080fd5b505afa15801561250a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252e9190615410565b90508161012001516000148061255e57508160c0015161255557816101200151811061255e565b81610120015181115b6125935760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b604482015260640161075d565b5061268a565b816001600160a01b031663737113b582602001516125c88460e001518560600151614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b15801561260657600080fd5b505af115801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190615410565b61014082015161264e9042615bb4565b101561268a5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156126d157600080fd5b505afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190614f18565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190614f18565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b60038111156127ba576127ba615c2c565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128479190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561287f57600080fd5b505afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614f18565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b81526004016128e693929190615691565b60206040518083038186803b1580156128fe57600080fd5b505afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293691906150aa565b905060006001600160a01b03851663c0a027f48b60038f600381111561295e5761295e615c2c565b14612976578461296f576003612979565b6008612979565b60025b6040518363ffffffff1660e01b81526004016129969291906159df565b602060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e89190615410565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612a3057612a30615c2c565b815250836040518363ffffffff1660e01b8152600401612a5192919061589d565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612a9b6140ff565b6040518363ffffffff1660e01b8152600401612ab8929190615912565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612b679085908d908d90600401615938565b6000604051808303818588803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612bc75750600054600160ff909116105b80612be15750303b158015612be1575060005460ff166001145b612c445760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075d565b6000805460ff191660011790558015612c67576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612ca4614ce7565b8015612cea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3d57600080fd5b505afa158015612d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d759190614f18565b6001600160a01b0316336001600160a01b031614612da55760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e9190614f18565b6001600160a01b0316336001600160a01b031614612ebe5760405162461bcd60e51b815260040161075d906157e3565b612142614d16565b6001600160a01b03838116600090815260656020526040902054606091163314612f2a5760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b604482015260640161075d565b606680546001600160a01b0319166001600160a01b03861617905560405160009081903090612f5c9087908790615681565b600060405180830381855af49150503d8060008114612f97576040519150601f19603f3d011682016040523d82523d6000602084013e612f9c565b606091505b509150915081612fe857604481511015612fb557600080fd5b60048101905080806020019051810190612fcf9190615143565b60405162461bcd60e51b815260040161075d91906156e8565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561304f57600080fd5b505afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130879190614f18565b6001600160a01b0316336001600160a01b0316146130b75760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0381166130fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161075d565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b61312661427b565b6067546000906001600160a01b031663b8878a2c6131426140ff565b85856040518463ffffffff1660e01b815260040161316293929190615691565b6101806040518083038186803b15801561317b57600080fd5b505afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b391906151f0565b9050606954816101400151436131c99190615bb4565b10156131e75760405162461bcd60e51b815260040161075d90615749565b6067546001600160a01b0316638b83351a816132016140ff565b84610160015185606001516132169190615b5b565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561326557600080fd5b505af1158015613279573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506132986140ff565b85856040518463ffffffff1660e01b81526004016132b893929190615691565b600060405180830381600087803b1580156132d257600080fd5b505af11580156132e6573d6000803e3d6000fd5b505050506132f26140ff565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace094848442856060015160405161334a949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166133865760405162461bcd60e51b815260040161075d90615771565b60005b838110156134a457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133df57600080fd5b505afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190614f18565b6001600160a01b031663dd2f3c053487878581811061343857613438615c42565b9050602002013586866040518563ffffffff1660e01b815260040161345f93929190615938565b6000604051808303818588803b15801561347857600080fd5b505af115801561348c573d6000803e3d6000fd5b5050505050808061349c90615bfb565b915050613389565b5050505050565b336000908152606b602052604090205460ff166134da5760405162461bcd60e51b815260040161075d90615771565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b15801561352057600080fd5b505af11580156134a4573d6000803e3d6000fd5b61353c61427b565b6067546000906001600160a01b031663b8878a2c6135586140ff565b89896040518463ffffffff1660e01b815260040161357893929190615691565b6101806040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c991906151f0565b9050606954816101400151436135df9190615bb4565b10156135fd5760405162461bcd60e51b815260040161075d90615749565b82158061361a575080608001516136165782851161361a565b8285105b6136515760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b81158061366e5750806080015161366a5781851061366e565b8185115b6136a55760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906136f3908490600401615805565b600060405180830381600087803b15801561370d57600080fd5b505af1158015613721573d6000803e3d6000fd5b5050505061372d6140ff565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b60006137a261427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156137e757600080fd5b505afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f9190614f18565b6067549091506000906001600160a01b031663a3a80ffe61383e6140ff565b8b8b6040518463ffffffff1660e01b815260040161385e93929190615691565b6101606040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af919061535a565b6067549091506000906001600160a01b0316638c8ff1d56138ce6140ff565b8c8c6040518463ffffffff1660e01b81526004016138ee93929190615691565b60a06040518083038186803b15801561390657600080fd5b505afa15801561391a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393e9190615298565b90508060600151156139895760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e00151116139ad5760405162461bcd60e51b815260040161075d906156fb565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613a3257600080fd5b505afa158015613a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6a9190615410565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613a9b908e9060049081016159df565b602060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190615410565b9450836001600160a01b031663cbe91bd986604051806101000160405280613b136140ff565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613b3f57613b3f615c2c565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613b7f929190615a03565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b50505050613bc6826000015184606001518b8b85614d53565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613c1557600080fd5b505afa158015613c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4d9190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613c8557600080fd5b505afa158015613c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbd9190614f18565b6001600160a01b031663c5f5951a613cd36140ff565b8e8e6040518463ffffffff1660e01b8152600401613cf393929190615691565b60206040518083038186803b158015613d0b57600080fd5b505afa158015613d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4391906150aa565b9050808015613d63575060018a6001811115613d6157613d61615c2c565b145b15613d9e5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b604482015260640161075d565b60008460e00151118015613eae5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613de657600080fd5b505afa158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e9190614f18565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b158015613e6e57600080fd5b505afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615410565b8460e0015110155b8015613fb65750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613eee57600080fd5b505afa158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f269190614f18565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b158015613f7657600080fd5b505afa158015613f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fae9190615410565b8460e0015111155b613fd25760405162461bcd60e51b815260040161075d9061571d565b613fda6140ff565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516140229796959493929190615ac3565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061405a908790600401615903565b600060405180830381600087803b15801561407457600080fd5b505af1158015614088573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c05915034906140be908a908d908d90600401615938565b6000604051808303818588803b1580156140d757600080fd5b505af11580156140eb573d6000803e3d6000fd5b505050505050505050509695505050505050565b6066546000906001600160a01b031661411757503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561417557600080fd5b505afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614f18565b6001600160a01b0316336001600160a01b0316146141dd5760405162461bcd60e51b815260040161075d906157e3565b600081116142175760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b604482015260640161075d565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156121425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6142dd6140ff565b86866040518463ffffffff1660e01b81526004016142fd93929190615691565b6101606040518083038186803b15801561431657600080fd5b505afa15801561432a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434e919061535a565b60e001516067549091506000906001600160a01b0316638c8ff1d56143716140ff565b87876040518463ffffffff1660e01b815260040161439193929190615691565b60a06040518083038186803b1580156143a957600080fd5b505afa1580156143bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e19190615298565b602001519050600082116144075760405162461bcd60e51b815260040161075d906156fb565b6069546144148243615bb4565b10156144325760405162461bcd60e51b815260040161075d90615749565b6001600160ff1b0383106144775760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b604482015260640161075d565b6067546001600160a01b0316637fdb96f36144906140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905260648101869052608401600060405180830381600087803b1580156144e657600080fd5b505af11580156144fa573d6000803e3d6000fd5b505050506145066140ff565b60408051878152602081018790529081018590524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a25050505050565b6067546000906001600160a01b031663a3a80ffe61457d6140ff565b88886040518463ffffffff1660e01b815260040161459d93929190615691565b6101606040518083038186803b1580156145b657600080fd5b505afa1580156145ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ee919061535a565b6067549091506000906001600160a01b0316638c8ff1d561460d6140ff565b89896040518463ffffffff1660e01b815260040161462d93929190615691565b60a06040518083038186803b15801561464557600080fd5b505afa158015614659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467d9190615298565b60400151905060008260e00151116146a75760405162461bcd60e51b815260040161075d906156fb565b6001600160ff1b0385106146ec5760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b604482015260640161075d565b60006147198360e00151606460508660a001516147099190615b95565b6147139190615b73565b90614dff565b905085158061475857508260c0015161474457808360a0015161473c9190615b5b565b861115614758565b808360a001516147549190615bb4565b8610155b6147915760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b604482015260640161075d565b60695461479e8343615bb4565b10156147bc5760405162461bcd60e51b815260040161075d90615749565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561480157600080fd5b505afa158015614815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148399190614f18565b90508615806149335750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561487c57600080fd5b505afa158015614890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b49190614f18565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b81526004016148e191815260200190565b60206040518083038186803b1580156148f957600080fd5b505afa15801561490d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493191906150aa565b155b15614a20576067546001600160a01b031663a35441816149516140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505050506149c76140ff565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614c65565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614a52908d906005906004016159df565b602060405180830381600087803b158015614a6c57600080fd5b505af1158015614a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa49190615410565b9050816001600160a01b031663b8213bfa826040518060c00160405280614ac96140ff565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614b6a929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614b8457600080fd5b505af1158015614b98573d6000803e3d6000fd5b50505050614ba46140ff565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614c319085908c908c90600401615938565b6000604051808303818588803b158015614c4a57600080fd5b505af1158015614c5e573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614c828385615b95565b614c8c9190615b73565b90505b92915050565b614c9d614e11565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614d0e5760405162461bcd60e51b815260040161075d90615798565b612142614e5a565b614d1e61427b565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cca3390565b60008080856001811115614d6957614d69615c2c565b1415614da75782614d7a8588615b5b565b614d849190615bb4565b905080614d966402540be40089615b95565b614da09190615b73565b9150614df5565b6001856001811115614dbb57614dbb615c2c565b1415614df55782614dcc8588615bb4565b614dd69190615bb4565b905080614de86402540be40089615b95565b614df29190615b73565b91505b9550959350505050565b600081614c826402540be40085615b95565b60335460ff166121425760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161075d565b600054610100900460ff16614e815760405162461bcd60e51b815260040161075d90615798565b6033805460ff19169055565b8051614e9881615c81565b919050565b60008083601f840112614eaf57600080fd5b50813567ffffffffffffffff811115614ec757600080fd5b6020830191508360208260051b8501011115614ee257600080fd5b9250929050565b8051614e9881615c96565b600060208284031215614f0657600080fd5b8135614f1181615c81565b9392505050565b600060208284031215614f2a57600080fd5b8151614f1181615c81565b60008060408385031215614f4857600080fd5b8235614f5381615c81565b91506020830135614f6381615c81565b809150509250929050565b60008060408385031215614f8157600080fd5b8235614f8c81615c81565b91506020830135614f6381615c96565b600080600060408486031215614fb157600080fd5b8335614fbc81615c81565b9250602084013567ffffffffffffffff80821115614fd957600080fd5b818601915086601f830112614fed57600080fd5b813581811115614ffc57600080fd5b87602082850101111561500e57600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561503757600080fd5b843567ffffffffffffffff8082111561504f57600080fd5b61505b88838901614e9d565b9096509450602087013591508082111561507457600080fd5b5061508187828801614e9d565b95989497509550505050565b60006020828403121561509f57600080fd5b8135614f1181615c96565b6000602082840312156150bc57600080fd5b8151614f1181615c96565b60008060008060008060a087890312156150e057600080fd5b86356150eb81615ca4565b955060208701356150fb81615c81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b61513189828a01614e9d565b979a9699509497509295939492505050565b60006020828403121561515557600080fd5b815167ffffffffffffffff8082111561516d57600080fd5b818401915084601f83011261518157600080fd5b81518181111561519357615193615c58565b604051601f8201601f19908116603f011681019083821181831017156151bb576151bb615c58565b816040528281528760208487010111156151d457600080fd5b6151e5836020830160208801615bcb565b979650505050505050565b6000610180828403121561520357600080fd5b61520b615b0d565b61521483614e8d565b815260208301516020820152604083015160408201526060830151606082015261524060808401614ee9565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156152aa57600080fd5b60405160a0810181811067ffffffffffffffff821117156152cd576152cd615c58565b806040525082518152602083015160208201526040830151604082015260608301516152f881615c96565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561532757600080fd5b6101608082121561533757600080fd5b859450840135905061534881615ca4565b92959294505050610180919091013590565b6000610160828403121561536d57600080fd5b615375615b37565b61537e83614e8d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526153be60c08401614ee9565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561540957600080fd5b5035919050565b60006020828403121561542257600080fd5b5051919050565b6000806040838503121561543c57600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561546457600080fd5b863595506020870135945060408701356002811061548157600080fd5b935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b6000806000606084860312156154b957600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156154e957600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b60008060008060008060c0878903121561553557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526155a0816020860160208601615bcb565b601f01601f19169290920160200192915050565b600281106155c4576155c4615c2c565b9052565b80516001600160a01b03168252602080820151908301526040808201519083015260608101516155f781615c6e565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161565460c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016156d983615c6e565b82606083015295945050505050565b602081526000614c8c6020830184615588565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615848608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016158ab82856155c8565b8260808301529392505050565b6000610200820190506158cc828651615602565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614c8f8284615602565b60a0810161592082856155c8565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156159d157868503605f190183528135368a9003601e1901811261598857600080fd5b8901803567ffffffffffffffff8111156159a157600080fd5b8036038b13156159b057600080fd5b6159bd878288850161555f565b965050509183019190830190600101615962565b509298975050505050505050565b82815260408101600983106159f6576159f6615c2c565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615a4460808401826155b4565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615aa485615c6e565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615adf60408301886155b4565b615aec6060830187615602565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615b3157615b31615c58565b60405290565b604051610160810167ffffffffffffffff81118282101715615b3157615b31615c58565b60008219821115615b6e57615b6e615c16565b500190565b600082615b9057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615baf57615baf615c16565b500290565b600082821015615bc657615bc6615c16565b500390565b60005b83811015615be6578181015183820152602001615bce565b83811115615bf5576000848401525b50505050565b6000600019821415615c0f57615c0f615c16565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615c7e57615c7e615c2c565b50565b6001600160a01b0381168114615c7e57600080fd5b8015158114615c7e57600080fd5b60048110615c7e57600080fdfea264697066735822122072f48643396ca170a4aca563fe0663561cd3d0f49be2fb490da87c9e4a87a53a64736f6c63430008070033","sourceMap":"376:22917:111:-:0;;;3004:53;;;;;;;;;-1:-1:-1;3028:22:111;:20;:22::i;:::-;376:22917;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:154;5998:66:24;;;198:21:154;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:154;;;338:37;5998:66:24;;;;;;392:19:154;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:154;;;6174:28:24;;;;;;552:2:154;6174:28:24;;;6074:139;5939:280::o;422:184:154:-;376:22917:111;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101815760003560e01c80636d70f7ae116100d1578063c0b4d24d1161008a578063ca5eb5e111610064578063ca5eb5e11461044b578063cd90b8a414610495578063d1a91ff2146104a8578063d4a1caa7146104bd57600080fd5b8063c0b4d24d146103f8578063c5ed6a081461040b578063c641558e1461042b57600080fd5b80636d70f7ae1461031d5780638456cb591461034d5780639a10cc32146103625780639e2033f514610382578063b9b6573a146103a2578063bffe3486146103c257600080fd5b806336fb8b151161013e578063485cc95511610118578063485cc95514610299578063570ca735146102b95780635c975abb146102d95780636d44a3b2146102fd57600080fd5b806336fb8b15146102425780633f4ba83a1461027157806346f6c8f51461028657600080fd5b80630890d22a146101865780631346b0ff146101af57806315b760b1146101e757806316fff074146101fc57806319cde9a11461021c5780632c3cbce41461022f575b600080fd5b34801561019257600080fd5b5061019c60695481565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b506068546101cf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b6101fa6101f53660046154d0565b6104dd565b005b34801561020857600080fd5b506067546101cf906001600160a01b031681565b61019c61022a366004615310565b61050b565b61019c61023d3660046154a4565b611600565b34801561024e57600080fd5b506101fa33600090815260656020526040902080546001600160a01b0319169055565b34801561027d57600080fd5b506101fa612084565b6101fa6102943660046150c7565b612144565b3480156102a557600080fd5b506101fa6102b4366004614f35565b612ba7565b3480156102c557600080fd5b50606a546101cf906001600160a01b031681565b3480156102e557600080fd5b5060335460ff165b60405190151581526020016101a6565b34801561030957600080fd5b506101fa610318366004614f6e565b612cef565b34801561032957600080fd5b506102ed610338366004614ef4565b606b6020526000908152604090205460ff1681565b34801561035957600080fd5b506101fa612e08565b610375610370366004614f9c565b612ec6565b6040516101a691906156e8565b34801561038e57600080fd5b506101fa61039d366004614ef4565b613001565b3480156103ae57600080fd5b506101fa6103bd366004615429565b61311e565b3480156103ce57600080fd5b506101cf6103dd366004614ef4565b6065602052600090815260409020546001600160a01b031681565b6101fa610406366004615021565b613357565b34801561041757600080fd5b506101fa6104263660046153f7565b6134ab565b34801561043757600080fd5b506101fa61044636600461551c565b613534565b34801561045757600080fd5b506101fa610466366004614ef4565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61019c6104a336600461544b565b613798565b3480156104b457600080fd5b506101cf6140ff565b3480156104c957600080fd5b506101fa6104d83660046153f7565b614127565b6104e561427b565b6104f08686856142c1565b8015610503576105038686868585614561565b505050505050565b600061051561427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561055a57600080fd5b505afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190614f18565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106079190614f18565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561065757600080fd5b505afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f9190615410565b6067546001600160a01b031663f7b3c6fd6106a86140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190615410565b106107665760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b457600080fd5b505afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190615410565b6067546001600160a01b03166397e7995a6108056140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190615410565b6067546001600160a01b0316639c8912f161089f6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190615410565b6067546001600160a01b0316631c8636b46109396140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190615410565b6109c49190615b5b565b6109ce9190615b5b565b10610a115760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b604482015260640161075d565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190615410565b610a9e608088013560e0890135614c70565b1015610adc5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b604482015260640161075d565b6101008601351580610b1b5750610af960e0870160c0880161508d565b610b0e578560a0013586610100013510610b1b565b8560a00135866101000135115b610b525760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b6101208601351580610b915750610b6f60e0870160c0880161508d565b610b84578560a0013586610120013511610b91565b8560a00135866101200135105b610bc85760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6000856003811115610bdc57610bdc615c2c565b14158015610bfc57506001856003811115610bf957610bf9615c2c565b14155b156110b55760008660e00135118015610c9a5750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610c5a57600080fd5b505afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c929190615410565b8660e0013510155b8015610d2b5750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190615410565b8660e0013511155b610d475760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a610d606140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610dea6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190615410565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610e966140ff565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610ece60e08c0160c08d0161508d565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610f2c9190615805565b600060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614f18565b6001600160a01b031663ec570610610fe56140ff565b8960200135848a6040518563ffffffff1660e01b815260040161100b94939291906156b2565b600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506110456140ff565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361108560e08c0160c08d0161508d565b8b60a0013560008c8c8f608001356040516110a7989796959493929190615a75565b60405180910390a25061155a565b60008660e0013511801561116957506001600160a01b03811663995b7656602088013560018860038111156110ec576110ec615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190615410565b8660e0013510155b801561121557506001600160a01b038116639b2f6cab6020880135600188600381111561119857611198615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190615410565b8660e0013511155b6112315760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a61124a6140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b50600092506112c0915050565b8560038111156112d2576112d2615c2c565b146113615760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061130a9060208a0135906006906004016159df565b602060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190615410565b6113e6565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906113949060208a0135906000906004016159df565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190615410565b606754604080516101e081019091529194506001600160a01b03169063d8137fe8908060808101806114166140ff565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c0016020810190611460919061508d565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b81526004016114c7939291906158b8565b600060405180830381600087803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050506115016140ff565b604080516020808a013582526001908201529081018590524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d80600081146115a7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ac565b606091505b50509050806115f65760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b5050509392505050565b600061160a61427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f79190614f18565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d8060008114611749576040519150601f19603f3d011682016040523d82523d6000602084013e61174e565b606091505b50509050806117985760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6117b46140ff565b89896040518463ffffffff1660e01b81526004016117d493929190615691565b6101606040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061535a565b6067549091506000906001600160a01b0316638c8ff1d56118446140ff565b8a8a6040518463ffffffff1660e01b815260040161186493929190615691565b60a06040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190615298565b60600151905081606001518611156118fb5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161075d565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190615410565b6067546001600160a01b031663f7b3c6fd61199a6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a119190615410565b10611a535760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b604482015260640161075d565b8015611a985760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e0015111611abc5760405162461bcd60e51b815260040161075d906156fb565b836001600160a01b031663737113b589611ae38560e001518a614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190615410565b610140830151611b699042615bb4565b1015611ba55760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c229190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614f18565b6001600160a01b031663c5f5951a611ca86140ff565b8b8b6040518463ffffffff1660e01b8152600401611cc893929190615691565b60206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1891906150aa565b905080611e2a57606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190614f18565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611dd39291906159df565b602060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190615410565b611f30565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7857600080fd5b505afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190614f18565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401611ede9291906159df565b602060405180830381600087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190615410565b606754604080516101e081019091529197506001600160a01b03169063d8137fe890806080810180611f606140ff565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b8152600401611fea939291906158b8565b600060405180830381600087803b15801561200457600080fd5b505af1158015612018573d6000803e3d6000fd5b505050506120246140ff565b604080518b8152600060208201529081018890524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d257600080fd5b505afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190614f18565b6001600160a01b0316336001600160a01b03161461213a5760405162461bcd60e51b815260040161075d906157e3565b612142614c95565b565b61214c61427b565b336000908152606b602052604090205460ff1661217b5760405162461bcd60e51b815260040161075d90615771565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561223057600080fd5b505afa158015612244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122689190614f18565b9050600387600381111561227e5761227e615c2c565b141561234457606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a906122b890899089908990600401615691565b60206040518083038186803b1580156122d057600080fd5b505afa1580156122e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230891906150aa565b61233f5760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b604482015260640161075d565b61268c565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90612379908a908a908a90600401615691565b6101606040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ca919061535a565b905060008160e00151116123f05760405162461bcd60e51b815260040161075d906156fb565b600188600381111561240457612404615c2c565b14158061241657506000816101200151115b61244a5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b604482015260640161075d565b600288600381111561245e5761245e615c2c565b1415612599576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156124f657600080fd5b505afa15801561250a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252e9190615410565b90508161012001516000148061255e57508160c0015161255557816101200151811061255e565b81610120015181115b6125935760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b604482015260640161075d565b5061268a565b816001600160a01b031663737113b582602001516125c88460e001518560600151614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b15801561260657600080fd5b505af115801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190615410565b61014082015161264e9042615bb4565b101561268a5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156126d157600080fd5b505afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190614f18565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190614f18565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b60038111156127ba576127ba615c2c565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128479190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561287f57600080fd5b505afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614f18565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b81526004016128e693929190615691565b60206040518083038186803b1580156128fe57600080fd5b505afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293691906150aa565b905060006001600160a01b03851663c0a027f48b60038f600381111561295e5761295e615c2c565b14612976578461296f576003612979565b6008612979565b60025b6040518363ffffffff1660e01b81526004016129969291906159df565b602060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e89190615410565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612a3057612a30615c2c565b815250836040518363ffffffff1660e01b8152600401612a5192919061589d565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612a9b6140ff565b6040518363ffffffff1660e01b8152600401612ab8929190615912565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612b679085908d908d90600401615938565b6000604051808303818588803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612bc75750600054600160ff909116105b80612be15750303b158015612be1575060005460ff166001145b612c445760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075d565b6000805460ff191660011790558015612c67576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612ca4614ce7565b8015612cea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3d57600080fd5b505afa158015612d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d759190614f18565b6001600160a01b0316336001600160a01b031614612da55760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e9190614f18565b6001600160a01b0316336001600160a01b031614612ebe5760405162461bcd60e51b815260040161075d906157e3565b612142614d16565b6001600160a01b03838116600090815260656020526040902054606091163314612f2a5760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b604482015260640161075d565b606680546001600160a01b0319166001600160a01b03861617905560405160009081903090612f5c9087908790615681565b600060405180830381855af49150503d8060008114612f97576040519150601f19603f3d011682016040523d82523d6000602084013e612f9c565b606091505b509150915081612fe857604481511015612fb557600080fd5b60048101905080806020019051810190612fcf9190615143565b60405162461bcd60e51b815260040161075d91906156e8565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561304f57600080fd5b505afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130879190614f18565b6001600160a01b0316336001600160a01b0316146130b75760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0381166130fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161075d565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b61312661427b565b6067546000906001600160a01b031663b8878a2c6131426140ff565b85856040518463ffffffff1660e01b815260040161316293929190615691565b6101806040518083038186803b15801561317b57600080fd5b505afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b391906151f0565b9050606954816101400151436131c99190615bb4565b10156131e75760405162461bcd60e51b815260040161075d90615749565b6067546001600160a01b0316638b83351a816132016140ff565b84610160015185606001516132169190615b5b565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561326557600080fd5b505af1158015613279573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506132986140ff565b85856040518463ffffffff1660e01b81526004016132b893929190615691565b600060405180830381600087803b1580156132d257600080fd5b505af11580156132e6573d6000803e3d6000fd5b505050506132f26140ff565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace094848442856060015160405161334a949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166133865760405162461bcd60e51b815260040161075d90615771565b60005b838110156134a457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133df57600080fd5b505afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190614f18565b6001600160a01b031663dd2f3c053487878581811061343857613438615c42565b9050602002013586866040518563ffffffff1660e01b815260040161345f93929190615938565b6000604051808303818588803b15801561347857600080fd5b505af115801561348c573d6000803e3d6000fd5b5050505050808061349c90615bfb565b915050613389565b5050505050565b336000908152606b602052604090205460ff166134da5760405162461bcd60e51b815260040161075d90615771565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b15801561352057600080fd5b505af11580156134a4573d6000803e3d6000fd5b61353c61427b565b6067546000906001600160a01b031663b8878a2c6135586140ff565b89896040518463ffffffff1660e01b815260040161357893929190615691565b6101806040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c991906151f0565b9050606954816101400151436135df9190615bb4565b10156135fd5760405162461bcd60e51b815260040161075d90615749565b82158061361a575080608001516136165782851161361a565b8285105b6136515760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b81158061366e5750806080015161366a5781851061366e565b8185115b6136a55760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906136f3908490600401615805565b600060405180830381600087803b15801561370d57600080fd5b505af1158015613721573d6000803e3d6000fd5b5050505061372d6140ff565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b60006137a261427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156137e757600080fd5b505afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f9190614f18565b6067549091506000906001600160a01b031663a3a80ffe61383e6140ff565b8b8b6040518463ffffffff1660e01b815260040161385e93929190615691565b6101606040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af919061535a565b6067549091506000906001600160a01b0316638c8ff1d56138ce6140ff565b8c8c6040518463ffffffff1660e01b81526004016138ee93929190615691565b60a06040518083038186803b15801561390657600080fd5b505afa15801561391a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393e9190615298565b90508060600151156139895760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e00151116139ad5760405162461bcd60e51b815260040161075d906156fb565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613a3257600080fd5b505afa158015613a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6a9190615410565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613a9b908e9060049081016159df565b602060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190615410565b9450836001600160a01b031663cbe91bd986604051806101000160405280613b136140ff565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613b3f57613b3f615c2c565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613b7f929190615a03565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b50505050613bc6826000015184606001518b8b85614d53565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613c1557600080fd5b505afa158015613c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4d9190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613c8557600080fd5b505afa158015613c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbd9190614f18565b6001600160a01b031663c5f5951a613cd36140ff565b8e8e6040518463ffffffff1660e01b8152600401613cf393929190615691565b60206040518083038186803b158015613d0b57600080fd5b505afa158015613d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4391906150aa565b9050808015613d63575060018a6001811115613d6157613d61615c2c565b145b15613d9e5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b604482015260640161075d565b60008460e00151118015613eae5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613de657600080fd5b505afa158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e9190614f18565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b158015613e6e57600080fd5b505afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615410565b8460e0015110155b8015613fb65750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613eee57600080fd5b505afa158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f269190614f18565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b158015613f7657600080fd5b505afa158015613f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fae9190615410565b8460e0015111155b613fd25760405162461bcd60e51b815260040161075d9061571d565b613fda6140ff565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516140229796959493929190615ac3565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061405a908790600401615903565b600060405180830381600087803b15801561407457600080fd5b505af1158015614088573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c05915034906140be908a908d908d90600401615938565b6000604051808303818588803b1580156140d757600080fd5b505af11580156140eb573d6000803e3d6000fd5b505050505050505050509695505050505050565b6066546000906001600160a01b031661411757503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561417557600080fd5b505afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614f18565b6001600160a01b0316336001600160a01b0316146141dd5760405162461bcd60e51b815260040161075d906157e3565b600081116142175760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b604482015260640161075d565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156121425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6142dd6140ff565b86866040518463ffffffff1660e01b81526004016142fd93929190615691565b6101606040518083038186803b15801561431657600080fd5b505afa15801561432a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434e919061535a565b60e001516067549091506000906001600160a01b0316638c8ff1d56143716140ff565b87876040518463ffffffff1660e01b815260040161439193929190615691565b60a06040518083038186803b1580156143a957600080fd5b505afa1580156143bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e19190615298565b602001519050600082116144075760405162461bcd60e51b815260040161075d906156fb565b6069546144148243615bb4565b10156144325760405162461bcd60e51b815260040161075d90615749565b6001600160ff1b0383106144775760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b604482015260640161075d565b6067546001600160a01b0316637fdb96f36144906140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905260648101869052608401600060405180830381600087803b1580156144e657600080fd5b505af11580156144fa573d6000803e3d6000fd5b505050506145066140ff565b60408051878152602081018790529081018590524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a25050505050565b6067546000906001600160a01b031663a3a80ffe61457d6140ff565b88886040518463ffffffff1660e01b815260040161459d93929190615691565b6101606040518083038186803b1580156145b657600080fd5b505afa1580156145ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ee919061535a565b6067549091506000906001600160a01b0316638c8ff1d561460d6140ff565b89896040518463ffffffff1660e01b815260040161462d93929190615691565b60a06040518083038186803b15801561464557600080fd5b505afa158015614659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467d9190615298565b60400151905060008260e00151116146a75760405162461bcd60e51b815260040161075d906156fb565b6001600160ff1b0385106146ec5760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b604482015260640161075d565b60006147198360e00151606460508660a001516147099190615b95565b6147139190615b73565b90614dff565b905085158061475857508260c0015161474457808360a0015161473c9190615b5b565b861115614758565b808360a001516147549190615bb4565b8610155b6147915760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b604482015260640161075d565b60695461479e8343615bb4565b10156147bc5760405162461bcd60e51b815260040161075d90615749565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561480157600080fd5b505afa158015614815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148399190614f18565b90508615806149335750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561487c57600080fd5b505afa158015614890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b49190614f18565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b81526004016148e191815260200190565b60206040518083038186803b1580156148f957600080fd5b505afa15801561490d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493191906150aa565b155b15614a20576067546001600160a01b031663a35441816149516140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505050506149c76140ff565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614c65565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614a52908d906005906004016159df565b602060405180830381600087803b158015614a6c57600080fd5b505af1158015614a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa49190615410565b9050816001600160a01b031663b8213bfa826040518060c00160405280614ac96140ff565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614b6a929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614b8457600080fd5b505af1158015614b98573d6000803e3d6000fd5b50505050614ba46140ff565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614c319085908c908c90600401615938565b6000604051808303818588803b158015614c4a57600080fd5b505af1158015614c5e573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614c828385615b95565b614c8c9190615b73565b90505b92915050565b614c9d614e11565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614d0e5760405162461bcd60e51b815260040161075d90615798565b612142614e5a565b614d1e61427b565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cca3390565b60008080856001811115614d6957614d69615c2c565b1415614da75782614d7a8588615b5b565b614d849190615bb4565b905080614d966402540be40089615b95565b614da09190615b73565b9150614df5565b6001856001811115614dbb57614dbb615c2c565b1415614df55782614dcc8588615bb4565b614dd69190615bb4565b905080614de86402540be40089615b95565b614df29190615b73565b91505b9550959350505050565b600081614c826402540be40085615b95565b60335460ff166121425760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161075d565b600054610100900460ff16614e815760405162461bcd60e51b815260040161075d90615798565b6033805460ff19169055565b8051614e9881615c81565b919050565b60008083601f840112614eaf57600080fd5b50813567ffffffffffffffff811115614ec757600080fd5b6020830191508360208260051b8501011115614ee257600080fd5b9250929050565b8051614e9881615c96565b600060208284031215614f0657600080fd5b8135614f1181615c81565b9392505050565b600060208284031215614f2a57600080fd5b8151614f1181615c81565b60008060408385031215614f4857600080fd5b8235614f5381615c81565b91506020830135614f6381615c81565b809150509250929050565b60008060408385031215614f8157600080fd5b8235614f8c81615c81565b91506020830135614f6381615c96565b600080600060408486031215614fb157600080fd5b8335614fbc81615c81565b9250602084013567ffffffffffffffff80821115614fd957600080fd5b818601915086601f830112614fed57600080fd5b813581811115614ffc57600080fd5b87602082850101111561500e57600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561503757600080fd5b843567ffffffffffffffff8082111561504f57600080fd5b61505b88838901614e9d565b9096509450602087013591508082111561507457600080fd5b5061508187828801614e9d565b95989497509550505050565b60006020828403121561509f57600080fd5b8135614f1181615c96565b6000602082840312156150bc57600080fd5b8151614f1181615c96565b60008060008060008060a087890312156150e057600080fd5b86356150eb81615ca4565b955060208701356150fb81615c81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b61513189828a01614e9d565b979a9699509497509295939492505050565b60006020828403121561515557600080fd5b815167ffffffffffffffff8082111561516d57600080fd5b818401915084601f83011261518157600080fd5b81518181111561519357615193615c58565b604051601f8201601f19908116603f011681019083821181831017156151bb576151bb615c58565b816040528281528760208487010111156151d457600080fd5b6151e5836020830160208801615bcb565b979650505050505050565b6000610180828403121561520357600080fd5b61520b615b0d565b61521483614e8d565b815260208301516020820152604083015160408201526060830151606082015261524060808401614ee9565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156152aa57600080fd5b60405160a0810181811067ffffffffffffffff821117156152cd576152cd615c58565b806040525082518152602083015160208201526040830151604082015260608301516152f881615c96565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561532757600080fd5b6101608082121561533757600080fd5b859450840135905061534881615ca4565b92959294505050610180919091013590565b6000610160828403121561536d57600080fd5b615375615b37565b61537e83614e8d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526153be60c08401614ee9565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561540957600080fd5b5035919050565b60006020828403121561542257600080fd5b5051919050565b6000806040838503121561543c57600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561546457600080fd5b863595506020870135945060408701356002811061548157600080fd5b935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b6000806000606084860312156154b957600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156154e957600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b60008060008060008060c0878903121561553557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526155a0816020860160208601615bcb565b601f01601f19169290920160200192915050565b600281106155c4576155c4615c2c565b9052565b80516001600160a01b03168252602080820151908301526040808201519083015260608101516155f781615c6e565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161565460c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016156d983615c6e565b82606083015295945050505050565b602081526000614c8c6020830184615588565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615848608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016158ab82856155c8565b8260808301529392505050565b6000610200820190506158cc828651615602565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614c8f8284615602565b60a0810161592082856155c8565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156159d157868503605f190183528135368a9003601e1901811261598857600080fd5b8901803567ffffffffffffffff8111156159a157600080fd5b8036038b13156159b057600080fd5b6159bd878288850161555f565b965050509183019190830190600101615962565b509298975050505050505050565b82815260408101600983106159f6576159f6615c2c565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615a4460808401826155b4565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615aa485615c6e565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615adf60408301886155b4565b615aec6060830187615602565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615b3157615b31615c58565b60405290565b604051610160810167ffffffffffffffff81118282101715615b3157615b31615c58565b60008219821115615b6e57615b6e615c16565b500190565b600082615b9057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615baf57615baf615c16565b500290565b600082821015615bc657615bc6615c16565b500390565b60005b83811015615be6578181015183820152602001615bce565b83811115615bf5576000848401525b50505050565b6000600019821415615c0f57615c0f615c16565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615c7e57615c7e615c2c565b50565b6001600160a01b0381168114615c7e57600080fd5b8015158114615c7e57600080fd5b60048110615c7e57600080fdfea264697066735822122072f48643396ca170a4aca563fe0663561cd3d0f49be2fb490da87c9e4a87a53a64736f6c63430008070033","sourceMap":"376:22917:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;640:31;;;;;;;;;;;;;;;;;;;33468:25:154;;;33456:2;33441:18;640:31:111;;;;;;;;606:27;;;;;;;;;;-1:-1:-1;606:27:111;;;;-1:-1:-1;;;;;606:27:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;15678:51;;15666:2;15651:18;606:27:111;15532:203:154;15902:340:111;;;;;;:::i;:::-;;:::i;:::-;;569:31;;;;;;;;;;-1:-1:-1;569:31:111;;;;-1:-1:-1;;;;;569:31:111;;;7173:4036;;;;;;:::i;:::-;;:::i;11443:1818::-;;;;;;:::i;:::-;;:::i;513:88:103:-;;;;;;;;;;-1:-1:-1;570:10:103;592:1;558:23;;;:11;:23;;;;;:36;;-1:-1:-1;;;;;;558:36:103;;;15902:340:111;4007:63;;;;;;;;;;;;;:::i;16624:2689::-;;;;;;:::i;:::-;;:::i;3245:238::-;;;;;;;;;;-1:-1:-1;3245:238:111;;;;;:::i;:::-;;:::i;677:23::-;;;;;;;;;;-1:-1:-1;677:23:111;;;;-1:-1:-1;;;;;677:23:111;;;1858:84:25;;;;;;;;;;-1:-1:-1;1928:7:25;;;;1858:84;;;19343:14:154;;19336:22;19318:41;;19306:2;19291:18;1858:84:25;19178:187:154;4076:183:111;;;;;;;;;;-1:-1:-1;4076:183:111;;;;;:::i;:::-;;:::i;707:42::-;;;;;;;;;;-1:-1:-1;707:42:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;3889:59;;;;;;;;;;;;;:::i;607:695:103:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4265:164:111:-;;;;;;;;;;-1:-1:-1;4265:164:111;;;;;:::i;:::-;;:::i;15003:563::-;;;;;;;;;;-1:-1:-1;15003:563:111;;;;;:::i;:::-;;:::i;174:46:103:-;;;;;;;;;;-1:-1:-1;174:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;174:46:103;;;13456:287:111;;;;;;:::i;:::-;;:::i;19409:132::-;;;;;;;;;;-1:-1:-1;19409:132:111;;;;;:::i;:::-;;:::i;14042:797::-;;;;;;;;;;-1:-1:-1;14042:797:111;;;;;:::i;:::-;;:::i;263:244:103:-;;;;;;;;;;-1:-1:-1;263:244:103;;;;;:::i;:::-;478:10;466:23;;;;:11;:23;;;;;:34;;-1:-1:-1;;;;;;466:34:103;-1:-1:-1;;;;;466:34:103;;;;;;;;;;263:244;4775:2182:111;;;;;;:::i;:::-;;:::i;1308:197:103:-;;;;;;;;;;;;;:::i;3622:210:111:-;;;;;;;;;;-1:-1:-1;3622:210:111;;;;;:::i;:::-;;:::i;15902:340::-;1482:19:25;:17;:19::i;:::-;16102:37:111::1;16112:10;16124:6;16132;16102:9;:37::i;:::-;16152:27:::0;;16149:86:::1;;16181:54;16191:10;16203:6;16211;16219:15;;16181:9;:54::i;:::-;15902:340:::0;;;;;;:::o;7173:4036::-;7347:12;1482:19:25;:17;:19::i;:::-;7402:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;7402:26:111;;;;7372:27:::1;::::0;-1:-1:-1;;;;;7402:8:111::1;::::0;-1:-1:-1;;7402:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7372:56;;7438:24;7465:10;-1:-1:-1::0;;;;;7465:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7556:8;::::0;:33:::1;::::0;;-1:-1:-1;;;7556:33:111;;;;7438:52;;-1:-1:-1;;;;;;7556:8:111;;::::1;::::0;-1:-1:-1;;7556:33:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7509:8;::::0;-1:-1:-1;;;;;7509:8:111::1;:29;7539:13;:11;:13::i;:::-;7509:44;::::0;;-1:-1:-1;;;;;;;7509:44:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;7509:44:111::1;::::0;::::1;15678:51:154::0;7509:44:111;15651:18:154;;;;;7509:44:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;7501:111;;;::::0;-1:-1:-1;;;7501:111:111;;26648:2:154;7501:111:111::1;::::0;::::1;26630:21:154::0;26687:2;26667:18;;;26660:30;-1:-1:-1;;;26706:18:154;;;26699:48;26764:18;;7501:111:111::1;;;;;;;;;7877:8;::::0;:27:::1;::::0;;-1:-1:-1;;;7877:27:111;;;;-1:-1:-1;;;;;7877:8:111;;::::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7801:8;::::0;-1:-1:-1;;;;;7801:8:111::1;:29;7831:13;:11;:13::i;:::-;7801:57;::::0;;-1:-1:-1;;;;;;;7801:57:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7801:57:111::1;::::0;::::1;16583:51:154::0;7846:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7801:57:111;;16556:18:154;;;;;7801:57:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7723:8;::::0;-1:-1:-1;;;;;7723:8:111::1;:31;7755:13;:11;:13::i;:::-;7723:59;::::0;;-1:-1:-1;;;;;;;7723:59:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7723:59:111::1;::::0;::::1;16583:51:154::0;7770:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7723:59:111;;16556:18:154;;;;;7723:59:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7652:8;::::0;-1:-1:-1;;;;;7652:8:111::1;:24;7677:13;:11;:13::i;:::-;7652:52;::::0;;-1:-1:-1;;;;;;;7652:52:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7652:52:111::1;::::0;::::1;16583:51:154::0;7692:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7652:52:111;;16556:18:154;;;;;7652:52:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:130;;;;:::i;:::-;:206;;;;:::i;:::-;:252;7631:318;;;::::0;-1:-1:-1;;;7631:318:111;;25194:2:154;7631:318:111::1;::::0;::::1;25176:21:154::0;25233:2;25213:18;;;25206:30;-1:-1:-1;;;25252:18:154;;;25245:49;25311:18;;7631:318:111::1;24992:343:154::0;7631:318:111::1;8006:42;::::0;-1:-1:-1;;;8006:42:111;;8036:11:::1;::::0;::::1;;8006:42;::::0;::::1;33468:25:154::0;-1:-1:-1;;;;;8006:29:111;::::1;::::0;::::1;::::0;33441:18:154;;8006:42:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7968:34;:18;::::0;::::1;;7991:10;::::0;::::1;;7968:22;:34::i;:::-;:80;;7960:106;;;::::0;-1:-1:-1;;;7960:106:111;;21715:2:154;7960:106:111::1;::::0;::::1;21697:21:154::0;21754:2;21734:18;;;21727:30;-1:-1:-1;;;21773:18:154;;;21766:43;21826:18;;7960:106:111::1;21513:337:154::0;7960:106:111::1;8086:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8100:5:111::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8136:1;:11;;;8129:1;:4;;;:18;8100:47;;;8115:1;:11;;;8108:1;:4;;;:18;8100:47;8078:83;;;::::0;-1:-1:-1;;;8078:83:111;;24188:2:154;8078:83:111::1;::::0;::::1;24170:21:154::0;24227:1;24207:18;;;24200:29;-1:-1:-1;;;24245:18:154;;;24238:38;24293:18;;8078:83:111::1;23986:331:154::0;8078:83:111::1;8179:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8193:5:111::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8229:1;:11;;;8222:1;:4;;;:18;8193:47;;;8208:1;:11;;;8201:1;:4;;;:18;8193:47;8171:83;;;::::0;-1:-1:-1;;;8171:83:111;;24858:2:154;8171:83:111::1;::::0;::::1;24840:21:154::0;24897:1;24877:18;;;24870:29;-1:-1:-1;;;24915:18:154;;;24908:38;24963:18;;8171:83:111::1;24656:331:154::0;8171:83:111::1;8278:34;8269:5;:43;;;;;;;;:::i;:::-;;;:94;;;;-1:-1:-1::0;8325:38:111::1;8316:5;:47;;;;;;;;:::i;:::-;;;8269:94;8265:2818;;;8419:1;8406;:10;;;:14;:99;;;;-1:-1:-1::0;8458:47:111::1;::::0;-1:-1:-1;;;8458:47:111;;8486:11:::1;::::0;::::1;;8458:47;::::0;::::1;34938:25:154::0;8499:5:111::1;34979:18:154::0;;;34972:50;-1:-1:-1;;;;;8458:27:111;::::1;::::0;::::1;::::0;34911:18:154;;8458:47:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8444:1;:10;;;:61;;8406:99;:184;;;;-1:-1:-1::0;8543:47:111::1;::::0;-1:-1:-1;;;8543:47:111;;8571:11:::1;::::0;::::1;;8543:47;::::0;::::1;34938:25:154::0;8584:5:111::1;34979:18:154::0;;;34972:50;-1:-1:-1;;;;;8543:27:111;::::1;::::0;::::1;::::0;34911:18:154;;8543:47:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8529:1;:10;;;:61;;8406:184;8381:261;;;::::0;-1:-1:-1;;;8381:261:111;;22057:2:154;8381:261:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;8381:261:111::1;21855:342:154::0;8381:261:111::1;8657:8;::::0;-1:-1:-1;;;;;8657:8:111::1;:21;8679:13;:11;:13::i;:::-;8702:8;::::0;8657:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8657:75:111;;;-1:-1:-1;;;;;15998:15:154;;;8657:75:111::1;::::0;::::1;15980:34:154::0;8702:8:111;::::1;16030:18:154::0;;;16023:43;8713:18:111::1;::::0;::::1;;16082::154::0;;;16075:34;15915:18;;8657:75:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8759:8:111::1;::::0;8746:10:::1;::::0;-1:-1:-1;;;;;;8759:8:111::1;::::0;-1:-1:-1;8759:33:111::1;8793:13;:11;:13::i;:::-;8759:61;::::0;;-1:-1:-1;;;;;;;8759:61:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;8759:61:111::1;::::0;::::1;16583:51:154::0;8808:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;8759:61:111;;16556:18:154;;;;;8759:61:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8835:8;::::0;8881:416:::1;::::0;;::::1;::::0;::::1;::::0;;;8746:74;;-1:-1:-1;;;;;;8835:8:111::1;::::0;:28:::1;::::0;8881:416;8933:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;8881:416:111::1;::::0;;::::1;8968:11:::0;;::::1;;8881:416:::0;;::::1;::::0;;;;;;;9028:18:::1;::::0;;::::1;;8881:416:::0;;;;;9068:5:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;8881:416;;;;;;9095:1;:10;;;8881:416;;;;9127:1;:4;;;8881:416;;;;9153:1;:4;;;8881:416;;;;9179:1;:11;;;8881:416;;;;9212:10;8881:416;;;;9244:12;8881:416;;;;9278:1;8881:416;;::::0;8835:476:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9326:10;-1:-1:-1::0;;;;;9326:21:111::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9326:45:111::1;;9372:13;:11;:13::i;:::-;9387:1;:11;;;9400:5;9407;9326:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9449:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;9433:112:111::1;;9464:11;::::0;::::1;;9477:5:::0;9484::::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;9491:1;:11;;;9504:1;9507:5;9514:10;9526:1;:18;;;9433:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;8366:1190;8265:2818;;;9615:1;9602;:10;;;:14;:142;;;;-1:-1:-1::0;;;;;;9654:27:111;::::1;;9682:11;::::0;::::1;;-1:-1:-1::0;9696:5:111;:47:::1;::::0;::::1;;;;;;:::i;:::-;9654:90;::::0;-1:-1:-1;;;;;;9654:90:111::1;::::0;;;;;;::::1;::::0;::::1;34938:25:154::0;;;;9696:47:111::1;34979:18:154::0;;;34972:50;34911:18;;9654:90:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9640:1;:10;;;:104;;9602:142;:270;;;;-1:-1:-1::0;;;;;;9782:27:111;::::1;;9810:11;::::0;::::1;;-1:-1:-1::0;9824:5:111;:47:::1;::::0;::::1;;;;;;:::i;:::-;9782:90;::::0;-1:-1:-1;;;;;;9782:90:111::1;::::0;;;;;;::::1;::::0;::::1;34938:25:154::0;;;;9824:47:111::1;34979:18:154::0;;;34972:50;34911:18;;9782:90:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9768:1;:10;;;:104;;9602:270;9577:347;;;::::0;-1:-1:-1;;;9577:347:111;;22057:2:154;9577:347:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;9577:347:111::1;21855:342:154::0;9577:347:111::1;9939:8;::::0;-1:-1:-1;;;;;9939:8:111::1;:21;9961:13;:11;:13::i;:::-;9984:8;::::0;9939:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9939:75:111;;;-1:-1:-1;;;;;15998:15:154;;;9939:75:111::1;::::0;::::1;15980:34:154::0;9984:8:111;::::1;16030:18:154::0;;;16023:43;9995:18:111::1;::::0;::::1;;16082::154::0;;;16075:34;15915:18;;9939:75:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10048:34:111::1;::::0;-1:-1:-1;10039:43:111::1;::::0;-1:-1:-1;;10039:43:111;::::1;:5;:43;;;;;;;;:::i;:::-;;:246;;10209:76;::::0;-1:-1:-1;;;10209:76:111;;-1:-1:-1;;;;;10209:19:111;::::1;::::0;::::1;::::0;:76:::1;::::0;10229:11:::1;::::0;::::1;;::::0;10242:42:::1;::::0;10209:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10039:246;;;10110:72;::::0;-1:-1:-1;;;10110:72:111;;-1:-1:-1;;;;;10110:19:111;::::1;::::0;::::1;::::0;:72:::1;::::0;10130:11:::1;::::0;::::1;;::::0;10143:38:::1;::::0;10110:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10301:8;::::0;10351:560:::1;::::0;;10407:398;;;;;;10029:256;;-1:-1:-1;;;;;;10301:8:111::1;::::0;:32:::1;::::0;10351:560;::::1;::::0;::::1;::::0;10454:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;10407:398:111::1;;;;;10493:1;:11;;;10407:398;;;;10530:1;10407:398;;;;10557:1;10407:398;;;;10584:1;:18;;;10407:398;;;;10628:1;10407:398;;;;10655:1;:5;;;;;;;;;;:::i;:::-;10407:398;;;;;;10686:1;:10;;;10407:398;;;;10722:1;:4;;;10407:398;;;;10752:1;:4;;;10407:398;;;;10782:1;10407:398;;::::0;10351:560:::1;;;;10827:1;10351:560;;;;10850:1;:11;;;10351:560;;;;10883:10;10351:560;;::::0;10929:7:::1;10954:4;10301:671;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11013:13;:11;:13::i;:::-;10992:80;::::0;;11028:11:::1;::::0;;::::1;;35258:25:154::0;;11041:4:111::1;35299:18:154::0;;;35292:50;35358:18;;;35351:34;;;11056:15:111::1;35416:2:154::0;35401:18;;35394:34;10992:80:111;;-1:-1:-1;;;;;10992:80:111;;;::::1;::::0;::::1;::::0;;;;35245:3:154;10992:80:111;;::::1;8265:2818;11117:8;::::0;11109:44:::1;::::0;11094:9:::1;::::0;-1:-1:-1;;;;;11117:8:111::1;::::0;11139:9:::1;::::0;11094;11109:44;11094:9;11109:44;11139:9;11117:8;11109:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11093:60;;;11171:4;11163:39;;;::::0;-1:-1:-1;;;11163:39:111;;25542:2:154;11163:39:111::1;::::0;::::1;25524:21:154::0;25581:2;25561:18;;;25554:30;-1:-1:-1;;;25600:18:154;;;25593:52;25662:18;;11163:39:111::1;25340:346:154::0;11163:39:111::1;7361:3848;;;7173:4036:::0;;;;;:::o;11443:1818::-;11609:12;1482:19:25;:17;:19::i;:::-;11677:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;11677:26:111;;;;11633:24:::1;::::0;-1:-1:-1;;;;;11677:8:111::1;::::0;-1:-1:-1;;11677:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11660:57:111::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11753:8;::::0;11745:44:::1;::::0;11633:86;;-1:-1:-1;11730:9:111::1;::::0;-1:-1:-1;;;;;11753:8:111;;::::1;::::0;11775:9:::1;::::0;11730;11745:44;11730:9;11745:44;11775:9;11753:8;11745:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11729:60;;;11807:4;11799:39;;;::::0;-1:-1:-1;;;11799:39:111;;25542:2:154;11799:39:111::1;::::0;::::1;25524:21:154::0;25581:2;25561:18;;;25554:30;-1:-1:-1;;;25600:18:154;;;25593:52;25662:18;;11799:39:111::1;25340:346:154::0;11799:39:111::1;11882:8;::::0;11849:30:::1;::::0;-1:-1:-1;;;;;11882:8:111::1;:19;11902:13;:11;:13::i;:::-;11882:54;::::0;;-1:-1:-1;11882:54:111;;;-1:-1:-1;;;;;;11882:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;11882:54:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;11882:54:111;16863:18:154;;;;;11882:54:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11971:8;::::0;11849:87;;-1:-1:-1;11946:22:111::1;::::0;-1:-1:-1;;;;;11971:8:111::1;:23;11995:13;:11;:13::i;:::-;11971:58;::::0;;-1:-1:-1;11971:58:111;;;-1:-1:-1;;;;;;11971:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;11971:58:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;11971:58:111;16863:18:154;;;;;-1:-1:-1;;11971:58:111;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;;;11946:101;;12077:1;:17;;;12066:7;:28;;12058:51;;;::::0;-1:-1:-1;;;12058:51:111;;29450:2:154;12058:51:111::1;::::0;::::1;29432:21:154::0;29489:2;29469:18;;;29462:30;-1:-1:-1;;;29508:18:154;;;29501:40;29558:18;;12058:51:111::1;29248:334:154::0;12058:51:111::1;12174:8;::::0;:33:::1;::::0;;-1:-1:-1;;;12174:33:111;;;;-1:-1:-1;;;;;12174:8:111;;::::1;::::0;-1:-1:-1;;12174:33:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12127:8;::::0;-1:-1:-1;;;;;12127:8:111::1;:29;12157:13;:11;:13::i;:::-;12127:44;::::0;;-1:-1:-1;;;;;;;12127:44:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;12127:44:111::1;::::0;::::1;15678:51:154::0;12127:44:111;15651:18:154;;;;;12127:44:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12119:111;;;::::0;-1:-1:-1;;;12119:111:111;;26648:2:154;12119:111:111::1;::::0;::::1;26630:21:154::0;26687:2;26667:18;;;26660:30;-1:-1:-1;;;26706:18:154;;;26699:48;26764:18;;12119:111:111::1;26446:342:154::0;12119:111:111::1;12249:17;12248:18;12240:51;;;::::0;-1:-1:-1;;;12240:51:111;;28424:2:154;12240:51:111::1;::::0;::::1;28406:21:154::0;28463:2;28443:18;;;28436:30;-1:-1:-1;;;28482:18:154;;;28475:50;28542:18;;12240:51:111::1;28222:344:154::0;12240:51:111::1;12322:1;12309;:10;;;:14;12301:35;;;::::0;-1:-1:-1;;;12301:35:111;;21029:2:154;12301:35:111::1;::::0;::::1;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;12301:35:111::1;20827:331:154::0;12301:35:111::1;12442:10;::::0;::::1;::::0;-1:-1:-1;;;;;12387:30:111;::::1;::::0;::::1;::::0;12418:10;;12430:23:::1;::::0;:7;;:11:::1;:23::i;:::-;12387:67;::::0;-1:-1:-1;;;;;;12387:67:111::1;::::0;;;;;;::::1;::::0;::::1;37445:25:154::0;;;;37486:18;;;37479:34;37418:18;;12387:67:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12372:11;::::0;::::1;::::0;12354:29:::1;::::0;:15:::1;:29;:::i;:::-;:100;;12346:124;;;::::0;-1:-1:-1;;;12346:124:111;;29789:2:154;12346:124:111::1;::::0;::::1;29771:21:154::0;29828:2;29808:18;;;29801:30;-1:-1:-1;;;29847:18:154;;;29840:41;29898:18;;12346:124:111::1;29587:335:154::0;12346:124:111::1;12494:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12494:26:111;;;;12481:10:::1;::::0;-1:-1:-1;;;;;12494:8:111::1;::::0;-1:-1:-1;;12494:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12494:39:111::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12494:52:111::1;;12547:13;:11;:13::i;:::-;12494:87;::::0;;-1:-1:-1;12494:87:111;;;-1:-1:-1;;;;;;12494:87:111;;;-1:-1:-1;;;;;16908:32:154;;;;12494:87:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;12494:87:111;16863:18:154;;;;;12494:87:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12481:100;;12602:5;:228;;12742:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12742:26:111;;;;-1:-1:-1;;;;;12742:8:111;;::::1;::::0;-1:-1:-1;;12742:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;::::0;-1:-1:-1;;;12742:88:111;;-1:-1:-1;;;;;12742:35:111;;;::::1;::::0;::::1;::::0;:88:::1;::::0;12778:10;;-1:-1:-1;;12742:88:111::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12602:228;;;12629:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12629:26:111;;;;-1:-1:-1;;;;;12629:8:111;;::::1;::::0;-1:-1:-1;;12629:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:92;::::0;-1:-1:-1;;;12629:92:111;;-1:-1:-1;;;;;12629:35:111;;;::::1;::::0;::::1;::::0;:92:::1;::::0;12665:10;;12677:43:::1;::::0;12629:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12841:8;::::0;12887:213:::1;::::0;;12939:90;;;;;;12592:238;;-1:-1:-1;;;;;;12841:8:111::1;::::0;:32:::1;::::0;12887:213;::::1;::::0;::::1;::::0;12961:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;12939:90:111::1;;;;;12976:10;12939:90;;;;12988:6;12939:90;;;;12996:7;12939:90;;;;13005:1;12939:90;;;;13008:1;12939:90;;;;13011:5;12939:90;;;;;;13018:1;12939:90;;;;13021:1;12939:90;;;;13024:1;12939:90;;;;13027:1;12939:90;;::::0;12887:213:::1;;;;13047:1;12887:213;;;;13066:1;12887:213;;;;13085:1;12887:213;;::::0;13114:7:::1;13135:5;12841:309;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13195:13;:11;:13::i;:::-;13174:80;::::0;;35258:25:154;;;13222:5:111::1;35314:2:154::0;35299:18;;35292:50;35358:18;;;35351:34;;;13238:15:111::1;35416:2:154::0;35401:18;;35394:34;13174:80:111;;-1:-1:-1;;;;;13174:80:111;;;::::1;::::0;::::1;::::0;;;;35245:3:154;13174:80:111;;::::1;11622:1639;;;;;11443:1818:::0;;;;;:::o;4007:63::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;4053:10:::1;:8;:10::i;:::-;4007:63::o:0;16624:2689::-;1482:19:25;:17;:19::i;:::-;2951:10:111::1;2940:22;::::0;;;:10:::1;:22;::::0;;;;;::::1;;2932:48;;;::::0;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111::1;::::0;::::1;27313:21:154::0;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111::1;27129:337:154::0;2932:48:111::1;16916:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;16916:26:111;;;;16872:24:::2;::::0;-1:-1:-1;;;;;16916:8:111::2;::::0;-1:-1:-1;;16916:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16899:57:111::2;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16872:86:::0;-1:-1:-1;16986:31:111::2;16972:10;:45;;;;;;;;:::i;:::-;;16968:1193;;;17050:8;::::0;:55:::2;::::0;-1:-1:-1;;;17050:55:111;;-1:-1:-1;;;;;16908:32:154;;;17050:55:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;17050:8:111;;::::2;::::0;:26:::2;::::0;16863:18:154;;17050:55:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17042:76;;;::::0;-1:-1:-1;;;17042:76:111;;26995:2:154;17042:76:111::2;::::0;::::2;26977:21:154::0;27034:1;27014:18;;;27007:29;-1:-1:-1;;;27052:18:154;;;27045:38;27100:18;;17042:76:111::2;26793:331:154::0;17042:76:111::2;16968:1193;;;17183:8;::::0;:48:::2;::::0;-1:-1:-1;;;17183:48:111;;-1:-1:-1;;;;;16908:32:154;;;17183:48:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;17150:30:111::2;::::0;17183:8:::2;::::0;:19:::2;::::0;16863:18:154;;17183:48:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17150:81;;17267:1;17254;:10;;;:14;17246:35;;;::::0;-1:-1:-1;;;17246:35:111;;21029:2:154;17246:35:111::2;::::0;::::2;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;17246:35:111::2;20827:331:154::0;17246:35:111::2;17317:29;17303:10;:43;;;;;;;;:::i;:::-;;;:55;;;;17357:1;17350;:4;;;:8;17303:55;17295:73;;;::::0;-1:-1:-1;;;17295:73:111;;26315:2:154;17295:73:111::2;::::0;::::2;26297:21:154::0;26354:1;26334:18;;;26327:29;-1:-1:-1;;;26372:18:154;;;26365:35;26417:18;;17295:73:111::2;26113:328:154::0;17295:73:111::2;17401:30;17387:10;:44;;;;;;;;:::i;:::-;;17383:768;;;17468:9;::::0;17540:8;;17586:11:::2;::::0;::::2;::::0;17635:7:::2;::::0;;::::2;::::0;17680:11:::2;::::0;::::2;::::0;17729:5:::2;::::0;::::2;::::0;17772:17:::2;::::0;::::2;::::0;17827:10:::2;::::0;::::2;::::0;17468:403;;-1:-1:-1;;;17468:403:111;;-1:-1:-1;;;;;18857:32:154;;;17468:403:111::2;::::0;::::2;18839:51:154::0;18906:18;;;18899:34;;;;18949:18;;;18942:34;;;;18992:18;;;18985:34;;;;19063:14;19056:22;19035:19;;;19028:51;19095:19;;;19088:35;19139:19;;;19132:35;17451:13:111::2;::::0;17468:9;;;::::2;::::0;:34:::2;::::0;18811:19:154;;17468:403:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17451:420;;17897:1;:4;;;17905:1;17897:9;:56;;;;17911:1;:5;;;:41;;17948:1;:4;;;17937:8;:15;17911:41;;;17930:1;:4;;;17919:8;:15;17911:41;17889:75;;;::::0;-1:-1:-1;;;17889:75:111;;24524:2:154;17889:75:111::2;::::0;::::2;24506:21:154::0;24563:1;24543:18;;;24536:29;-1:-1:-1;;;24581:18:154;;;24574:36;24627:18;;17889:75:111::2;24322:329:154::0;17889:75:111::2;17433:546;17383:768;;;18073:11;::::0;::::2;::::0;18108:10:::2;::::0;::::2;::::0;18086:17:::2;::::0;::::2;::::0;-1:-1:-1;;;;;18042:30:111;::::2;::::0;::::2;::::0;18073:11;;18086:33:::2;::::0;:21:::2;:33::i;:::-;18042:78;::::0;-1:-1:-1;;;;;;18042:78:111::2;::::0;;;;;;::::2;::::0;::::2;37445:25:154::0;;;;37486:18;;;37479:34;37418:18;;18042:78:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18027:11;::::0;::::2;::::0;18009:29:::2;::::0;:15:::2;:29;:::i;:::-;:111;;18001:135;;;::::0;-1:-1:-1;;;18001:135:111;;29789:2:154;18001:135:111::2;::::0;::::2;29771:21:154::0;29828:2;29808:18;;;29801:30;-1:-1:-1;;;29847:18:154;;;29840:41;29898:18;;18001:135:111::2;29587:335:154::0;18001:135:111::2;17136:1025;16968:1193;18201:8;::::0;:26:::2;::::0;;-1:-1:-1;;;18201:26:111;;;;18171:27:::2;::::0;-1:-1:-1;;;;;18201:8:111::2;::::0;-1:-1:-1;;18201:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18171:56;;18237:17;18257:10;-1:-1:-1::0;;;;;18257:21:111::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18237:43;;18291:49;18343:124;;;;;;;;18382:7;-1:-1:-1::0;;;;;18343:124:111::2;;;;;18403:10;18343:124;;;;18427:6;18343:124;;;;18447:10;18343:124;;;;;;;;:::i;:::-;::::0;;18491:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;18491:26:111;;;;18291:176;;-1:-1:-1;18478:10:111::2;::::0;-1:-1:-1;;;;;18491:8:111;;::::2;::::0;-1:-1:-1;;18491:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18491:39:111::2;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:81;::::0;-1:-1:-1;;;18491:81:111;;-1:-1:-1;;;;;16908:32:154;;;18491:81:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;18491:52:111;;;::::2;::::0;::::2;::::0;16863:18:154;;18491:81:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18478:94:::0;-1:-1:-1;18583:12:111::2;-1:-1:-1::0;;;;;18598:19:111;::::2;;18631:10:::0;18669:31:::2;18655:10:::0;:45;;::::2;;;;;;:::i;:::-;;:254;;18775:5;:134;;18871:38;18655:254;;18775:134;18804:42;18655:254;;;18719:37;18655:254;18598:321;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18930:8;::::0;18975:74:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;18975:74:111;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;18583:336;;-1:-1:-1;18930:8:111::2;::::0;:31:::2;::::0;18975:74;;;19038:10;18975:74:::2;::::0;::::2;;;;;;:::i;:::-;;;::::0;19063:7:::2;18930:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;;;;;;19091:28:111;::::2;::::0;-1:-1:-1;19091:28:111::2;19120:16:::0;19138:13:::2;:11;:13::i;:::-;19091:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19167:66:111::2;::::0;;39214:25:154;;;39270:2;39255:18;;39248:34;;;19217:15:111::2;39298:18:154::0;;;39291:34;19167:66:111;;-1:-1:-1;;;;;19167:66:111;::::2;::::0;-1:-1:-1;19167:66:111::2;::::0;-1:-1:-1;19167:66:111;;;;39202:2:154;19167:66:111;;::::2;19244:62;::::0;-1:-1:-1;;;19244:62:111;;-1:-1:-1;;;;;19244:18:111;::::2;::::0;-1:-1:-1;;19270:9:111::2;::::0;19244:62:::2;::::0;19281:7;;19290:15;;;;19244:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;16861:2452;;;;;;16624:2689:::0;;;;;;:::o;3245:238::-;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;;23773:2:154;3325:201:24;;;23755:21:154;23812:2;23792:18;;;23785:30;23851:34;23831:18;;;23824:62;-1:-1:-1;;;23902:18:154;;;23895:44;23956:19;;3325:201:24;23571:410:154;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;3335:8:111::1;:37:::0;;-1:-1:-1;;;;;3335:37:111;;::::1;-1:-1:-1::0;;;;;;3335:37:111;;::::1;;::::0;;;3382:9:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3448:1:::1;3426:19;:23:::0;3459:17:::1;:15;:17::i;:::-;3651:14:24::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;20207:36:154;;3721:14:24;;20195:2:154;20180:18;3721:14:24;;;;;;;3647:99;3269:483;3245:238:111;;:::o;4076:183::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;-1:-1:-1;;;;;4163:21:111;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;:35;;-1:-1:-1;;4163:35:111::1;::::0;::::1;;::::0;;::::1;::::0;;;4213:39;;16288:51:154;;;16355:18;;;16348:50;4213:39:111;;::::1;::::0;;;;;;;;::::1;4076:183:::0;;:::o;3889:59::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;3933:8:::1;:6;:8::i;607:695:103:-:0;-1:-1:-1;;;;;732:19:103;;;;;;;:11;:19;;;;;;700:12;;732:19;755:10;732:33;724:67;;;;-1:-1:-1;;;724:67:103;;21365:2:154;724:67:103;;;21347:21:154;21404:2;21384:18;;;21377:30;-1:-1:-1;;;21423:18:154;;;21416:51;21484:18;;724:67:103;21163:345:154;724:67:103;802:14;:23;;-1:-1:-1;;;;;;802:23:103;-1:-1:-1;;;;;802:23:103;;;;;873:37;;-1:-1:-1;;;;881:4:103;;873:37;;900:9;;;;873:37;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:75;;;;925:7;920:314;;1080:2;1064:6;:13;:18;1060:32;;;1084:8;;;1060:32;1155:4;1147:6;1143:17;1133:27;;1205:6;1194:28;;;;;;;;;;;;:::i;:::-;1187:36;;-1:-1:-1;;;1187:36:103;;;;;;;;:::i;920:314::-;1244:14;:27;;-1:-1:-1;;;;;;1244:27:103;;;1289:6;;-1:-1:-1;;;;;607:695:103:o;4265:164:111:-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;-1:-1:-1;;;;;4352:23:111;::::1;4344:48;;;::::0;-1:-1:-1;;;4344:48:111;;23432:2:154;4344:48:111::1;::::0;::::1;23414:21:154::0;23471:2;23451:18;;;23444:30;-1:-1:-1;;;23490:18:154;;;23483:42;23542:18;;4344:48:111::1;23230:336:154::0;4344:48:111::1;4402:8;:20:::0;;-1:-1:-1;;;;;;4402:20:111::1;-1:-1:-1::0;;;;;4402:20:111;;;::::1;::::0;;;::::1;::::0;;4265:164::o;15003:563::-;1482:19:25;:17;:19::i;:::-;15138:8:111::1;::::0;15096:39:::1;::::0;-1:-1:-1;;;;;15138:8:111::1;:26;15165:13;:11;:13::i;:::-;15138:61;::::0;;-1:-1:-1;15138:61:111;;;-1:-1:-1;;;;;;15138:61:111;;;-1:-1:-1;;;;;16908:32:154;;;;15138:61:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;15138:61:111;16863:18:154;;;;;15138:61:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15096:103;;15243:19;;15232:1;:7;;;15217:12;:22;;;;:::i;:::-;:45;;15209:72;;;::::0;-1:-1:-1;;;15209:72:111;;22404:2:154;15209:72:111::1;::::0;::::1;22386:21:154::0;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;15209:72:111::1;22202:338:154::0;15209:72:111::1;15292:8;::::0;-1:-1:-1;;;;;15292:8:111::1;:21;:8:::0;15333:13:::1;:11;:13::i;:::-;15365:1;:14;;;15348:1;:14;;;:31;;;;:::i;:::-;15292:88;::::0;;-1:-1:-1;;;;;;;15292:88:111;;;;;;-1:-1:-1;;;;;15998:15:154;;;15292:88:111::1;::::0;::::1;15980:34:154::0;16050:15;;;;16030:18;;;16023:43;16082:18;;;16075:34;15292:88:111;;15915:18:154;;;;;-1:-1:-1;;15292:88:111;;;;;;;-1:-1:-1;15292:88:111;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15390:8:111::1;::::0;-1:-1:-1;;;;;15390:8:111::1;::::0;-1:-1:-1;15390:33:111::1;::::0;-1:-1:-1;15424:13:111::1;:11;:13::i;:::-;15390:68;::::0;;-1:-1:-1;15390:68:111;;;-1:-1:-1;;;;;;15390:68:111;;;-1:-1:-1;;;;;16908:32:154;;;;15390:68:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;15390:68:111;16863:18:154;;;;;-1:-1:-1;;15390:68:111;;;;;;;-1:-1:-1;15390:68:111;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15492:13;:11;:13::i;:::-;15544:14;::::0;;::::1;::::0;15474:85:::1;::::0;;39567:25:154;;;39623:2;39608:18;;39601:34;;;15527:15:111::1;39651:18:154::0;;;39644:34;39694:18;;;39687:34;;;;15474:85:111;-1:-1:-1;;;;;15474:85:111;;;::::1;::::0;::::1;::::0;;;;39554:3:154;15474:85:111;;::::1;15086:480;15003:563:::0;;:::o;13456:287::-;2951:10;2940:22;;;;:10;:22;;;;;;;;2932:48;;;;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111;;;27313:21:154;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111;27129:337:154;2932:48:111;13596:6:::1;13592:145;13608:17:::0;;::::1;13592:145;;;13645:8;::::0;:26:::1;::::0;;-1:-1:-1;;;13645:26:111;;;;-1:-1:-1;;;;;13645:8:111;;::::1;::::0;-1:-1:-1;;13645:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13645:34:111::1;;13687:9;13698:7:::0;;13706:1;13698:10;;::::1;;;;;:::i;:::-;;;;;;;13710:15;;13645:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13627:3;;;;;:::i;:::-;;;;13592:145;;;;13456:287:::0;;;;:::o;19409:132::-;2951:10;2940:22;;;;:10;:22;;;;;;;;2932:48;;;;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111;;;27313:21:154;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111;27129:337:154;2932:48:111;19487:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;19487:47:111;;::::1;::::0;::::1;33468:25:154::0;;;-1:-1:-1;;;;;19487:8:111;;::::1;::::0;:42:::1;::::0;33441:18:154;;19487:47:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14042:797:::0;1482:19:25;:17;:19::i;:::-;14282:8:111::1;::::0;14240:39:::1;::::0;-1:-1:-1;;;;;14282:8:111::1;:26;14309:13;:11;:13::i;:::-;14282:61;::::0;;-1:-1:-1;14282:61:111;;;-1:-1:-1;;;;;;14282:61:111;;;-1:-1:-1;;;;;16908:32:154;;;;14282:61:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;14282:61:111;16863:18:154;;;;;14282:61:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14240:103;;14387:19;;14376:1;:7;;;14361:12;:22;;;;:::i;:::-;:45;;14353:72;;;::::0;-1:-1:-1;;;14353:72:111;;22404:2:154;14353:72:111::1;::::0;::::1;22386:21:154::0;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;14353:72:111::1;22202:338:154::0;14353:72:111::1;14444:8:::0;;;:49:::1;;;14457:1;:5;;;:35;;14489:3;14480:6;:12;14457:35;;;14474:3;14465:6;:12;14457:35;14436:70;;;::::0;-1:-1:-1;;;14436:70:111;;24188:2:154;14436:70:111::1;::::0;::::1;24170:21:154::0;24227:1;24207:18;;;24200:29;-1:-1:-1;;;24245:18:154;;;24238:38;24293:18;;14436:70:111::1;23986:331:154::0;14436:70:111::1;14524:8:::0;;;:49:::1;;;14537:1;:5;;;:35;;14569:3;14560:6;:12;14537:35;;;14554:3;14545:6;:12;14537:35;14516:70;;;::::0;-1:-1:-1;;;14516:70:111;;24858:2:154;14516:70:111::1;::::0;::::1;24840:21:154::0;24897:1;24877:18;;;24870:29;-1:-1:-1;;;24915:18:154;;;24908:38;24963:18;;14516:70:111::1;24656:331:154::0;14516:70:111::1;14597:7;::::0;::::1;:16:::0;;;14623:11:::1;::::0;::::1;:24:::0;;;14657:4:::1;::::0;::::1;:10:::0;;;14677:4:::1;::::0;::::1;:10:::0;;;14698:8:::1;::::0;-1:-1:-1;14698:32:111;-1:-1:-1;;;14698:32:111;;-1:-1:-1;;;;;14698:8:111;;::::1;::::0;:29:::1;::::0;:32:::1;::::0;14597:7;;14698:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14763:13;:11;:13::i;:::-;14746:86;::::0;;40487:25:154;;;40543:2;40528:18;;40521:34;;;40571:18;;;40564:34;;;40629:2;40614:18;;40607:34;;;40672:3;40657:19;;40650:35;;;14816:15:111::1;40716:3:154::0;40701:19;;40694:35;14746:86:111;;-1:-1:-1;;;;;14746:86:111;;;::::1;::::0;::::1;::::0;;;;40474:3:154;14746:86:111;;::::1;14230:609;14042:797:::0;;;;;;:::o;4775:2182::-;4994:12;1482:19:25;:17;:19::i;:::-;5047:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;5047:26:111;;;;5017:27:::1;::::0;-1:-1:-1;;;;;5047:8:111::1;::::0;-1:-1:-1;;5047:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5117:8;::::0;5017:56;;-1:-1:-1;5084:30:111::1;::::0;-1:-1:-1;;;;;5117:8:111::1;:19;5137:13;:11;:13::i;:::-;5117:54;::::0;;-1:-1:-1;5117:54:111;;;-1:-1:-1;;;;;;5117:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;5117:54:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;5117:54:111;16863:18:154;;;;;5117:54:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5218:8;::::0;5084:87;;-1:-1:-1;5181:34:111::1;::::0;-1:-1:-1;;;;;5218:8:111::1;:23;5242:13;:11;:13::i;:::-;5218:58;::::0;;-1:-1:-1;5218:58:111;;;-1:-1:-1;;;;;;5218:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;5218:58:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;5218:58:111;16863:18:154;;;;;-1:-1:-1;;5218:58:111;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5181:95;;5296:1;:19;;;5295:20;5287:53;;;::::0;-1:-1:-1;;;5287:53:111;;28424:2:154;5287:53:111::1;::::0;::::1;28406:21:154::0;28463:2;28443:18;;;28436:30;-1:-1:-1;;;28482:18:154;;;28475:50;28542:18;;5287:53:111::1;28222:344:154::0;5287:53:111::1;5371:1;5358;:10;;;:14;5350:35;;;::::0;-1:-1:-1;;;5350:35:111;;21029:2:154;5350:35:111::1;::::0;::::1;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;5350:35:111::1;20827:331:154::0;5350:35:111::1;5414:9;::::0;5457:8;;5479:11:::1;::::0;::::1;::::0;5504:7:::1;::::0;;::::1;::::0;5525:5:::1;::::0;::::1;::::0;5544:17:::1;::::0;::::1;::::0;5575:10:::1;::::0;::::1;::::0;5414:181;;-1:-1:-1;;;5414:181:111;;-1:-1:-1;;;;;17337:32:154;;;5414:181:111::1;::::0;::::1;17319:51:154::0;17386:18;;;17379:34;;;;17429:18;;;17422:34;;;;17499:14;17492:22;17472:18;;;17465:50;17531:19;;;17524:35;17575:19;;;17568:35;5396:15:111::1;::::0;5414:9;;;::::1;::::0;:29:::1;::::0;17291:19:154;;5414:181:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5616:73;::::0;-1:-1:-1;;;5616:73:111;;5396:199;;-1:-1:-1;;;;;;5616:19:111;::::1;::::0;::::1;::::0;:73:::1;::::0;5636:10;;5648:40:::1;::::0;5616:73;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5606:83;;5699:10;-1:-1:-1::0;;;;;5699:40:111::1;;5753:7;5774:129;;;;;;;;5811:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;5774:129:111::1;;;;;5826:10;5774:129;;;;5838:6;5774:129;;;;5846:5;5774:129;;;;;;;;:::i;:::-;;;;;5853:7;5774:129;;;;5862:1;:16;;;5774:129;;;;5880:10;5774:129;;;;5892:1;:10;;;5774:129;;::::0;5699:214:::1;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5958:158;5993:1;:18;;;6025:1;:17;;;6056:5;6075:7;6096:10;5958:21;:158::i;:::-;5937:17;::::0;::::1;5924:192:::0;5925:10:::1;::::0;::::1;5924:192:::0;6140:8:::1;::::0;:26:::1;::::0;;-1:-1:-1;;;6140:26:111;;;;-1:-1:-1;;;;;;;6140:8:111::1;::::0;-1:-1:-1;;6140:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6140:39:111::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6140:52:111::1;;6193:13;:11;:13::i;:::-;6140:87;::::0;-1:-1:-1;;;;;;6140:87:111::1;::::0;;;;;;-1:-1:-1;;;;;16908:32:154;;;6140:87:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;16863:18;;6140:87:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6127:100;;6241:5;:55;;;;-1:-1:-1::0;6260:35:111::1;6251:5;:44;;;;;;;;:::i;:::-;;6241:55;6238:81;;;6298:21;::::0;-1:-1:-1;;;6298:21:111;;23092:2:154;6298:21:111::1;::::0;::::1;23074::154::0;23131:2;23111:18;;;23104:30;-1:-1:-1;;;23150:18:154;;;23143:41;23201:18;;6298:21:111::1;22890:335:154::0;6238:81:111::1;6363:1;6350;:10;;;:14;:109;;;;;6398:10;-1:-1:-1::0;;;;;6398:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6440:11;::::0;::::1;::::0;6398:61:::1;::::0;-1:-1:-1;;;6398:61:111;;::::1;::::0;::::1;34938:25:154::0;;;;35006:14;;34999:22;34979:18;;;34972:50;-1:-1:-1;;;;;6398:41:111;;;::::1;::::0;::::1;::::0;34911:18:154;;6398:61:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6384:1;:10;;;:75;;6350:109;:204;;;;;6493:10;-1:-1:-1::0;;;;;6493:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6535:11;::::0;::::1;::::0;6493:61:::1;::::0;-1:-1:-1;;;6493:61:111;;::::1;::::0;::::1;34938:25:154::0;;;;35006:14;;34999:22;34979:18;;;34972:50;-1:-1:-1;;;;;6493:41:111;;;::::1;::::0;::::1;::::0;34911:18:154;;6493:61:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6479:1;:10;;;:75;;6350:204;6329:269;;;::::0;-1:-1:-1;;;6329:269:111;;22057:2:154;6329:269:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;6329:269:111::1;21855:342:154::0;6329:269:111::1;6641:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6614:218:111::1;;6669:10;6694:6;6715:5;6735:1;6751:10;6776:1;:16;;;6807:15;6614:218;;;;;;;;;;;;:::i;:::-;;;;;;;;6855:8;::::0;:23:::1;::::0;-1:-1:-1;;;6855:23:111;;-1:-1:-1;;;;;6855:8:111;;::::1;::::0;-1:-1:-1;;6855:23:111::1;::::0;6876:1;;6855:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6888:62:111::1;::::0;-1:-1:-1;;;6888:62:111;;-1:-1:-1;;;;;6888:18:111;::::1;::::0;-1:-1:-1;;;;6914:9:111::1;::::0;6888:62:::1;::::0;6925:7;;6934:15;;;;6888:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;5007:1950;;;;;4775:2182:::0;;;;;;;;:::o;1308:197:103:-;1375:14;;1352:7;;-1:-1:-1;;;;;1375:14:103;1371:128;;-1:-1:-1;1426:10:103;;1308:197::o;1371:128::-;-1:-1:-1;1474:14:103;;-1:-1:-1;;;;;1474:14:103;;1308:197::o;3622:210:111:-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;3713:1:::1;3703:7;:11;3695:31;;;::::0;-1:-1:-1;;;3695:31:111;;30470:2:154;3695:31:111::1;::::0;::::1;30452:21:154::0;30509:1;30489:18;;;30482:29;-1:-1:-1;;;30527:18:154;;;30520:37;30574:18;;3695:31:111::1;30268:330:154::0;3695:31:111::1;3736:19;:29:::0;;;3780:45:::1;::::0;;25903:21:154;;;25960:2;25940:18;;;25933:30;-1:-1:-1;;;25994:2:154;25979:18;;25972:49;26088:4;26073:20;;26066:36;;;3780:45:111;;::::1;::::0;;;;26053:3:154;3780:45:111;;::::1;3622:210:::0;:::o;2010:106:25:-;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:25;;22747:2:154;2071:38:25;;;22729:21:154;22786:2;22766:18;;;22759:30;-1:-1:-1;;;22805:18:154;;;22798:46;22861:18;;2071:38:25;22545:340:154;19775:624:111;19872:8;;19856:13;;-1:-1:-1;;;;;19872:8:111;:19;19892:13;:11;:13::i;:::-;19872:54;;;-1:-1:-1;19872:54:111;;;-1:-1:-1;;;;;;19872:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;19872:54:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;19872:54:111;16863:18:154;;;;;19872:54:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;19966:8;;19872:63;;-1:-1:-1;19945:18:111;;-1:-1:-1;;;;;19966:8:111;:23;19990:13;:11;:13::i;:::-;19966:58;;;-1:-1:-1;19966:58:111;;;-1:-1:-1;;;;;;19966:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;19966:58:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;19966:58:111;16863:18:154;;;;;-1:-1:-1;;19966:58:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;19945:93;;20068:1;20057:8;:12;20049:33;;;;-1:-1:-1;;;20049:33:111;;21029:2:154;20049:33:111;;;21011:21:154;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;20049:33:111;20827:331:154;20049:33:111;20132:19;;20100:28;20115:13;20100:12;:28;:::i;:::-;:51;;20092:78;;;;-1:-1:-1;;;20092:78:111;;22404:2:154;20092:78:111;;;22386:21:154;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;20092:78:111;22202:338:154;20092:78:111;-1:-1:-1;;;;;20188:31:111;;20180:56;;;;-1:-1:-1;;;20180:56:111;;30129:2:154;20180:56:111;;;30111:21:154;30168:2;30148:18;;;30141:30;-1:-1:-1;;;30187:18:154;;;30180:42;30239:18;;20180:56:111;29927:336:154;20180:56:111;20247:8;;-1:-1:-1;;;;;20247:8:111;:17;20265:13;:11;:13::i;:::-;20247:60;;;-1:-1:-1;;;;;;;20247:60:111;;;;;;-1:-1:-1;;;;;18357:32:154;;;;20247:60:111;;;18339:51:154;18406:18;;;18399:34;;;18449:18;;;18442:34;;;18492:18;;;18485:34;;;20247:60:111;18311:19:154;;;;;-1:-1:-1;;20247:60:111;;;;;;;-1:-1:-1;20247:60:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20333:13;:11;:13::i;:::-;20323:69;;;39567:25:154;;;39623:2;39608:18;;39601:34;;;39651:18;;;39644:34;;;20376:15:111;39709:2:154;39694:18;;39687:34;20323:69:111;;-1:-1:-1;;;;;20323:69:111;;;;;;;;;;39554:3:154;20323:69:111;;;19846:553;;19775:624;;;:::o;20672:1581::-;20820:8;;20787:30;;-1:-1:-1;;;;;20820:8:111;:19;20840:13;:11;:13::i;:::-;20820:54;;;-1:-1:-1;20820:54:111;;;-1:-1:-1;;;;;;20820:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;20820:54:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;20820:54:111;16863:18:154;;;;;20820:54:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20905:8;;20787:87;;-1:-1:-1;20884:18:111;;-1:-1:-1;;;;;20905:8:111;:23;20929:13;:11;:13::i;:::-;20905:58;;;-1:-1:-1;20905:58:111;;;-1:-1:-1;;;;;;20905:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;20905:58:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;20905:58:111;16863:18:154;;;;;-1:-1:-1;;20905:58:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;20884:93;;21009:1;20996;:10;;;:14;20988:35;;;;-1:-1:-1;;;20988:35:111;;21029:2:154;20988:35:111;;;21011:21:154;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;20988:35:111;20827:331:154;20988:35:111;-1:-1:-1;;;;;21041:31:111;;21033:56;;;;-1:-1:-1;;;21033:56:111;;29109:2:154;21033:56:111;;;29091:21:154;29148:2;29128:18;;;29121:30;-1:-1:-1;;;29167:18:154;;;29160:42;29219:18;;21033:56:111;28907:336:154;21033:56:111;21100:14;21117:49;21155:1;:10;;;21146:3;548:2;21119:1;:11;;;:23;;;;:::i;:::-;21118:31;;;;:::i;:::-;21117:37;;:49::i;:::-;21100:66;-1:-1:-1;21197:11:111;;;:94;;;21213:1;:5;;;:77;;21281:9;21267:1;:11;;;:23;;;;:::i;:::-;21257:6;:33;;21213:77;;;21245:9;21231:1;:11;;;:23;;;;:::i;:::-;21221:6;:33;;21213:77;21176:151;;;;-1:-1:-1;;;21176:151:111;;28085:2:154;21176:151:111;;;28067:21:154;28124:2;28104:18;;;28097:30;-1:-1:-1;;;28143:18:154;;;28136:40;28193:18;;21176:151:111;27883:334:154;21176:151:111;21378:19;;21346:28;21361:13;21346:12;:28;:::i;:::-;:51;;21338:78;;;;-1:-1:-1;;;21338:78:111;;22404:2:154;21338:78:111;;;22386:21:154;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;21338:78:111;22202:338:154;21338:78:111;21457:8;;:26;;;-1:-1:-1;;;21457:26:111;;;;21427:27;;-1:-1:-1;;;;;21457:8:111;;-1:-1:-1;;21457:26:111;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21427:56;-1:-1:-1;21498:11:111;;;:73;;;21514:10;-1:-1:-1;;;;;21514:23:111;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;-1:-1:-1;;;21514:57:111;;;;;33468:25:154;;;-1:-1:-1;;;;;21514:45:111;;;;;;;33441:18:154;;21514:57:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21513:58;21498:73;21494:753;;;21587:8;;-1:-1:-1;;;;;21587:8:111;:17;21605:13;:11;:13::i;:::-;21587:60;;;-1:-1:-1;;;;;;;21587:60:111;;;;;;-1:-1:-1;;;;;18357:32:154;;;;21587:60:111;;;18339:51:154;18406:18;;;18399:34;;;18449:18;;;18442:34;;;18492:18;;;18485:34;;;21587:60:111;18311:19:154;;;;;-1:-1:-1;;21587:60:111;;;;;;;-1:-1:-1;21587:60:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21676:13;:11;:13::i;:::-;21666:69;;;39567:25:154;;;39623:2;39608:18;;39601:34;;;39651:18;;;39644:34;;;21719:15:111;39709:2:154;39694:18;;39687:34;21666:69:111;;-1:-1:-1;;;;;21666:69:111;;;;;;;;;;39554:3:154;21666:69:111;;;21494:753;;;21794:69;;-1:-1:-1;;;21794:69:111;;21779:12;;-1:-1:-1;;;;;21794:19:111;;;;;:69;;21814:10;;21826:36;;21794:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21779:84;;21877:10;-1:-1:-1;;;;;21877:30:111;;21925:7;21950:89;;;;;;;;21977:13;:11;:13::i;:::-;-1:-1:-1;;;;;21950:89:111;;;;;21992:10;21950:89;;;;22004:6;21950:89;;;;22012:1;:11;;;21950:89;;;;22025:1;:5;;;21950:89;;;;;;22032:6;21950:89;;;21877:176;;;;;;;;;;;;;;;36788:4:154;36830:3;36819:9;36815:19;36807:27;;36861:6;36850:9;36843:25;36940:1;36936;36931:3;36927:11;36923:19;36914:6;36908:13;36904:39;36899:2;36888:9;36884:18;36877:67;36998:2;36990:6;36986:15;36980:22;36975:2;36964:9;36960:18;36953:50;37057:2;37049:6;37045:15;37039:22;37034:2;37023:9;37019:18;37012:50;37117:2;37109:6;37105:15;37099:22;37093:3;37082:9;37078:19;37071:51;37191:3;37183:6;37179:16;37173:23;37166:31;37159:39;37153:3;37142:9;37138:19;37131:68;37254:3;37246:6;37242:16;37236:23;37230:3;37219:9;37215:19;37208:52;36610:656;;;;;;21877:176:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22091:13;:11;:13::i;:::-;22073:86;;;39991:25:154;;;40047:2;40032:18;;40025:34;;;40075:18;;;40068:34;;;40133:2;40118:18;;40111:34;;;22143:15:111;40176:3:154;40161:19;;40154:35;22073:86:111;;-1:-1:-1;;;;;22073:86:111;;;;;;;;;;-1:-1:-1;22073:86:111;;;22174:62;;-1:-1:-1;;;22174:62:111;;-1:-1:-1;;;;;22174:18:111;;;-1:-1:-1;;22200:9:111;;22174:62;;22211:7;;22220:15;;;;22174:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21752:495;21494:753;20777:1476;;;;20672:1581;;;;;:::o;130:127:130:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;2676:117:25:-;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:25::1;::::0;;2764:22:::1;929:10:38::0;2773:12:25::1;2764:22;::::0;;-1:-1:-1;;;;;15696:32:154;;;;15678:51;;2764:22:25;;;;;15666:2:154;2764:22:25;;::::1;2676:117::o:0;1063:97::-;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1126:27:25::1;:25;:27::i;2429:115::-:0;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:25::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:38::0;;850:96;22623:667:111;22835:16;;;22883:5;:43;;;;;;;;:::i;:::-;;22879:405;;;22988:5;22954:31;22975:10;22954:18;:31;:::i;:::-;:39;;;;:::i;:::-;22942:51;-1:-1:-1;22942:51:111;23022:30;504:4;23022:17;:30;:::i;:::-;23021:46;;;;:::i;:::-;23007:60;;22879:405;;;23097:35;23088:5;:44;;;;;;;;:::i;:::-;;23084:200;;;23194:5;23160:31;23181:10;23160:18;:31;:::i;:::-;:39;;;;:::i;:::-;23148:51;-1:-1:-1;23148:51:111;23228:30;504:4;23228:17;:30;:::i;:::-;23227:46;;;;:::i;:::-;23213:60;;23084:200;22623:667;;;;;;;;:::o;263:127:130:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;2188:106:25:-;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:25;;20680:2:154;2246:41:25;;;20662:21:154;20719:2;20699:18;;;20692:30;-1:-1:-1;;;20738:18:154;;;20731:50;20798:18;;2246:41:25;20478:344:154;1166:95:25;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1239:7:25::1;:15:::0;;-1:-1:-1;;1239:15:25::1;::::0;;1166:95::o;14:138:154:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:374::-;227:8;237:6;291:3;284:4;276:6;272:17;268:27;258:55;;309:1;306;299:12;258:55;-1:-1:-1;332:20:154;;375:18;364:30;;361:50;;;407:1;404;397:12;361:50;444:4;436:6;432:17;420:29;;504:3;497:4;487:6;484:1;480:14;472:6;468:27;464:38;461:47;458:67;;;521:1;518;511:12;458:67;157:374;;;;;:::o;536:132::-;612:13;;634:28;612:13;634:28;:::i;673:247::-;732:6;785:2;773:9;764:7;760:23;756:32;753:52;;;801:1;798;791:12;753:52;840:9;827:23;859:31;884:5;859:31;:::i;:::-;909:5;673:247;-1:-1:-1;;;673:247:154:o;925:251::-;995:6;1048:2;1036:9;1027:7;1023:23;1019:32;1016:52;;;1064:1;1061;1054:12;1016:52;1096:9;1090:16;1115:31;1140:5;1115:31;:::i;1181:388::-;1249:6;1257;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;1365:9;1352:23;1384:31;1409:5;1384:31;:::i;:::-;1434:5;-1:-1:-1;1491:2:154;1476:18;;1463:32;1504:33;1463:32;1504:33;:::i;:::-;1556:7;1546:17;;;1181:388;;;;;:::o;1574:382::-;1639:6;1647;1700:2;1688:9;1679:7;1675:23;1671:32;1668:52;;;1716:1;1713;1706:12;1668:52;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:154;1866:18;;1853:32;1894:30;1853:32;1894:30;:::i;1961:726::-;2040:6;2048;2056;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;2164:9;2151:23;2183:31;2208:5;2183:31;:::i;:::-;2233:5;-1:-1:-1;2289:2:154;2274:18;;2261:32;2312:18;2342:14;;;2339:34;;;2369:1;2366;2359:12;2339:34;2407:6;2396:9;2392:22;2382:32;;2452:7;2445:4;2441:2;2437:13;2433:27;2423:55;;2474:1;2471;2464:12;2423:55;2514:2;2501:16;2540:2;2532:6;2529:14;2526:34;;;2556:1;2553;2546:12;2526:34;2601:7;2596:2;2587:6;2583:2;2579:15;2575:24;2572:37;2569:57;;;2622:1;2619;2612:12;2569:57;2653:2;2649;2645:11;2635:21;;2675:6;2665:16;;;;;1961:726;;;;;:::o;2692:798::-;2825:6;2833;2841;2849;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2958:9;2945:23;2987:18;3028:2;3020:6;3017:14;3014:34;;;3044:1;3041;3034:12;3014:34;3083:77;3152:7;3143:6;3132:9;3128:22;3083:77;:::i;:::-;3179:8;;-1:-1:-1;3057:103:154;-1:-1:-1;3267:2:154;3252:18;;3239:32;;-1:-1:-1;3283:16:154;;;3280:36;;;3312:1;3309;3302:12;3280:36;;3351:79;3422:7;3411:8;3400:9;3396:24;3351:79;:::i;:::-;2692:798;;;;-1:-1:-1;3449:8:154;-1:-1:-1;;;;2692:798:154:o;3495:241::-;3551:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3659:9;3646:23;3678:28;3700:5;3678:28;:::i;3741:245::-;3808:6;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3909:9;3903:16;3928:28;3950:5;3928:28;:::i;4828:894::-;4978:6;4986;4994;5002;5010;5018;5071:3;5059:9;5050:7;5046:23;5042:33;5039:53;;;5088:1;5085;5078:12;5039:53;5127:9;5114:23;5146:39;5179:5;5146:39;:::i;:::-;5204:5;-1:-1:-1;5261:2:154;5246:18;;5233:32;5274:33;5233:32;5274:33;:::i;:::-;5326:7;-1:-1:-1;5380:2:154;5365:18;;5352:32;;-1:-1:-1;5431:2:154;5416:18;;5403:32;;-1:-1:-1;5486:3:154;5471:19;;5458:33;5514:18;5503:30;;5500:50;;;5546:1;5543;5536:12;5500:50;5585:77;5654:7;5645:6;5634:9;5630:22;5585:77;:::i;:::-;4828:894;;;;-1:-1:-1;4828:894:154;;-1:-1:-1;4828:894:154;;5681:8;;4828:894;-1:-1:-1;;;4828:894:154:o;5727:884::-;5807:6;5860:2;5848:9;5839:7;5835:23;5831:32;5828:52;;;5876:1;5873;5866:12;5828:52;5909:9;5903:16;5938:18;5979:2;5971:6;5968:14;5965:34;;;5995:1;5992;5985:12;5965:34;6033:6;6022:9;6018:22;6008:32;;6078:7;6071:4;6067:2;6063:13;6059:27;6049:55;;6100:1;6097;6090:12;6049:55;6129:2;6123:9;6151:2;6147;6144:10;6141:36;;;6157:18;;:::i;:::-;6232:2;6226:9;6200:2;6286:13;;-1:-1:-1;;6282:22:154;;;6306:2;6278:31;6274:40;6262:53;;;6330:18;;;6350:22;;;6327:46;6324:72;;;6376:18;;:::i;:::-;6416:10;6412:2;6405:22;6451:2;6443:6;6436:18;6491:7;6486:2;6481;6477;6473:11;6469:20;6466:33;6463:53;;;6512:1;6509;6502:12;6463:53;6525:55;6577:2;6572;6564:6;6560:15;6555:2;6551;6547:11;6525:55;:::i;:::-;6599:6;5727:884;-1:-1:-1;;;;;;;5727:884:154:o;6616:1066::-;6720:6;6773:3;6761:9;6752:7;6748:23;6744:33;6741:53;;;6790:1;6787;6780:12;6741:53;6816:17;;:::i;:::-;6856:40;6886:9;6856:40;:::i;:::-;6849:5;6842:55;6950:2;6939:9;6935:18;6929:25;6924:2;6917:5;6913:14;6906:49;7008:2;6997:9;6993:18;6987:25;6982:2;6975:5;6971:14;6964:49;7066:2;7055:9;7051:18;7045:25;7040:2;7033:5;7029:14;7022:49;7104:47;7146:3;7135:9;7131:19;7104:47;:::i;:::-;7098:3;7087:15;;7080:72;7206:3;7191:19;;;7185:26;7168:15;;;7161:51;7266:3;7251:19;;;7245:26;7228:15;;;7221:51;7326:3;7311:19;;;7305:26;7288:15;;;7281:51;7351:3;7392:18;;;7386:25;7370:14;;;7363:49;7431:3;7472:18;;;7466:25;7450:14;;;7443:49;7511:3;7552:18;;;7546:25;7530:14;;;7523:49;7591:3;7632:18;;;7626:25;7610:14;;;7603:49;;;;-1:-1:-1;7091:5:154;6616:1066;-1:-1:-1;6616:1066:154:o;7687:750::-;7786:6;7839:3;7827:9;7818:7;7814:23;7810:33;7807:53;;;7856:1;7853;7846:12;7807:53;7889:2;7883:9;7931:3;7923:6;7919:16;8001:6;7989:10;7986:22;7965:18;7953:10;7950:34;7947:62;7944:88;;;8012:18;;:::i;:::-;8052:10;8048:2;8041:22;;8093:9;8087:16;8079:6;8072:32;8158:2;8147:9;8143:18;8137:25;8132:2;8124:6;8120:15;8113:50;8217:2;8206:9;8202:18;8196:25;8191:2;8183:6;8179:15;8172:50;8265:2;8254:9;8250:18;8244:25;8278:28;8300:5;8278:28;:::i;:::-;8334:2;8322:15;;8315:30;8400:3;8385:19;;;8379:26;8361:16;;;8354:52;;;;-1:-1:-1;8326:6:154;7687:750;-1:-1:-1;7687:750:154:o;8442:514::-;8571:6;8579;8587;8631:9;8622:7;8618:23;8661:3;8657:2;8653:12;8650:32;;;8678:1;8675;8668:12;8650:32;8701:3;8724:2;8720;8716:11;8713:31;;;8740:1;8737;8730:12;8713:31;8763:9;;-1:-1:-1;8807:18:154;;8794:32;;-1:-1:-1;8835:39:154;8794:32;8835:39;:::i;:::-;8442:514;;8893:5;;-1:-1:-1;;;8945:3:154;8930:19;;;;8917:33;;8442:514::o;8961:982::-;9056:6;9109:3;9097:9;9088:7;9084:23;9080:33;9077:53;;;9126:1;9123;9116:12;9077:53;9152:22;;:::i;:::-;9197:40;9227:9;9197:40;:::i;:::-;9190:5;9183:55;9291:2;9280:9;9276:18;9270:25;9265:2;9258:5;9254:14;9247:49;9349:2;9338:9;9334:18;9328:25;9323:2;9316:5;9312:14;9305:49;9407:2;9396:9;9392:18;9386:25;9381:2;9374:5;9370:14;9363:49;9466:3;9455:9;9451:19;9445:26;9439:3;9432:5;9428:15;9421:51;9526:3;9515:9;9511:19;9505:26;9499:3;9492:5;9488:15;9481:51;9565:47;9607:3;9596:9;9592:19;9565:47;:::i;:::-;9559:3;9548:15;;9541:72;9667:3;9652:19;;;9646:26;9629:15;;;9622:51;9692:3;9733:18;;;9727:25;9711:14;;;9704:49;9772:3;9813:18;;;9807:25;9791:14;;;9784:49;9852:3;9893:18;;;9887:25;9871:14;;;9864:49;;;;-1:-1:-1;9552:5:154;8961:982;-1:-1:-1;8961:982:154:o;9948:180::-;10007:6;10060:2;10048:9;10039:7;10035:23;10031:32;10028:52;;;10076:1;10073;10066:12;10028:52;-1:-1:-1;10099:23:154;;9948:180;-1:-1:-1;9948:180:154:o;10133:184::-;10203:6;10256:2;10244:9;10235:7;10231:23;10227:32;10224:52;;;10272:1;10269;10262:12;10224:52;-1:-1:-1;10295:16:154;;10133:184;-1:-1:-1;10133:184:154:o;10322:248::-;10390:6;10398;10451:2;10439:9;10430:7;10426:23;10422:32;10419:52;;;10467:1;10464;10457:12;10419:52;-1:-1:-1;;10490:23:154;;;10560:2;10545:18;;;10532:32;;-1:-1:-1;10322:248:154:o;10575:822::-;10725:6;10733;10741;10749;10757;10765;10818:3;10806:9;10797:7;10793:23;10789:33;10786:53;;;10835:1;10832;10825:12;10786:53;10871:9;10858:23;10848:33;;10928:2;10917:9;10913:18;10900:32;10890:42;;10982:2;10971:9;10967:18;10954:32;11015:1;11008:5;11005:12;10995:40;;11031:1;11028;11021:12;10995:40;11054:5;-1:-1:-1;11106:2:154;11091:18;;11078:32;;-1:-1:-1;11161:3:154;11146:19;;11133:33;11189:18;11178:30;;11175:50;;;11221:1;11218;11211:12;11402:316;11479:6;11487;11495;11548:2;11536:9;11527:7;11523:23;11519:32;11516:52;;;11564:1;11561;11554:12;11516:52;-1:-1:-1;;11587:23:154;;;11657:2;11642:18;;11629:32;;-1:-1:-1;11708:2:154;11693:18;;;11680:32;;11402:316;-1:-1:-1;11402:316:154:o;11723:729::-;11856:6;11864;11872;11880;11888;11896;11949:3;11937:9;11928:7;11924:23;11920:33;11917:53;;;11966:1;11963;11956:12;11917:53;12002:9;11989:23;11979:33;;12059:2;12048:9;12044:18;12031:32;12021:42;;12110:2;12099:9;12095:18;12082:32;12072:42;;12161:2;12150:9;12146:18;12133:32;12123:42;;12216:3;12205:9;12201:19;12188:33;12244:18;12236:6;12233:30;12230:50;;;12276:1;12273;12266:12;12457:523;12561:6;12569;12577;12585;12593;12601;12654:3;12642:9;12633:7;12629:23;12625:33;12622:53;;;12671:1;12668;12661:12;12622:53;-1:-1:-1;;12694:23:154;;;12764:2;12749:18;;12736:32;;-1:-1:-1;12815:2:154;12800:18;;12787:32;;12866:2;12851:18;;12838:32;;-1:-1:-1;12917:3:154;12902:19;;12889:33;;-1:-1:-1;12969:3:154;12954:19;12941:33;;-1:-1:-1;12457:523:154;-1:-1:-1;12457:523:154:o;13190:266::-;13278:6;13273:3;13266:19;13330:6;13323:5;13316:4;13311:3;13307:14;13294:43;-1:-1:-1;13382:1:154;13357:16;;;13375:4;13353:27;;;13346:38;;;;13438:2;13417:15;;;-1:-1:-1;;13413:29:154;13404:39;;;13400:50;;13190:266::o;13461:257::-;13502:3;13540:5;13534:12;13567:6;13562:3;13555:19;13583:63;13639:6;13632:4;13627:3;13623:14;13616:4;13609:5;13605:16;13583:63;:::i;:::-;13700:2;13679:15;-1:-1:-1;;13675:29:154;13666:39;;;;13707:4;13662:50;;13461:257;-1:-1:-1;;13461:257:154:o;13723:141::-;13805:1;13798:5;13795:12;13785:46;;13811:18;;:::i;:::-;13840;;13723:141::o;13869:392::-;13956:12;;-1:-1:-1;;;;;13952:38:154;13940:51;;14040:4;14029:16;;;14023:23;14007:14;;;14000:47;14096:4;14085:16;;;14079:23;14063:14;;;14056:47;14149:4;14138:16;;14132:23;14164:46;14132:23;14164:46;:::i;:::-;14242:12;14235:4;14230:3;14226:14;14219:36;;13869:392;;:::o;14266:775::-;14344:12;;-1:-1:-1;;;;;13051:31:154;13039:44;;14411:4;14404:5;14400:16;14394:23;14387:4;14382:3;14378:14;14371:47;14467:4;14460:5;14456:16;14450:23;14443:4;14438:3;14434:14;14427:47;14523:4;14516:5;14512:16;14506:23;14499:4;14494:3;14490:14;14483:47;14579:4;14572:5;14568:16;14562:23;14555:4;14550:3;14546:14;14539:47;14635:4;14628:5;14624:16;14618:23;14611:4;14606:3;14602:14;14595:47;14688:4;14681:5;14677:16;14671:23;14703:45;14742:4;14737:3;14733:14;14719:12;13164:13;13157:21;13145:34;;13094:91;14703:45;-1:-1:-1;14797:4:154;14786:16;;;14780:23;14764:14;;;14757:47;14823:6;14865:14;;;14859:21;14845:12;;;14838:43;14900:6;14942:14;;;14936:21;14922:12;;;14915:43;14977:6;15019:14;;;15013:21;14999:12;;14992:43;14266:775::o;15046:271::-;15229:6;15221;15216:3;15203:33;15185:3;15255:16;;15280:13;;;15255:16;15046:271;-1:-1:-1;15046:271:154:o;17614:489::-;-1:-1:-1;;;;;17886:32:154;;17868:51;;17950:2;17935:18;;17928:34;;;17993:2;17978:18;;17971:34;;;17855:3;17840:19;;18014:40;18047:6;18014:40;:::i;:::-;18090:6;18085:2;18074:9;18070:18;18063:34;17614:489;;;;;;;:::o;19370:217::-;19517:2;19506:9;19499:21;19480:4;19537:44;19577:2;19566:9;19562:18;19554:6;19537:44;:::i;27471:407::-;27673:2;27655:21;;;27712:2;27692:18;;;27685:30;27751:34;27746:2;27731:18;;27724:62;-1:-1:-1;;;27817:2:154;27802:18;;27795:41;27868:3;27853:19;;27471:407::o;30603:1092::-;30837:13;;-1:-1:-1;;;;;13051:31:154;13039:44;;30805:3;30790:19;;30918:4;30910:6;30906:17;30900:24;30893:4;30882:9;30878:20;30871:54;30981:4;30973:6;30969:17;30963:24;30956:4;30945:9;30941:20;30934:54;31044:4;31036:6;31032:17;31026:24;31019:4;31008:9;31004:20;30997:54;31098:4;31090:6;31086:17;31080:24;31113:51;31158:4;31147:9;31143:20;31129:12;13164:13;13157:21;13145:34;;13094:91;31113:51;;31220:4;31212:6;31208:17;31202:24;31195:4;31184:9;31180:20;31173:54;31283:4;31275:6;31271:17;31265:24;31258:4;31247:9;31243:20;31236:54;31346:4;31338:6;31334:17;31328:24;31321:4;31310:9;31306:20;31299:54;31372:6;31432:2;31424:6;31420:15;31414:22;31409:2;31398:9;31394:18;31387:50;;31456:6;31516:2;31508:6;31504:15;31498:22;31493:2;31482:9;31478:18;31471:50;;31540:6;31600:2;31592:6;31588:15;31582:22;31577:2;31566:9;31562:18;31555:50;;31624:6;31684:2;31676:6;31672:15;31666:22;31661:2;31650:9;31646:18;31639:50;;30603:1092;;;;:::o;31700:353::-;31936:3;31921:19;;31949:54;31925:9;31985:6;31949:54;:::i;:::-;32040:6;32034:3;32023:9;32019:19;32012:35;31700:353;;;;;:::o;32058:627::-;32276:4;32318:3;32307:9;32303:19;32295:27;;32331:49;32370:9;32361:6;32355:13;32331:49;:::i;:::-;32438:4;32426:17;;32420:24;32411:6;32396:22;;32389:56;32503:4;32491:17;;32485:24;32476:6;32461:22;;32454:56;32568:4;32556:17;;;32550:24;32541:6;32526:22;;32519:56;32606:3;32591:19;;32584:35;;;;32663:14;32656:22;32650:3;32635:19;;;32628:51;32058:627;:::o;32690:245::-;32874:3;32859:19;;32887:42;32863:9;32911:6;32887:42;:::i;32940:377::-;33174:3;33159:19;;33187:54;33163:9;33223:6;33187:54;:::i;:::-;-1:-1:-1;;;;;33278:32:154;;;;33272:3;33257:19;;;;33250:61;33278:32;;-1:-1:-1;32940:377:154:o;33504:1261::-;33704:4;33752:2;33741:9;33737:18;33782:6;33771:9;33764:25;33808:2;33846;33841;33830:9;33826:18;33819:30;33869:6;33899;33891;33884:22;33937:2;33926:9;33922:18;33915:25;;33999:2;33989:6;33986:1;33982:14;33971:9;33967:30;33963:39;33949:53;;34025:6;34049:1;34059:677;34073:6;34070:1;34067:13;34059:677;;;34138:22;;;-1:-1:-1;;34134:36:154;34122:49;;34210:20;;34285:14;34281:27;;;-1:-1:-1;;34277:41:154;34253:66;;34243:94;;34333:1;34330;34323:12;34243:94;34363:31;;34421:19;;34467:18;34456:30;;34453:50;;;34499:1;34496;34489:12;34453:50;34551:6;34535:14;34531:27;34523:6;34519:40;34516:60;;;34572:1;34569;34562:12;34516:60;34599:57;34649:6;34641;34636:2;34629:5;34625:14;34599:57;:::i;:::-;34589:67;-1:-1:-1;;;34714:12:154;;;;34679:15;;;;34095:1;34088:9;34059:677;;;-1:-1:-1;34753:6:154;;33504:1261;-1:-1:-1;;;;;;;;33504:1261:154:o;35439:318::-;35627:25;;;35615:2;35600:18;;35682:1;35671:13;;35661:47;;35688:18;;:::i;:::-;35744:6;35739:2;35728:9;35724:18;35717:34;35439:318;;;;;:::o;35762:843::-;35960:4;36002:3;35991:9;35987:19;35979:27;;36033:6;36022:9;36015:25;36112:1;36108;36103:3;36099:11;36095:19;36086:6;36080:13;36076:39;36071:2;36060:9;36056:18;36049:67;36170:2;36162:6;36158:15;36152:22;36147:2;36136:9;36132:18;36125:50;36229:2;36221:6;36217:15;36211:22;36206:2;36195:9;36191:18;36184:50;36281:2;36273:6;36269:15;36263:22;36294:61;36350:3;36339:9;36335:19;36321:12;36294:61;:::i;:::-;;36410:3;36402:6;36398:16;36392:23;36386:3;36375:9;36371:19;36364:52;36471:3;36463:6;36459:16;36453:23;36447:3;36436:9;36432:19;36425:52;36532:3;36524:6;36520:16;36514:23;36508:3;36497:9;36493:19;36486:52;36593:3;36585:6;36581:16;36575:23;36569:3;36558:9;36554:19;36547:52;35762:843;;;;;:::o;37524:769::-;37837:4;37879:3;37868:9;37864:19;37856:27;;37910:6;37899:9;37892:25;37953:6;37948:2;37937:9;37933:18;37926:34;38010:6;38003:14;37996:22;37991:2;37980:9;37976:18;37969:50;38055:6;38050:2;38039:9;38035:18;38028:34;38099:6;38093:3;38082:9;38078:19;38071:35;38115:40;38148:6;38115:40;:::i;:::-;38192:6;38186:3;38175:9;38171:19;38164:35;38236:6;38230:3;38219:9;38215:19;38208:35;38280:6;38274:3;38263:9;38259:19;38252:35;37524:769;;;;;;;;;;;:::o;38298:709::-;38678:25;;;38734:2;38719:18;;38712:34;;;38665:3;38650:19;;38755:54;38805:2;38790:18;;38782:6;38755:54;:::i;:::-;38818:51;38865:2;38854:9;38850:18;38842:6;38818:51;:::i;:::-;38906:6;38900:3;38889:9;38885:19;38878:35;38950:6;38944:3;38933:9;38929:19;38922:35;38994:6;38988:3;38977:9;38973:19;38966:35;38298:709;;;;;;;;;;:::o;40740:247::-;40807:2;40801:9;40849:3;40837:16;;40883:18;40868:34;;40904:22;;;40865:62;40862:88;;;40930:18;;:::i;:::-;40966:2;40959:22;40740:247;:::o;40992:252::-;41064:2;41058:9;41106:3;41094:16;;41140:18;41125:34;;41161:22;;;41122:62;41119:88;;;41187:18;;:::i;41249:128::-;41289:3;41320:1;41316:6;41313:1;41310:13;41307:39;;;41326:18;;:::i;:::-;-1:-1:-1;41362:9:154;;41249:128::o;41382:217::-;41422:1;41448;41438:132;;41492:10;41487:3;41483:20;41480:1;41473:31;41527:4;41524:1;41517:15;41555:4;41552:1;41545:15;41438:132;-1:-1:-1;41584:9:154;;41382:217::o;41604:168::-;41644:7;41710:1;41706;41702:6;41698:14;41695:1;41692:21;41687:1;41680:9;41673:17;41669:45;41666:71;;;41717:18;;:::i;:::-;-1:-1:-1;41757:9:154;;41604:168::o;41777:125::-;41817:4;41845:1;41842;41839:8;41836:34;;;41850:18;;:::i;:::-;-1:-1:-1;41887:9:154;;41777:125::o;41907:258::-;41979:1;41989:113;42003:6;42000:1;41997:13;41989:113;;;42079:11;;;42073:18;42060:11;;;42053:39;42025:2;42018:10;41989:113;;;42120:6;42117:1;42114:13;42111:48;;;42155:1;42146:6;42141:3;42137:16;42130:27;42111:48;;41907:258;;;:::o;42170:135::-;42209:3;-1:-1:-1;;42230:17:154;;42227:43;;;42250:18;;:::i;:::-;-1:-1:-1;42297:1:154;42286:13;;42170:135::o;42310:127::-;42371:10;42366:3;42362:20;42359:1;42352:31;42402:4;42399:1;42392:15;42426:4;42423:1;42416:15;42442:127;42503:10;42498:3;42494:20;42491:1;42484:31;42534:4;42531:1;42524:15;42558:4;42555:1;42548:15;42574:127;42635:10;42630:3;42626:20;42623:1;42616:31;42666:4;42663:1;42656:15;42690:4;42687:1;42680:15;42706:127;42767:10;42762:3;42758:20;42755:1;42748:31;42798:4;42795:1;42788:15;42822:4;42819:1;42812:15;42838:115;42921:1;42914:5;42911:12;42901:46;;42927:18;;:::i;:::-;42838:115;:::o;42958:131::-;-1:-1:-1;;;;;43033:31:154;;43023:42;;43013:70;;43079:1;43076;43069:12;43094:118;43180:5;43173:13;43166:21;43159:5;43156:32;43146:60;;43202:1;43199;43192:12;43217:109;43300:1;43293:5;43290:12;43280:40;;43316:1;43313;43306:12","linkReferences":{}},"methodIdentifiers":{"__msgSender()":"d1a91ff2","cancelOpenLimitOrder(uint256,uint256)":"b9b6573a","cancelPendingMarketOrder(uint256)":"c5ed6a08","closeTradeMarket(uint256,uint256,uint256)":"2c3cbce4","delegatedAction(address,bytes)":"9a10cc32","delegations(address)":"bffe3486","executeLimitOrder(uint8,address,uint256,uint256,bytes[])":"46f6c8f5","executeMarketOrders(uint256[],bytes[])":"c0b4d24d","initialize(address,address)":"485cc955","isOperator(address)":"6d70f7ae","limitOrdersTimelock()":"0890d22a","openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":"19cde9a1","operator()":"570ca735","pairInfos()":"1346b0ff","pause()":"8456cb59","paused()":"5c975abb","removeDelegate()":"36fb8b15","setDelegate(address)":"ca5eb5e1","setLimitOrdersTimelock(uint256)":"d4a1caa7","setMarketExecFeeReciever(address)":"9e2033f5","storageT()":"16fff074","unpause()":"3f4ba83a","updateMargin(uint256,uint256,uint8,uint256,bytes[])":"cd90b8a4","updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":"c641558e","updateOperator(address,bool)":"6d44a3b2","updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":"15b760b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderSameBlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"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\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"newTrade\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtectionTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarketOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdateInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"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\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"__msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"cancelOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"cancelPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"call_data\",\"type\":\"bytes\"}],\"name\":\"delegatedAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"_orderType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeLimitOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"orderId\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeMarketOrders\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitOrdersTimelock\",\"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\":\"t\",\"type\":\"tuple\"},{\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"}],\"name\":\"openTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blocks\",\"type\":\"uint256\"}],\"name\":\"setLimitOrdersTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reciever\",\"type\":\"address\"}],\"name\":\"setMarketExecFeeReciever\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_sl\",\"type\":\"uint256\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isOperator\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTP\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateTpAndSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\"}},\"closeTradeMarket(uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"The amount of collateral being closed\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\"}},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_orderType\":\"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\",\"_pairIndex\":\"The index of the trading pair\",\"_trader\":\"The address of the trader\",\"priceUpdateData\":\"Pyth price update data\"}},\"executeMarketOrders(uint256[],bytes[])\":{\"params\":{\"orderId\":\"The array of orderIDs\",\"priceUpdateData\":\"Pyth price update calldata\"}},\"initialize(address,address)\":{\"params\":{\"_pairInfos\":\"The address of the pair information contract\",\"_storageT\":\"The address of the storage contract\"}},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"params\":{\"_slippageP\":\"The slippage percentage\",\"_type\":\"Market or Limit or Stop Limit\",\"t\":\"The details of the trade to open\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"setLimitOrdersTimelock(uint256)\":{\"params\":{\"_blocks\":\"The new time-lock duration in blocks\"}},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"params\":{\"_amount\":\"The Collateral by which to update the margin\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\",\"_type\":\"Withdraw or Deposit\",\"priceUpdateData\":\"Pyth price update\"}},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\",\"_price\":\"The price level to set (_PRECISION)\",\"_sl\":\"The stop-loss price\",\"_tp\":\"The take-profit price\"}},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss price\",\"_newTP\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"notice\":\"Cancels an open limit order\"},\"cancelPendingMarketOrder(uint256)\":{\"notice\":\"FallBack method in case unregister is not working directly\"},\"closeTradeMarket(uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"notice\":\"Executes a limit order (either open or close). Callable by Operators\"},\"executeMarketOrders(uint256[],bytes[])\":{\"notice\":\"Operator intiated method to close pending market orders\"},\"initialize(address,address)\":{\"notice\":\"Initializes the proxy\"},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"notice\":\"Opens a new Market/Limit trade\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"setLimitOrdersTimelock(uint256)\":{\"notice\":\"Sets the time-lock for limit order updates\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"notice\":\"Updates(Deposit/Withdraw) the margin for an open trade\"},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Updates an open limit order\"},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the take-profit and stop-loss for a open Trade\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Trading.sol\":\"Trading\"},\"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/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/Delegatable.sol\":{\"keccak256\":\"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92\",\"dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu\"]},\"src/Trading.sol\":{\"keccak256\":\"0xb344f4cb5b96b281bca51bb36628c7f54750901d11028d1c1dc6c5e6eff31128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48eb16c48c95a3c91b0c30e9828ca9948b009fae7275dd149de9bc687398ca25\",\"dweb:/ipfs/Qmb5hxwYQk8CM4dw9x9sEzPbKLNrPxn2a563cfWmwAY4dp\"]},\"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\":\"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048\",\"dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff\",\"dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs\"]},\"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\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderSameBlock","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"newTrade","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"}],"indexed":false},{"internalType":"uint256","name":"marginFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtectionTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarketOrderInitiated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitCanceled","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false},{"internalType":"uint256","name":"openPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"executionFee","type":"uint256","indexed":false},{"internalType":"enum IExecute.OpenLimitOrderType","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"slippageP","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bool","name":"isOperator","type":"bool","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdateInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"TpUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"__msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelPendingMarketOrder"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"closeTradeMarket","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"bytes","name":"call_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"delegatedAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegations","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum ITradingStorage.LimitOrder","name":"_orderType","type":"uint8"},{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeLimitOrder"},{"inputs":[{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeMarketOrders"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"limitOrdersTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"t","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":"enum IExecute.OpenLimitOrderType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_slippageP","type":"uint256"}],"stateMutability":"payable","type":"function","name":"openTrade","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"removeDelegate"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegate"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrdersTimelock"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketExecFeeReciever"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateMargin","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_tp","type":"uint256"},{"internalType":"uint256","name":"_sl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_isOperator","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateOperator"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"uint256","name":"_newTP","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateTpAndSl"}],"devdoc":{"kind":"dev","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair"}},"closeTradeMarket(uint256,uint256,uint256)":{"params":{"_amount":"The amount of collateral being closed","_index":"The index of the trade","_pairIndex":"The index of the trading pair"}},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_orderType":"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)","_pairIndex":"The index of the trading pair","_trader":"The address of the trader","priceUpdateData":"Pyth price update data"}},"executeMarketOrders(uint256[],bytes[])":{"params":{"orderId":"The array of orderIDs","priceUpdateData":"Pyth price update calldata"}},"initialize(address,address)":{"params":{"_pairInfos":"The address of the pair information contract","_storageT":"The address of the storage contract"}},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"params":{"_slippageP":"The slippage percentage","_type":"Market or Limit or Stop Limit","t":"The details of the trade to open"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"setLimitOrdersTimelock(uint256)":{"params":{"_blocks":"The new time-lock duration in blocks"}},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"params":{"_amount":"The Collateral by which to update the margin","_index":"The index of the trade","_pairIndex":"The index of the trading pair","_type":"Withdraw or Deposit","priceUpdateData":"Pyth price update"}},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair","_price":"The price level to set (_PRECISION)","_sl":"The stop-loss price","_tp":"The take-profit price"}},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss price","_newTP":"The new take-profit price","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"notice":"Cancels an open limit order"},"cancelPendingMarketOrder(uint256)":{"notice":"FallBack method in case unregister is not working directly"},"closeTradeMarket(uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"notice":"Executes a limit order (either open or close). Callable by Operators"},"executeMarketOrders(uint256[],bytes[])":{"notice":"Operator intiated method to close pending market orders"},"initialize(address,address)":{"notice":"Initializes the proxy"},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"notice":"Opens a new Market/Limit trade"},"pause()":{"notice":"Pauses the contract"},"setLimitOrdersTimelock(uint256)":{"notice":"Sets the time-lock for limit order updates"},"unpause()":{"notice":"Unpauses the contract"},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"notice":"Updates(Deposit/Withdraw) the margin for an open trade"},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"notice":"Updates an open limit order"},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"notice":"Updates the take-profit and stop-loss for a open Trade"}},"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/Trading.sol":"Trading"},"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/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/Delegatable.sol":{"keccak256":"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8","urls":["bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92","dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu"],"license":"MIT"},"src/Trading.sol":{"keccak256":"0xb344f4cb5b96b281bca51bb36628c7f54750901d11028d1c1dc6c5e6eff31128","urls":["bzz-raw://48eb16c48c95a3c91b0c30e9828ca9948b009fae7275dd149de9bc687398ca25","dweb:/ipfs/Qmb5hxwYQk8CM4dw9x9sEzPbKLNrPxn2a563cfWmwAY4dp"],"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":"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a","urls":["bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048","dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59","urls":["bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff","dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs"],"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"}},"version":1},"id":111}
|