avantis-trader-sdk 0.7.0__py3-none-any.whl → 0.8.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainlinkValidityPeriod","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executions","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IExecute"}],"stateMutability":"view"},{"type":"function","name":"fulfill","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.Order","components":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"},{"name":"job","type":"bytes32","internalType":"bytes32"},{"name":"initiated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairsStorage","type":"address","internalType":"address"},{"name":"_executions","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"openFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPositionSize","type":"uint256","internalType":"uint256"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"},{"name":"job","type":"bytes32","internalType":"bytes32"},{"name":"initiated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ordersAnswers","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairsStorage","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairStorage"}],"stateMutability":"view"},{"type":"function","name":"pendingMarginUpdateOrders","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.PendingMarginUpdate","components":[{"name":"trader","type":"address","internalType":"address"},{"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":"tier","type":"uint256","internalType":"uint256"},{"name":"marginFees","type":"uint256","internalType":"uint256"},{"name":"oldLeverage","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pendingSlOrders","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.PendingSl","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"newSl","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pyth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPyth"}],"stateMutability":"view"},{"type":"function","name":"setChainlinkValidityPeriod","inputs":[{"name":"_newPeriod","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPyth","inputs":[{"name":"pythContract","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"storePendingMarginUpdateOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"p","type":"tuple","internalType":"struct IPriceAggregator.PendingMarginUpdate","components":[{"name":"trader","type":"address","internalType":"address"},{"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":"tier","type":"uint256","internalType":"uint256"},{"name":"marginFees","type":"uint256","internalType":"uint256"},{"name":"oldLeverage","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingSlOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"p","type":"tuple","internalType":"struct IPriceAggregator.PendingSl","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"newSl","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingMarginUpdateOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingSlOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePairsStorage","inputs":[{"name":"_pairsStorage","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"useBackUpOracleOnly","inputs":[{"name":"_start","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"useBackupOnly","inputs":[],"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":"BackUpTriggered","inputs":[{"name":"_start","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"BackupPriceReceived","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PriceReceived","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PythUpdated","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"chainlinkValidityPeriodSet","inputs":[{"name":"_newPeriod","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61300780620000f36000396000f3fe6080604052600436106101405760003560e01c8063b21f4517116100b6578063d09ef2411161006f578063d09ef24114610424578063d1f6652e14610451578063da74d14a1461047e578063dd2f3c051461049e578063ee22fd6f146104b1578063f98d06f0146104d157600080fd5b8063b21f451714610364578063b8213bfa14610384578063c0a027f4146103a4578063c0c53b8b146103c4578063c61904a1146103e4578063cbe91bd91461040457600080fd5b80633a100f4d116101085780633a100f4d1461025a57806340e9eda21461027a57806361417a431461029a57806367288428146102ba57806393d7fe2c146102eb578063a85c38ef1461030b57600080fd5b8063166a073b1461014557806316fff074146101675780631e8ff50d146101a457806335b03c17146101c857806337a3dba3146101e8575b600080fd5b34801561015157600080fd5b506101656101603660046127ed565b6104f7565b005b34801561017357600080fd5b50600154610187906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b057600080fd5b506101ba60045481565b60405190815260200161019b565b3480156101d457600080fd5b50600254610187906001600160a01b031681565b3480156101f457600080fd5b506102086102033660046127ed565b6105f2565b60405161019b919081516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808083015115159082015260a0918201519181019190915260c00190565b34801561026657600080fd5b506101ba610275366004612958565b61069d565b34801561028657600080fd5b50610165610295366004612579565b610731565b3480156102a657600080fd5b506101656102b53660046127ed565b61089c565b3480156102c657600080fd5b506000546102db90600160b01b900460ff1681565b604051901515815260200161019b565b3480156102f757600080fd5b506101ba610306366004612936565b6109b5565b34801561031757600080fd5b506103546103263660046127ed565b6005602052600090815260409020805460018201546002830154600390930154919260ff9182169290911684565b60405161019b9493929190612bc2565b34801561037057600080fd5b50600354610187906001600160a01b031681565b34801561039057600080fd5b5061016561039f36600461290c565b6109e6565b3480156103b057600080fd5b506101ba6103bf36600461289e565b610abc565b3480156103d057600080fd5b506101656103df3660046125ba565b610c99565b3480156103f057600080fd5b506101656103ff3660046127ed565b610e2b565b34801561041057600080fd5b5061016561041f3660046128d2565b610f52565b34801561043057600080fd5b5061044461043f3660046127ed565b611022565b60405161019b9190612b19565b34801561045d57600080fd5b5061047161046c3660046127ed565b6110b9565b60405161019b9190612b51565b34801561048a57600080fd5b50610165610499366004612605565b6111a4565b6101656104ac36600461281f565b6112a7565b3480156104bd57600080fd5b506101656104cc366004612579565b6121c0565b3480156104dd57600080fd5b50600054610187906201000090046001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d919061259d565b6001600160a01b0316336001600160a01b0316146105b65760405162461bcd60e51b81526004016105ad90612af7565b60405180910390fd5b60048190556040518181527fb7116a6d2338b4af7895e72c37e89f941362a610ee8e3787ee4b3113aa51a747906020015b60405180910390a150565b6106366040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081525090565b50600090815260076020908152604091829020825160c08101845281546001600160a01b0316815260018201549281019290925260028101549282019290925260038201546060820152600482015460ff161515608082015260059091015460a082015290565b60025460405163fb3e519d60e01b8152600481018590526024810184905282151560448201526000916001600160a01b03169063fb3e519d9060640160206040518083038186803b1580156106f157600080fd5b505afa158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190612806565b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561077f57600080fd5b505afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b7919061259d565b6001600160a01b0316336001600160a01b0316146107e75760405162461bcd60e51b81526004016105ad90612af7565b6001600160a01b0381166108275760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b60448201526064016105ad565b600280546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b706169727353746f7261676560a01b606082015260208101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781906080016105e7565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061259d565b6001600160a01b0316336001600160a01b0316146109725760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064016105ad565b600090815260076020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff1916905560050155565b600660205281600052604060002081815481106109d157600080fd5b90600052602060002001600091509150505481565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c919061259d565b6001600160a01b0316336001600160a01b031614610a9c5760405162461bcd60e51b81526004016105ad90612ad1565b60008281526007602052604090208190610ab68282612f47565b50505050565b60015460408051637622567960e11b815290516000926001600160a01b03169163ec44acf2916004808301926020929190829003018186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b39919061259d565b6001600160a01b0316336001600160a01b031614610b695760405162461bcd60e51b81526004016105ad90612ad1565b600254604051630c0be07f60e21b81526004810185905260009182916001600160a01b039091169063302f81fc90602401600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf09190810190612622565b945050935050506040518060800160405280868152602001856005811115610c1a57610c1a612e4c565b8152602080820185905260016040928301819052600085815260058084529390208451815591840151828201805493949193909260ff19909116918490811115610c6657610c66612e4c565b0217905550604082015160028201556060909101516003909101805460ff19169115159190911790559150505b92915050565b600054610100900460ff1615808015610cb95750600054600160ff909116105b80610cd35750303b158015610cd3575060005460ff166001145b610d365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ad565b6000805460ff191660011790558015610d59576000805461ff0019166101001790555b6001600160a01b038316610d9e5760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b60448201526064016105ad565b600280546001600160a01b038086166001600160a01b03199283161790925560038054858416908316179055600180549287169290911691909117905560786004558015610ab6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7857600080fd5b505afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb0919061259d565b6001600160a01b0316336001600160a01b031614610f015760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064016105ad565b600090815260086020526040812080546001600160a01b0319168155600181018290556002810182905560038101805460ff1916905560048101829055600581018290556006810182905560070155565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd8919061259d565b6001600160a01b0316336001600160a01b0316146110085760405162461bcd60e51b81526004016105ad90612ad1565b60008281526008602052604090208190610ab68282612ed1565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526005602081815260409283902083516080810190945280548452600181015490929184019160ff9091169081111561108557611085612e4c565b600581111561109657611096612e4c565b81526002820154602082015260039091015460ff16151560409091015292915050565b61110160408051610100810182526000808252602082018190529181018290529060608201908152602001600081526020016000815260200160008152602001600081525090565b60008281526008602090815260409182902082516101008101845281546001600160a01b031681526001808301549382019390935260028201549381019390935260038101549091606084019160ff169081111561116157611161612e4c565b600181111561117257611172612e4c565b815260048201546020820152600582015460408201526006820154606082015260079091015460809091015292915050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f257600080fd5b505afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a919061259d565b6001600160a01b0316336001600160a01b03161461125a5760405162461bcd60e51b81526004016105ad90612af7565b60008054821515600160b01b0260ff60b01b199091161790556040517f5a3be68c2e82796ccb7eaec7f9aecf7cd941e6fc2d4298f6c4f101e924c15a47906105e790831515815260200190565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f557600080fd5b505afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d919061259d565b6001600160a01b0316336001600160a01b03161461135d5760405162461bcd60e51b81526004016105ad90612ad1565b6000838152600560205260409020600381015460ff1615610ab657600254815460405163685e905b60e01b815260009283926001600160a01b039091169163685e905b916113b19160040190815260200190565b604080518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140091906126ae565b6000878152600660205260408120905491925090600160b01b900460ff16801561144257506003600185015460ff16600581111561144057611440612e4c565b145b801561145a575060208201516001600160a01b031615155b156116805760015460405163363df41d60e11b8152600481018990526000916001600160a01b031690636c7be83a9060240160806040518083038186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190612718565b90506002816060015160038111156114f6576114f6612e4c565b141561167a57600083602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612986565b50935050925050426004548261158f9190612c6a565b10611676576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115cf57600080fd5b505afa1580156115e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160791906129d6565b61161290600a612ceb565b6116216402540be40085612d97565b61162b9190612c82565b8954604080518f8152602081019290925281018290529098508891507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c9060600160405180910390a1505b5050505b50611cd8565b600054600160b01b900460ff16611cd8576000805460405163d47eed4560e01b8152620100009091046001600160a01b03169063d47eed45906116c9908a908a90600401612a36565b60206040518083038186803b1580156116e157600080fd5b505afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190612806565b600054604051631df3cbc560e31b81529192506201000090046001600160a01b03169063ef9e5e28908390611754908b908b90600401612a36565b6000604051808303818588803b15801561176d57600080fd5b505af1158015611781573d6000803e3d6000fd5b50506000805460028a01546040516331d98b3f60e01b815260048101919091529194506201000090046001600160a01b031692506331d98b3f915060240160806040518083038186803b1580156117d757600080fd5b505afa1580156117eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180f9190612773565b9050600080826040015160030b131561189b57604082015161183290600a612cd9565b825161184e906402540be4009067ffffffffffffffff16612d97565b6118589190612d97565b95508160400151600a61186b9190612cd9565b6402540be400836020015167ffffffffffffffff1661188a9190612d97565b6118949190612d97565b9050611921565b81604001516118a990612dfc565b6118b490600a612cd9565b82516118d0906402540be4009067ffffffffffffffff16612d97565b6118da9190612c82565b955081604001516118ea90612dfc565b6118f590600a612cd9565b6402540be400836020015167ffffffffffffffff166119149190612d97565b61191e9190612c82565b90505b60025487546040516307aa801760e21b815260048101919091526000916001600160a01b031690631eaa005c90602401604080518083038186803b15801561196857600080fd5b505afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a091906126e6565b90506000871180156119d757508051876119bf6402540be40085612d97565b6119ca906064612d97565b6119d49190612c82565b11155b611a235760405162461bcd60e51b815260206004820152601860248201527f50524943455f444556494154494f4e5f544f4f5f48494748000000000000000060448201526064016105ad565b855115801590611a3f575060208601516001600160a01b031615155b15611cd357600086602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611a8957600080fd5b505afa158015611a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac19190612986565b509350509250504260045482611ad79190612c6a565b10611ccf576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1757600080fd5b505afa158015611b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4f91906129d6565b611b5a90600a612ceb565b611b696402540be40085612d97565b611b739190612c82565b90507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c8f8d6000015483604051611bbd939291909283526020830191909152604082015260600190565b60405180910390a18a811115611c495789518b6402540be400611be08285612db6565b611beb906064612d97565b611bf59190612d97565b611bff9190612c82565b1115611c495760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b60448201526064016105ad565b8a811015611ccd578951816402540be400611c64828f612db6565b611c6f906064612d97565b611c799190612d97565b611c839190612c82565b1115611ccd5760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b60448201526064016105ad565b505b5050505b505050505b805460018101825560008281526020908190209091018490558454604080518a81529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a18054156121b75760006040518060600160405280898152602001611da584805480602002602001604051908101604052809291908181526020018280548015611d9b57602002820191906000526020600020905b815481526020019060010190808311611d87575b50505050506122ce565b8152600254875460405163a1d54e9b60e01b81526020909301926001600160a01b039092169163a1d54e9b91611de19160040190815260200190565b60206040518083038186803b158015611df957600080fd5b505afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612806565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8557600080fd5b505afa158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd919061259d565b90506000600187015460ff166005811115611eda57611eda612e4c565b1415611f5a578151602083015160408085015190516376eb3fdf60e11b81526004810193909352602483019190915260448201526001600160a01b0382169063edd67fbe906064015b600060405180830381600087803b158015611f3d57600080fd5b505af1158015611f51573d6000803e3d6000fd5b5050505061216e565b60018087015460ff166005811115611f7457611f74612e4c565b1415611fc15781516020830151604080850151905163fa7227e960e01b81526004810193909352602483019190915260448201526001600160a01b0382169063fa7227e990606401611f23565b6002600187015460ff166005811115611fdc57611fdc612e4c565b1415612029578151602083015160408085015190516342be1f8f60e11b81526004810193909352602483019190915260448201526001600160a01b0382169063857c3f1e90606401611f23565b6003600187015460ff16600581111561204457612044612e4c565b14156120915781516020830151604080850151905163b225047160e01b81526004810193909352602483019190915260448201526001600160a01b0382169063b225047190606401611f23565b6004600187015460ff1660058111156120ac576120ac612e4c565b14156120f957815160208301516040808501519051630407df4b60e31b81526004810193909352602483019190915260448201526001600160a01b0382169063203efa5890606401611f23565b81516020830151604080850151905163da0870e760e01b81526004810193909352602483019190915260448201526001600160a01b0382169063da0870e790606401600060405180830381600087803b15801561215557600080fd5b505af1158015612169573d6000803e3d6000fd5b505050505b600089815260056020908152604080832083815560018101805460ff1990811690915560028201859055600390910180549091169055600690915281206121b491612494565b50505b50505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561220e57600080fd5b505afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612246919061259d565b6001600160a01b0316336001600160a01b0316146122765760405162461bcd60e51b81526004016105ad90612af7565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527fc0377667bd059a05c5d852537639c6099198490d6e89d187764aff179ffec748906020016105e7565b60006122dd826000845161235e565b600282516122eb9190612de8565b15612314578160018351901c8151811061230757612307612e62565b6020026020010151610c93565b60018260018451901c8151811061232d5761232d612e62565b602090810291909101015183518490612344612e62565b60200260200101516123569190612c6a565b901c92915050565b80821061236a57505050565b6000829050600084828151811061238357612383612e62565b60200260200101519050600084600161239c9190612c6a565b90505b838110156123ee57818682815181106123ba576123ba612e62565b602002602001015110156123de576123de86826123d686612dcd565b955085612421565b6123e781612dcd565b905061239f565b506123fa858584612421565b61240585858461235e565b61241a85612414846001612c6a565b8561235e565b5050505050565b82818151811061243357612433612e62565b602002602001015183838151811061244d5761244d612e62565b602002602001015184848151811061246757612467612e62565b6020026020010185848151811061248057612480612e62565b602090810291909101019190915252505050565b50805460008255906000526020600020908101906124b291906124b5565b50565b5b808211156124ca57600081556001016124b6565b5090565b600082601f8301126124df57600080fd5b815167ffffffffffffffff8111156124f9576124f9612e78565b602061250d601f8301601f19168201612c39565b828152858284870101111561252157600080fd5b60005b8381101561253f578581018301518282018401528201612524565b838111156125505760008385840101525b5095945050505050565b805169ffffffffffffffffffff8116811461257457600080fd5b919050565b60006020828403121561258b57600080fd5b813561259681612fae565b9392505050565b6000602082840312156125af57600080fd5b815161259681612fae565b6000806000606084860312156125cf57600080fd5b83356125da81612fae565b925060208401356125ea81612fae565b915060408401356125fa81612fae565b809150509250925092565b60006020828403121561261757600080fd5b813561259681612fc3565b600080600080600060a0868803121561263a57600080fd5b855167ffffffffffffffff8082111561265257600080fd5b61265e89838a016124ce565b9650602088015191508082111561267457600080fd5b50612681888289016124ce565b94505060408601519250606086015161269981612fae565b80925050608086015190509295509295909350565b6000604082840312156126c057600080fd5b6126c8612bed565b8251815260208301516126da81612fae565b60208201529392505050565b6000604082840312156126f857600080fd5b612700612bed565b82518152602083015160208201528091505092915050565b60006080828403121561272a57600080fd5b612732612c16565b825161273d81612fae565b80825250602083015160208201526040830151604082015260608301516004811061276757600080fd5b60608201529392505050565b60006080828403121561278557600080fd5b61278d612c16565b82518060070b811461279e57600080fd5b8152602083015167ffffffffffffffff811681146127bb57600080fd5b60208201526040830151600381900b81146127d557600080fd5b60408201526060928301519281019290925250919050565b6000602082840312156127ff57600080fd5b5035919050565b60006020828403121561281857600080fd5b5051919050565b60008060006040848603121561283457600080fd5b83359250602084013567ffffffffffffffff8082111561285357600080fd5b818601915086601f83011261286757600080fd5b81358181111561287657600080fd5b8760208260051b850101111561288b57600080fd5b6020830194508093505050509250925092565b600080604083850312156128b157600080fd5b823591506020830135600681106128c757600080fd5b809150509250929050565b6000808284036101208112156128e757600080fd5b83359250610100601f19820112156128fe57600080fd5b506020830190509250929050565b60008082840360e081121561292057600080fd5b8335925060c0601f19820112156128fe57600080fd5b6000806040838503121561294957600080fd5b50508035926020909101359150565b60008060006060848603121561296d57600080fd5b833592506020840135915060408401356125fa81612fc3565b600080600080600060a0868803121561299e57600080fd5b6129a78661255a565b94506020860151935060408601519250606086015191506129ca6080870161255a565b90509295509295909350565b6000602082840312156129e857600080fd5b815160ff8116811461259657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60068110612a3257612a32612e4c565b9052565b60208082528181018390526000906040600585901b8401810190840186845b87811015612ac457868403603f190183528135368a9003601e19018112612a7b57600080fd5b8901803567ffffffffffffffff811115612a9457600080fd5b8036038b1315612aa357600080fd5b612ab086828985016129f9565b955050509184019190840190600101612a55565b5091979650505050505050565b6020808252600c908201526b54524144494e475f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b815181526020808301516080830191612b3490840182612a22565b506040830151604083015260608301511515606083015292915050565b81516001600160a01b031681526020808301519082015260408083015190820152606082015161010082019060028110612b8d57612b8d612e4c565b806060840152506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b84815260808101612bd66020830186612a22565b836040830152821515606083015295945050505050565b6040805190810167ffffffffffffffff81118282101715612c1057612c10612e78565b60405290565b6040516080810167ffffffffffffffff81118282101715612c1057612c10612e78565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c6257612c62612e78565b604052919050565b60008219821115612c7d57612c7d612e20565b500190565b600082612c9157612c91612e36565b500490565b600181815b80851115612cd1578160001904821115612cb757612cb7612e20565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600061259663ffffffff841683612cf6565b600061259660ff8416835b600082612d0557506001610c93565b81612d1257506000610c93565b8160018114612d285760028114612d3257612d4e565b6001915050610c93565b60ff841115612d4357612d43612e20565b50506001821b610c93565b5060208310610133831016604e8410600b8410161715612d71575081810a610c93565b612d7b8383612c96565b8060001904821115612d8f57612d8f612e20565b029392505050565b6000816000190483118215151615612db157612db1612e20565b500290565b600082821015612dc857612dc8612e20565b500390565b6000600019821415612de157612de1612e20565b5060010190565b600082612df757612df7612e36565b500690565b60008160030b637fffffff19811415612e1757612e17612e20565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b60028210612ebe57612ebe612e4c565b60ff1981541660ff831681178255505050565b8135612edc81612fae565b612ee68183612e8e565b506020820135600182015560408201356002820155606082013560028110612f0d57600080fd5b612f1a8160038401612eae565b506080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b8135612f5281612fae565b612f5c8183612e8e565b50602082013560018201556040820135600282015560608201356003820155600481016080830135612f8d81612fc3565b60ff1982541660ff821515168117835550505060a082013560058201555050565b6001600160a01b03811681146124b257600080fd5b80151581146124b257600080fdfea26469706673582212202877d8a21ab0275c6cb8638d49dab81cc1e2badae44f3a97f854052cdf24681264736f6c63430008070033","sourceMap":"455:12825:105:-:0;;;1253:53;;;;;;;;;-1:-1:-1;1277:22:105;:20;:22::i;:::-;455:12825;;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:-;455:12825:105;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101405760003560e01c8063b21f4517116100b6578063d09ef2411161006f578063d09ef24114610424578063d1f6652e14610451578063da74d14a1461047e578063dd2f3c051461049e578063ee22fd6f146104b1578063f98d06f0146104d157600080fd5b8063b21f451714610364578063b8213bfa14610384578063c0a027f4146103a4578063c0c53b8b146103c4578063c61904a1146103e4578063cbe91bd91461040457600080fd5b80633a100f4d116101085780633a100f4d1461025a57806340e9eda21461027a57806361417a431461029a57806367288428146102ba57806393d7fe2c146102eb578063a85c38ef1461030b57600080fd5b8063166a073b1461014557806316fff074146101675780631e8ff50d146101a457806335b03c17146101c857806337a3dba3146101e8575b600080fd5b34801561015157600080fd5b506101656101603660046127ed565b6104f7565b005b34801561017357600080fd5b50600154610187906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b057600080fd5b506101ba60045481565b60405190815260200161019b565b3480156101d457600080fd5b50600254610187906001600160a01b031681565b3480156101f457600080fd5b506102086102033660046127ed565b6105f2565b60405161019b919081516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808083015115159082015260a0918201519181019190915260c00190565b34801561026657600080fd5b506101ba610275366004612958565b61069d565b34801561028657600080fd5b50610165610295366004612579565b610731565b3480156102a657600080fd5b506101656102b53660046127ed565b61089c565b3480156102c657600080fd5b506000546102db90600160b01b900460ff1681565b604051901515815260200161019b565b3480156102f757600080fd5b506101ba610306366004612936565b6109b5565b34801561031757600080fd5b506103546103263660046127ed565b6005602052600090815260409020805460018201546002830154600390930154919260ff9182169290911684565b60405161019b9493929190612bc2565b34801561037057600080fd5b50600354610187906001600160a01b031681565b34801561039057600080fd5b5061016561039f36600461290c565b6109e6565b3480156103b057600080fd5b506101ba6103bf36600461289e565b610abc565b3480156103d057600080fd5b506101656103df3660046125ba565b610c99565b3480156103f057600080fd5b506101656103ff3660046127ed565b610e2b565b34801561041057600080fd5b5061016561041f3660046128d2565b610f52565b34801561043057600080fd5b5061044461043f3660046127ed565b611022565b60405161019b9190612b19565b34801561045d57600080fd5b5061047161046c3660046127ed565b6110b9565b60405161019b9190612b51565b34801561048a57600080fd5b50610165610499366004612605565b6111a4565b6101656104ac36600461281f565b6112a7565b3480156104bd57600080fd5b506101656104cc366004612579565b6121c0565b3480156104dd57600080fd5b50600054610187906201000090046001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d919061259d565b6001600160a01b0316336001600160a01b0316146105b65760405162461bcd60e51b81526004016105ad90612af7565b60405180910390fd5b60048190556040518181527fb7116a6d2338b4af7895e72c37e89f941362a610ee8e3787ee4b3113aa51a747906020015b60405180910390a150565b6106366040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081525090565b50600090815260076020908152604091829020825160c08101845281546001600160a01b0316815260018201549281019290925260028101549282019290925260038201546060820152600482015460ff161515608082015260059091015460a082015290565b60025460405163fb3e519d60e01b8152600481018590526024810184905282151560448201526000916001600160a01b03169063fb3e519d9060640160206040518083038186803b1580156106f157600080fd5b505afa158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190612806565b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561077f57600080fd5b505afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b7919061259d565b6001600160a01b0316336001600160a01b0316146107e75760405162461bcd60e51b81526004016105ad90612af7565b6001600160a01b0381166108275760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b60448201526064016105ad565b600280546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b706169727353746f7261676560a01b606082015260208101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee44422781906080016105e7565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061259d565b6001600160a01b0316336001600160a01b0316146109725760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064016105ad565b600090815260076020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff1916905560050155565b600660205281600052604060002081815481106109d157600080fd5b90600052602060002001600091509150505481565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c919061259d565b6001600160a01b0316336001600160a01b031614610a9c5760405162461bcd60e51b81526004016105ad90612ad1565b60008281526007602052604090208190610ab68282612f47565b50505050565b60015460408051637622567960e11b815290516000926001600160a01b03169163ec44acf2916004808301926020929190829003018186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b39919061259d565b6001600160a01b0316336001600160a01b031614610b695760405162461bcd60e51b81526004016105ad90612ad1565b600254604051630c0be07f60e21b81526004810185905260009182916001600160a01b039091169063302f81fc90602401600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf09190810190612622565b945050935050506040518060800160405280868152602001856005811115610c1a57610c1a612e4c565b8152602080820185905260016040928301819052600085815260058084529390208451815591840151828201805493949193909260ff19909116918490811115610c6657610c66612e4c565b0217905550604082015160028201556060909101516003909101805460ff19169115159190911790559150505b92915050565b600054610100900460ff1615808015610cb95750600054600160ff909116105b80610cd35750303b158015610cd3575060005460ff166001145b610d365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ad565b6000805460ff191660011790558015610d59576000805461ff0019166101001790555b6001600160a01b038316610d9e5760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b60448201526064016105ad565b600280546001600160a01b038086166001600160a01b03199283161790925560038054858416908316179055600180549287169290911691909117905560786004558015610ab6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7857600080fd5b505afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb0919061259d565b6001600160a01b0316336001600160a01b031614610f015760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b60448201526064016105ad565b600090815260086020526040812080546001600160a01b0319168155600181018290556002810182905560038101805460ff1916905560048101829055600581018290556006810182905560070155565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd8919061259d565b6001600160a01b0316336001600160a01b0316146110085760405162461bcd60e51b81526004016105ad90612ad1565b60008281526008602052604090208190610ab68282612ed1565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526005602081815260409283902083516080810190945280548452600181015490929184019160ff9091169081111561108557611085612e4c565b600581111561109657611096612e4c565b81526002820154602082015260039091015460ff16151560409091015292915050565b61110160408051610100810182526000808252602082018190529181018290529060608201908152602001600081526020016000815260200160008152602001600081525090565b60008281526008602090815260409182902082516101008101845281546001600160a01b031681526001808301549382019390935260028201549381019390935260038101549091606084019160ff169081111561116157611161612e4c565b600181111561117257611172612e4c565b815260048201546020820152600582015460408201526006820154606082015260079091015460809091015292915050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f257600080fd5b505afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a919061259d565b6001600160a01b0316336001600160a01b03161461125a5760405162461bcd60e51b81526004016105ad90612af7565b60008054821515600160b01b0260ff60b01b199091161790556040517f5a3be68c2e82796ccb7eaec7f9aecf7cd941e6fc2d4298f6c4f101e924c15a47906105e790831515815260200190565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f557600080fd5b505afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d919061259d565b6001600160a01b0316336001600160a01b03161461135d5760405162461bcd60e51b81526004016105ad90612ad1565b6000838152600560205260409020600381015460ff1615610ab657600254815460405163685e905b60e01b815260009283926001600160a01b039091169163685e905b916113b19160040190815260200190565b604080518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140091906126ae565b6000878152600660205260408120905491925090600160b01b900460ff16801561144257506003600185015460ff16600581111561144057611440612e4c565b145b801561145a575060208201516001600160a01b031615155b156116805760015460405163363df41d60e11b8152600481018990526000916001600160a01b031690636c7be83a9060240160806040518083038186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190612718565b90506002816060015160038111156114f6576114f6612e4c565b141561167a57600083602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561154157600080fd5b505afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612986565b50935050925050426004548261158f9190612c6a565b10611676576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115cf57600080fd5b505afa1580156115e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160791906129d6565b61161290600a612ceb565b6116216402540be40085612d97565b61162b9190612c82565b8954604080518f8152602081019290925281018290529098508891507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c9060600160405180910390a1505b5050505b50611cd8565b600054600160b01b900460ff16611cd8576000805460405163d47eed4560e01b8152620100009091046001600160a01b03169063d47eed45906116c9908a908a90600401612a36565b60206040518083038186803b1580156116e157600080fd5b505afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190612806565b600054604051631df3cbc560e31b81529192506201000090046001600160a01b03169063ef9e5e28908390611754908b908b90600401612a36565b6000604051808303818588803b15801561176d57600080fd5b505af1158015611781573d6000803e3d6000fd5b50506000805460028a01546040516331d98b3f60e01b815260048101919091529194506201000090046001600160a01b031692506331d98b3f915060240160806040518083038186803b1580156117d757600080fd5b505afa1580156117eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180f9190612773565b9050600080826040015160030b131561189b57604082015161183290600a612cd9565b825161184e906402540be4009067ffffffffffffffff16612d97565b6118589190612d97565b95508160400151600a61186b9190612cd9565b6402540be400836020015167ffffffffffffffff1661188a9190612d97565b6118949190612d97565b9050611921565b81604001516118a990612dfc565b6118b490600a612cd9565b82516118d0906402540be4009067ffffffffffffffff16612d97565b6118da9190612c82565b955081604001516118ea90612dfc565b6118f590600a612cd9565b6402540be400836020015167ffffffffffffffff166119149190612d97565b61191e9190612c82565b90505b60025487546040516307aa801760e21b815260048101919091526000916001600160a01b031690631eaa005c90602401604080518083038186803b15801561196857600080fd5b505afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a091906126e6565b90506000871180156119d757508051876119bf6402540be40085612d97565b6119ca906064612d97565b6119d49190612c82565b11155b611a235760405162461bcd60e51b815260206004820152601860248201527f50524943455f444556494154494f4e5f544f4f5f48494748000000000000000060448201526064016105ad565b855115801590611a3f575060208601516001600160a01b031615155b15611cd357600086602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611a8957600080fd5b505afa158015611a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac19190612986565b509350509250504260045482611ad79190612c6a565b10611ccf576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1757600080fd5b505afa158015611b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4f91906129d6565b611b5a90600a612ceb565b611b696402540be40085612d97565b611b739190612c82565b90507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c8f8d6000015483604051611bbd939291909283526020830191909152604082015260600190565b60405180910390a18a811115611c495789518b6402540be400611be08285612db6565b611beb906064612d97565b611bf59190612d97565b611bff9190612c82565b1115611c495760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b60448201526064016105ad565b8a811015611ccd578951816402540be400611c64828f612db6565b611c6f906064612d97565b611c799190612d97565b611c839190612c82565b1115611ccd5760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b60448201526064016105ad565b505b5050505b505050505b805460018101825560008281526020908190209091018490558454604080518a81529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a18054156121b75760006040518060600160405280898152602001611da584805480602002602001604051908101604052809291908181526020018280548015611d9b57602002820191906000526020600020905b815481526020019060010190808311611d87575b50505050506122ce565b8152600254875460405163a1d54e9b60e01b81526020909301926001600160a01b039092169163a1d54e9b91611de19160040190815260200190565b60206040518083038186803b158015611df957600080fd5b505afa158015611e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e319190612806565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8557600080fd5b505afa158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd919061259d565b90506000600187015460ff166005811115611eda57611eda612e4c565b1415611f5a578151602083015160408085015190516376eb3fdf60e11b81526004810193909352602483019190915260448201526001600160a01b0382169063edd67fbe906064015b600060405180830381600087803b158015611f3d57600080fd5b505af1158015611f51573d6000803e3d6000fd5b5050505061216e565b60018087015460ff166005811115611f7457611f74612e4c565b1415611fc15781516020830151604080850151905163fa7227e960e01b81526004810193909352602483019190915260448201526001600160a01b0382169063fa7227e990606401611f23565b6002600187015460ff166005811115611fdc57611fdc612e4c565b1415612029578151602083015160408085015190516342be1f8f60e11b81526004810193909352602483019190915260448201526001600160a01b0382169063857c3f1e90606401611f23565b6003600187015460ff16600581111561204457612044612e4c565b14156120915781516020830151604080850151905163b225047160e01b81526004810193909352602483019190915260448201526001600160a01b0382169063b225047190606401611f23565b6004600187015460ff1660058111156120ac576120ac612e4c565b14156120f957815160208301516040808501519051630407df4b60e31b81526004810193909352602483019190915260448201526001600160a01b0382169063203efa5890606401611f23565b81516020830151604080850151905163da0870e760e01b81526004810193909352602483019190915260448201526001600160a01b0382169063da0870e790606401600060405180830381600087803b15801561215557600080fd5b505af1158015612169573d6000803e3d6000fd5b505050505b600089815260056020908152604080832083815560018101805460ff1990811690915560028201859055600390910180549091169055600690915281206121b491612494565b50505b50505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561220e57600080fd5b505afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612246919061259d565b6001600160a01b0316336001600160a01b0316146122765760405162461bcd60e51b81526004016105ad90612af7565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527fc0377667bd059a05c5d852537639c6099198490d6e89d187764aff179ffec748906020016105e7565b60006122dd826000845161235e565b600282516122eb9190612de8565b15612314578160018351901c8151811061230757612307612e62565b6020026020010151610c93565b60018260018451901c8151811061232d5761232d612e62565b602090810291909101015183518490612344612e62565b60200260200101516123569190612c6a565b901c92915050565b80821061236a57505050565b6000829050600084828151811061238357612383612e62565b60200260200101519050600084600161239c9190612c6a565b90505b838110156123ee57818682815181106123ba576123ba612e62565b602002602001015110156123de576123de86826123d686612dcd565b955085612421565b6123e781612dcd565b905061239f565b506123fa858584612421565b61240585858461235e565b61241a85612414846001612c6a565b8561235e565b5050505050565b82818151811061243357612433612e62565b602002602001015183838151811061244d5761244d612e62565b602002602001015184848151811061246757612467612e62565b6020026020010185848151811061248057612480612e62565b602090810291909101019190915252505050565b50805460008255906000526020600020908101906124b291906124b5565b50565b5b808211156124ca57600081556001016124b6565b5090565b600082601f8301126124df57600080fd5b815167ffffffffffffffff8111156124f9576124f9612e78565b602061250d601f8301601f19168201612c39565b828152858284870101111561252157600080fd5b60005b8381101561253f578581018301518282018401528201612524565b838111156125505760008385840101525b5095945050505050565b805169ffffffffffffffffffff8116811461257457600080fd5b919050565b60006020828403121561258b57600080fd5b813561259681612fae565b9392505050565b6000602082840312156125af57600080fd5b815161259681612fae565b6000806000606084860312156125cf57600080fd5b83356125da81612fae565b925060208401356125ea81612fae565b915060408401356125fa81612fae565b809150509250925092565b60006020828403121561261757600080fd5b813561259681612fc3565b600080600080600060a0868803121561263a57600080fd5b855167ffffffffffffffff8082111561265257600080fd5b61265e89838a016124ce565b9650602088015191508082111561267457600080fd5b50612681888289016124ce565b94505060408601519250606086015161269981612fae565b80925050608086015190509295509295909350565b6000604082840312156126c057600080fd5b6126c8612bed565b8251815260208301516126da81612fae565b60208201529392505050565b6000604082840312156126f857600080fd5b612700612bed565b82518152602083015160208201528091505092915050565b60006080828403121561272a57600080fd5b612732612c16565b825161273d81612fae565b80825250602083015160208201526040830151604082015260608301516004811061276757600080fd5b60608201529392505050565b60006080828403121561278557600080fd5b61278d612c16565b82518060070b811461279e57600080fd5b8152602083015167ffffffffffffffff811681146127bb57600080fd5b60208201526040830151600381900b81146127d557600080fd5b60408201526060928301519281019290925250919050565b6000602082840312156127ff57600080fd5b5035919050565b60006020828403121561281857600080fd5b5051919050565b60008060006040848603121561283457600080fd5b83359250602084013567ffffffffffffffff8082111561285357600080fd5b818601915086601f83011261286757600080fd5b81358181111561287657600080fd5b8760208260051b850101111561288b57600080fd5b6020830194508093505050509250925092565b600080604083850312156128b157600080fd5b823591506020830135600681106128c757600080fd5b809150509250929050565b6000808284036101208112156128e757600080fd5b83359250610100601f19820112156128fe57600080fd5b506020830190509250929050565b60008082840360e081121561292057600080fd5b8335925060c0601f19820112156128fe57600080fd5b6000806040838503121561294957600080fd5b50508035926020909101359150565b60008060006060848603121561296d57600080fd5b833592506020840135915060408401356125fa81612fc3565b600080600080600060a0868803121561299e57600080fd5b6129a78661255a565b94506020860151935060408601519250606086015191506129ca6080870161255a565b90509295509295909350565b6000602082840312156129e857600080fd5b815160ff8116811461259657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60068110612a3257612a32612e4c565b9052565b60208082528181018390526000906040600585901b8401810190840186845b87811015612ac457868403603f190183528135368a9003601e19018112612a7b57600080fd5b8901803567ffffffffffffffff811115612a9457600080fd5b8036038b1315612aa357600080fd5b612ab086828985016129f9565b955050509184019190840190600101612a55565b5091979650505050505050565b6020808252600c908201526b54524144494e475f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b815181526020808301516080830191612b3490840182612a22565b506040830151604083015260608301511515606083015292915050565b81516001600160a01b031681526020808301519082015260408083015190820152606082015161010082019060028110612b8d57612b8d612e4c565b806060840152506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b84815260808101612bd66020830186612a22565b836040830152821515606083015295945050505050565b6040805190810167ffffffffffffffff81118282101715612c1057612c10612e78565b60405290565b6040516080810167ffffffffffffffff81118282101715612c1057612c10612e78565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c6257612c62612e78565b604052919050565b60008219821115612c7d57612c7d612e20565b500190565b600082612c9157612c91612e36565b500490565b600181815b80851115612cd1578160001904821115612cb757612cb7612e20565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600061259663ffffffff841683612cf6565b600061259660ff8416835b600082612d0557506001610c93565b81612d1257506000610c93565b8160018114612d285760028114612d3257612d4e565b6001915050610c93565b60ff841115612d4357612d43612e20565b50506001821b610c93565b5060208310610133831016604e8410600b8410161715612d71575081810a610c93565b612d7b8383612c96565b8060001904821115612d8f57612d8f612e20565b029392505050565b6000816000190483118215151615612db157612db1612e20565b500290565b600082821015612dc857612dc8612e20565b500390565b6000600019821415612de157612de1612e20565b5060010190565b600082612df757612df7612e36565b500690565b60008160030b637fffffff19811415612e1757612e17612e20565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b60028210612ebe57612ebe612e4c565b60ff1981541660ff831681178255505050565b8135612edc81612fae565b612ee68183612e8e565b506020820135600182015560408201356002820155606082013560028110612f0d57600080fd5b612f1a8160038401612eae565b506080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b8135612f5281612fae565b612f5c8183612e8e565b50602082013560018201556040820135600282015560608201356003820155600481016080830135612f8d81612fc3565b60ff1982541660ff821515168117835550505060a082013560058201555050565b6001600160a01b03811681146124b257600080fd5b80151581146124b257600080fdfea26469706673582212202877d8a21ab0275c6cb8638d49dab81cc1e2badae44f3a97f854052cdf24681264736f6c63430008070033","sourceMap":"455:12825:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:177;;;;;;;;;;-1:-1:-1;3047:177:105;;;;;:::i;:::-;;:::i;:::-;;623:31;;;;;;;;;;-1:-1:-1;623:31:105;;;;-1:-1:-1;;;;;623:31:105;;;;;;-1:-1:-1;;;;;9268:32:150;;;;9250:51;;9238:2;9223:18;623:31:105;;;;;;;;748:35;;;;;;;;;;;;;;;;;;;10845:25:150;;;10833:2;10818:18;748:35:105;10699:177:150;660:41:105;;;;;;;;;;-1:-1:-1;660:41:105;;;;-1:-1:-1;;;;;660:41:105;;;10553:134;;;;;;;;;;-1:-1:-1;10553:134:105;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10657:23:105;;;:16;:23;;;;;;10650:30;;;;;;;;;-1:-1:-1;;;;;10650:30:105;;;-1:-1:-1;10650:30:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10553:134;;;;;16815:13:150;;-1:-1:-1;;;;;16811:39:150;16793:58;;16907:4;16895:17;;;16889:24;16867:20;;;16860:54;16958:17;;;16952:24;16930:20;;;16923:54;;;;17033:4;17021:17;;;17015:24;16993:20;;;16986:54;17110:4;17098:17;;;17092:24;17085:32;17078:40;17056:20;;;17049:70;-1:-1:-1;17163:17:150;;;17157:24;17135:20;;;17128:54;;;;16780:3;16765:19;10553:134:105;16590:598:150;11383:204:105;;;;;;;;;;-1:-1:-1;11383:204:105;;;;;:::i;:::-;;:::i;2088:262::-;;;;;;;;;;-1:-1:-1;2088:262:105;;;;;:::i;:::-;;:::i;9820:186::-;;;;;;;;;;-1:-1:-1;9820:186:105;;;;;:::i;:::-;;:::i;591:25::-;;;;;;;;;;-1:-1:-1;591:25:105;;;;-1:-1:-1;;;591:25:105;;;;;;;;;10672:14:150;;10665:22;10647:41;;10635:2;10620:18;591:25:105;10507:187:150;832:44:105;;;;;;;;;;-1:-1:-1;832:44:105;;;;;:::i;:::-;;:::i;790:36::-;;;;;;;;;;-1:-1:-1;790:36:105;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;707:35::-;;;;;;;;;;-1:-1:-1;707:35:105;;;;-1:-1:-1;;;;;707:35:105;;;9149:141;;;;;;;;;;-1:-1:-1;9149:141:105;;;;;:::i;:::-;;:::i;3480:280::-;;;;;;;;;;-1:-1:-1;3480:280:105;;;;;:::i;:::-;;:::i;1558:372::-;;;;;;;;;;-1:-1:-1;1558:372:105;;;;;:::i;:::-;;:::i;10138:206::-;;;;;;;;;;-1:-1:-1;10138:206:105;;;;;:::i;:::-;;:::i;9516:171::-;;;;;;;;;;-1:-1:-1;9516:171:105;;;;;:::i;:::-;;:::i;11649:107::-;;;;;;;;;;-1:-1:-1;11649:107:105;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10919:164::-;;;;;;;;;;-1:-1:-1;10919:164:105;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2797:137::-;;;;;;;;;;-1:-1:-1;2797:137:105;;;;;:::i;:::-;;:::i;4001:4932::-;;;;;;:::i;:::-;;:::i;2484:139::-;;;;;;;;;;-1:-1:-1;2484:139:105;;;;;:::i;:::-;;:::i;568:17::-;;;;;;;;;;-1:-1:-1;568:17:105;;;;;;;-1:-1:-1;;;;;568:17:105;;;3047:177;1085:8;;:14;;;-1:-1:-1;;;1085:14:105;;;;-1:-1:-1;;;;;1085:8:105;;;;-1:-1:-1;;1085:14:105;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:105;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:105;;14782:2:150;1063:49:105;;;14764:21:150;14821:1;14801:18;;;14794:29;-1:-1:-1;;;14839:18:150;;;14832:38;14887:18;;1063:49:105;;;;;;;;;3127:23:::1;:36:::0;;;3179:38:::1;::::0;10845:25:150;;;3179:38:105::1;::::0;10833:2:150;10818:18;3179:38:105::1;;;;;;;;3047:177:::0;:::o;11383:204::-;11513:12;;:67;;-1:-1:-1;;;11513:67:105;;;;;18009:25:150;;;18050:18;;;18043:34;;;18120:14;;18113:22;18093:18;;;18086:50;11490:4:105;;-1:-1:-1;;;;;11513:12:105;;:25;;17982:18:150;;11513:67:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11506:74;11383:204;-1:-1:-1;;;;11383:204:105:o;2088:262::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:105;;;;-1:-1:-1;;;;;1085:8:105;;;;-1:-1:-1;;1085:14:105;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:105;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:105;;14782:2:150;1063:49:105;;;14764:21:150;14821:1;14801:18;;;14794:29;-1:-1:-1;;;14839:18:150;;;14832:38;14887:18;;1063:49:105;14580:331:150;1063:49:105;-1:-1:-1;;;;;2174:36:105;::::1;2166:56;;;::::0;-1:-1:-1;;;2166:56:105;;15118:2:150;2166:56:105::1;::::0;::::1;15100:21:150::0;15157:1;15137:18;;;15130:29;-1:-1:-1;;;15175:18:150;;;15168:37;15222:18;;2166:56:105::1;14916:330:150::0;2166:56:105::1;2232:12;:42:::0;;-1:-1:-1;;;;;;2232:42:105::1;-1:-1:-1::0;;;;;2232:42:105;::::1;::::0;;::::1;::::0;;;2289:54:::1;::::0;;13998:21:150;;;14055:2;14035:18;;;14028:30;;;;-1:-1:-1;;;14089:2:150;14074:18;;14067:42;14176:4;14161:20;;14154:62;;;;2289:54:105::1;::::0;14141:3:150;14126:19;2289:54:105::1;13786:436:150::0;9820:186:105;9918:8;;:20;;;-1:-1:-1;;;9918:20:105;;;;-1:-1:-1;;;;;9918:8:105;;;;-1:-1:-1;;9918:20:105;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9904:34:105;:10;:34;9896:61;;;;-1:-1:-1;;;9896:61:105;;12194:2:150;9896:61:105;;;12176:21:150;12233:2;12213:18;;;12206:30;-1:-1:-1;;;12252:18:150;;;12245:44;12306:18;;9896:61:105;11992:338:150;9896:61:105;9974:25;;;;:16;:25;;;;;9967:32;;-1:-1:-1;;;;;;9967:32:105;;;-1:-1:-1;9967:32:105;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9967:32:105;;;;;;9820:186::o;832:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9149:141::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:105;;;;-1:-1:-1;;;;;1190:8:105;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:105;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:105;;12537:2:150;1168:57:105;;;12519:21:150;12576:2;12556:18;;;12549:30;-1:-1:-1;;;12595:18:150;;;12588:42;12647:18;;1168:57:105;12335:336:150;1168:57:105;9254:25:::1;::::0;;;:16:::1;:25;::::0;;;;9282:1;;9254:29:::1;9282:1:::0;9254:25;:29:::1;:::i;:::-;-1:-1:-1::0;;;;9149:141:105:o;3480:280::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:105;;;;3576:4;;-1:-1:-1;;;;;1190:8:105;;:16;;:18;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:105;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:105;;12537:2:150;1168:57:105;;;12519:21:150;12576:2;12556:18;;;12549:30;-1:-1:-1;;;12595:18:150;;;12588:42;12647:18;;1168:57:105;12335:336:150;1168:57:105;3628:12:::1;::::0;:32:::1;::::0;-1:-1:-1;;;3628:32:105;;::::1;::::0;::::1;10845:25:150::0;;;3597:11:105::1;::::0;;;-1:-1:-1;;;;;3628:12:105;;::::1;::::0;:20:::1;::::0;10818:18:150;;3628:32:105::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;3628:32:105::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;3592:68;;;;;;;3689:40;;;;;;;;3695:10;3689:40;;;;3707:10;3689:40;;;;;;;;:::i;:::-;::::0;;::::1;::::0;;::::1;::::0;;;3724:4:::1;3689:40:::0;;;;;;;-1:-1:-1;3671:15:105;;;:6:::1;:15:::0;;;;;;:58;;;;;;::::1;::::0;;;::::1;::::0;;:15;;:58;;;;-1:-1:-1;;3671:58:105;;::::1;::::0;;;;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;3671:58:105::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;3671:58:105::1;::::0;::::1;;::::0;;;::::1;::::0;;3746:7;-1:-1:-1;;1235:1:105::1;3480:280:::0;;;;:::o;1558:372::-;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;;12878:2:150;3325:201:24;;;12860:21:150;12917:2;12897:18;;;12890:30;12956:34;12936:18;;;12929:62;-1:-1:-1;;;13007:18:150;;;13000:44;13061:19;;3325:201:24;12676: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;-1:-1:-1;;;;;1680:36:105;::::1;1672:61;;;::::0;-1:-1:-1;;;1672:61:105;;13293:2:150;1672:61:105::1;::::0;::::1;13275:21:150::0;13332:2;13312:18;;;13305:30;-1:-1:-1;;;13351:18:150;;;13344:42;13403:18;;1672:61:105::1;13091:336:150::0;1672:61:105::1;1744:12;:42:::0;;-1:-1:-1;;;;;1744:42:105;;::::1;-1:-1:-1::0;;;;;;1744:42:105;;::::1;;::::0;;;1796:10:::1;:34:::0;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;1840:37:105;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;1913:9:::1;1887:23;:35:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;11945:36:150;;3721:14:24;;11933:2:150;11918:18;3721:14:24;;;;;;;3269:483;1558:372:105;;;:::o;10138:206::-;10246:8;;:20;;;-1:-1:-1;;;10246:20:105;;;;-1:-1:-1;;;;;10246:8:105;;;;-1:-1:-1;;10246:20:105;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10232:34:105;:10;:34;10224:61;;;;-1:-1:-1;;;10224:61:105;;12194:2:150;10224:61:105;;;12176:21:150;12233:2;12213:18;;;12206:30;-1:-1:-1;;;12252:18:150;;;12245:44;12306:18;;10224:61:105;11992:338:150;10224:61:105;10302:35;;;;:26;:35;;;;;10295:42;;-1:-1:-1;;;;;;10295:42:105;;;-1:-1:-1;10295:42:105;;;;;;;;;;;;;;;;-1:-1:-1;;10295:42:105;;;;;;;;;;;;;;;;;;;;;;;;10138:206::o;9516:171::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:105;;;;-1:-1:-1;;;;;1190:8:105;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:105;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:105;;12537:2:150;1168:57:105;;;12519:21:150;12576:2;12556:18;;;12549:30;-1:-1:-1;;;12595:18:150;;;12588:42;12647:18;;1168:57:105;12335:336:150;1168:57:105;9641:35:::1;::::0;;;:26:::1;:35;::::0;;;;9679:1;;9641:39:::1;9679:1:::0;9641:35;:39:::1;:::i;11649:107::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11738:11:105;;;;:6;:11;;;;;;;;;11731:18;;;;;;;;;;;;;;;;11738:11;;11731:18;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;11649:107;-1:-1:-1;;11649:107:105:o;10919:164::-;10998:26;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10998:26:105;11043:33;;;;:26;:33;;;;;;;;;11036:40;;;;;;;;;-1:-1:-1;;;;;11036:40:105;;;-1:-1:-1;11036:40:105;;;;;;;;;;;;;;;;;;;;;;;;;;11043:33;;11036:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10919:164;-1:-1:-1;;10919:164:105:o;2797:137::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:105;;;;-1:-1:-1;;;;;1085:8:105;;;;-1:-1:-1;;1085:14:105;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:105;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:105;;14782:2:150;1063:49:105;;;14764:21:150;14821:1;14801:18;;;14794:29;-1:-1:-1;;;14839:18:150;;;14832:38;14887:18;;1063:49:105;14580:331:150;1063:49:105;2866:13:::1;:22:::0;;-1:-1:-1;;;;2866:22:105::1;-1:-1:-1::0;;;2866:22:105;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;2904:23:::1;::::0;10647:41:150;;;2904:23:105::1;::::0;10635:2:150;10620:18;2904:23:105::1;10507:187:150::0;4001:4932:105;1190:8;;:18;;;-1:-1:-1;;;1190:18:105;;;;-1:-1:-1;;;;;1190:8:105;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:105;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:105;;12537:2:150;1168:57:105;;;12519:21:150;12576:2;12556:18;;;12549:30;-1:-1:-1;;;12595:18:150;;;12588:42;12647:18;;1168:57:105;12335:336:150;1168:57:105;4114:15:::1;4132::::0;;;:6:::1;:15;::::0;;;;4162:11:::1;::::0;::::1;::::0;::::1;;4158:4769;;;4258:12;::::0;4286:11;;4258:40:::1;::::0;;-1:-1:-1;;;4258:40:105;;::::1;::::0;::::1;10845:25:150::0;;;;4258:40:105;;-1:-1:-1;;;;;;;;;4258:12:105;;::::1;::::0;-1:-1:-1;;10818:18:150;;;;;4258:40:105;;;;;:12;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4312:22;4337::::0;;;:13:::1;:22;::::0;;;;4376:13;;4214:84;;-1:-1:-1;4337:22:105;-1:-1:-1;;;4376:13:105;::::1;;;:53:::0;::::1;;;-1:-1:-1::0;4408:21:105::1;4393:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;4376:53;:88;;;;-1:-1:-1::0;4433:17:105::1;::::0;::::1;::::0;-1:-1:-1;;;;;4433:31:105::1;::::0;::::1;4376:88;4373:3168;;;4528:8;::::0;:40:::1;::::0;-1:-1:-1;;;4528:40:105;;::::1;::::0;::::1;10845:25:150::0;;;4483:42:105::1;::::0;-1:-1:-1;;;;;4528:8:105::1;::::0;:31:::1;::::0;10818:18:150;;4528:40:105::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4483:85:::0;-1:-1:-1;4604:30:105::1;4589:1;:11;;;:45;;;;;;;;:::i;:::-;;4586:727;;;4743:37;4807:10;:17;;;4743:82;;4850:17;4870:14:::0;4891:13:::1;-1:-1:-1::0;;;;;4891:29:105::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4847:75;;;;;;;5019:15;4992:23;;4980:9;:35;;;;:::i;:::-;:54;4977:318;;5061:12;5125:13;-1:-1:-1::0;;;;;5125:22:105::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5113:37;::::0;:2:::1;:37;:::i;:::-;5077:32;557:4;5085:10:::0;5077:32:::1;:::i;:::-;5076:74;;;;:::i;:::-;5251:11:::0;;5222:50:::1;::::0;;18349:25:150;;;18405:2;18390:18;;18383:34;;;;18433:18;;18426:34;;;5061:89:105;;-1:-1:-1;5061:89:105;;-1:-1:-1;5222:50:105::1;::::0;18337:2:150;18322:18;5222:50:105::1;;;;;;;5035:260;4977:318;4635:678;;;4586:727;4465:862;4373:3168;;;5349:13;::::0;-1:-1:-1;;;5349:13:105;::::1;;;5345:2196;;5381:8;5392:4:::0;;:34:::1;::::0;-1:-1:-1;;;5392:34:105;;:4;;;::::1;-1:-1:-1::0;;;;;5392:4:105::1;::::0;-1:-1:-1;;5392:34:105::1;::::0;5410:15;;;;5392:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5444:4;::::0;:50:::1;::::0;-1:-1:-1;;;5444:50:105;;5381:45;;-1:-1:-1;5444:4:105;;::::1;-1:-1:-1::0;;;;;5444:4:105::1;::::0;:21:::1;::::0;5381:45;;5444:50:::1;::::0;5478:15;;;;5444:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5513:34:105::1;5550:4:::0;;::::1;5564:5:::0;::::1;::::0;5550:20:::1;::::0;-1:-1:-1;;;5550:20:105;;::::1;::::0;::::1;10845:25:150::0;;;;5513:34:105;;-1:-1:-1;5550:4:105;;::::1;-1:-1:-1::0;;;;;5550:4:105::1;::::0;-1:-1:-1;5550:13:105::1;::::0;-1:-1:-1;10818:18:150;;5550:20:105::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5513:57;;5588:9;5636:1:::0;5619:9:::1;:14;;;:18;;;5615:442;;;5721:14;::::0;::::1;::::0;5708:28:::1;::::0;:2:::1;:28;:::i;:::-;5676:15:::0;;5669:36:::1;::::0;557:4:::1;::::0;5669:36:::1;;;:::i;:::-;:67;;;;:::i;:::-;5661:75;;5808:9;:14;;;5795:2;:28;;;;:::i;:::-;557:4;5765:9;:14;;;:27;;;;;;:::i;:::-;:58;;;;:::i;:::-;5758:65;;5615:442;;;5933:9;:14;;;5932:15;;;:::i;:::-;5919:29;::::0;:2:::1;:29;:::i;:::-;5886:15:::0;;5879:36:::1;::::0;557:4:::1;::::0;5879:36:::1;;;:::i;:::-;5878:70;;;;:::i;:::-;5870:78;;6023:9;:14;;;6022:15;;;:::i;:::-;6009:29;::::0;:2:::1;:29;:::i;:::-;557:4;5978:9;:14;;;:27;;;;;;:::i;:::-;5977:61;;;;:::i;:::-;5970:68;;5615:442;6104:12;::::0;6126:11;;6104:34:::1;::::0;-1:-1:-1;;;6104:34:105;;::::1;::::0;::::1;10845:25:150::0;;;;6075:26:105::1;::::0;-1:-1:-1;;;;;6104:12:105::1;::::0;:21:::1;::::0;10818:18:150;;6104:34:105::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6075:63;;6174:1;6166:5;:9;:67;;;;-1:-1:-1::0;6218:15:105;;6208:5;6181:17:::1;557:4;6181::::0;:17:::1;:::i;:::-;:23;::::0;6201:3:::1;6181:23;:::i;:::-;6180:33;;;;:::i;:::-;6179:54;;6166:67;6158:104;;;::::0;-1:-1:-1;;;6158:104:105;;14429:2:150;6158:104:105::1;::::0;::::1;14411:21:150::0;14468:2;14448:18;;;14441:30;14507:26;14487:18;;;14480:54;14551:18;;6158:104:105::1;14227:348:150::0;6158:104:105::1;6285:24:::0;;:28;;;;:63:::1;;-1:-1:-1::0;6317:17:105::1;::::0;::::1;::::0;-1:-1:-1;;;;;6317:31:105::1;::::0;::::1;6285:63;6281:1246;;;6372:37;6436:10;:17;;;6372:82;;6479:17;6500:14:::0;6521:13:::1;-1:-1:-1::0;;;;;6521:29:105::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6476:76;;;;;;;6649:15;6622:23;;6610:9;:35;;;;:::i;:::-;:54;6607:902;;6691:12;6755:13;-1:-1:-1::0;;;;;6755:22:105::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6743:37;::::0;:2:::1;:37;:::i;:::-;6707:32;557:4;6715:10:::0;6707:32:::1;:::i;:::-;6706:74;;;;:::i;:::-;6691:89;;6811:50;6831:7;6840:1;:11;;;6853:7;6811:50;;;;;;;18349:25:150::0;;;18405:2;18390:18;;18383:34;;;;18448:2;18433:18;;18426:34;18337:2;18322:18;;18147:319;6811:50:105::1;;;;;;;;6902:5;6892:7;:15;6888:286;;;7032:24:::0;;7022:5;557:4:::1;6983:15;7022:5:::0;6983:7;:15:::1;:::i;:::-;6982:23;::::0;7002:3:::1;6982:23;:::i;:::-;:36;;;;:::i;:::-;6981:46;;;;:::i;:::-;6980:76;;6939:208;;;::::0;-1:-1:-1;;;6939:208:105;;13634:2:150;6939:208:105::1;::::0;::::1;13616:21:150::0;13673:2;13653:18;;;13646:30;-1:-1:-1;;;13692:18:150;;;13685:55;13757:18;;6939:208:105::1;13432:349:150::0;6939:208:105::1;7213:5;7203:7;:15;7199:288;;;7345:24:::0;;7333:7;557:4:::1;7294:15;7333:7:::0;7294:5;:15:::1;:::i;:::-;7293:23;::::0;7313:3:::1;7293:23;:::i;:::-;:36;;;;:::i;:::-;7292:48;;;;:::i;:::-;7291:78;;7250:210;;;::::0;-1:-1:-1;;;7250:210:105;;13634:2:150;7250:210:105::1;::::0;::::1;13616:21:150::0;13673:2;13653:18;;;13646:30;-1:-1:-1;;;13692:18:150;;;13685:55;13757:18;;7250:210:105::1;13432:349:150::0;7250:210:105::1;6665:844;6607:902;6350:1177;;;6281:1246;5363:2178;;;;5345:2196;7555:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;7555:19:105;;;::::1;::::0;;;;;;::::1;::::0;;;7616:11;;7593:42:::1;::::0;;18349:25:150;;;18390:18;;;18383:34;;;;18433:18;;18426:34;;;7593:42:105::1;::::0;18337:2:150;18322:18;7593:42:105::1;;;;;;;7654:14:::0;;:18;7650:1267:::1;;7692:36;7731:171;;;;;;;;7780:7;7731:171;;;;7809:16;7817:7;7809:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:16::i;:::-;7731:171:::0;;7847:12:::1;::::0;7872:11;;7847:37:::1;::::0;;-1:-1:-1;;;7847:37:105;;::::1;::::0;::::1;10845:25:150::0;;;;7847:37:105;7731:171:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;7847:12:105;;::::1;::::0;-1:-1:-1;;10818:18:150;;;;;7847:37:105;;;;;;:12;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7731:171:::0;;7947:8:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;7947:20:105;;;;7692:210;;-1:-1:-1;7921:12:105::1;::::0;-1:-1:-1;;;;;7947:8:105;;::::1;::::0;-1:-1:-1;;7947:20:105::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7921:47:::0;-1:-1:-1;8006:21:105::1;7991:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;7987:828;;;8077:9:::0;;8088:7:::1;::::0;::::1;::::0;8097:9:::1;::::0;;::::1;::::0;8051:56;;-1:-1:-1;;;8051:56:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8051:25:105;::::1;::::0;::::1;::::0;18322:18:150;;8051:56:105::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7987:828;;;8151:22;8136:11:::0;;::::1;::::0;::::1;;:37;::::0;::::1;;;;;;:::i;:::-;;8132:683;;;8224:9:::0;;8235:7:::1;::::0;::::1;::::0;8244:9:::1;::::0;;::::1;::::0;8197:57;;-1:-1:-1;;;8197:57:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8197:26:105;::::1;::::0;-1:-1:-1;;18322:18:150;;8197:57:105::1;18147:319:150::0;8132:683:105::1;8298:20;8283:11;::::0;::::1;::::0;::::1;;:35;::::0;::::1;;;;;;:::i;:::-;;8279:536;;;8374:9:::0;;8385:7:::1;::::0;::::1;::::0;8394:9:::1;::::0;;::::1;::::0;8342:62;;-1:-1:-1;;;8342:62:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8342:31:105;::::1;::::0;::::1;::::0;18322:18:150;;8342:62:105::1;18147:319:150::0;8279:536:105::1;8448:21;8433:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;8429:386;;;8526:9:::0;;8537:7:::1;::::0;::::1;::::0;8546:9:::1;::::0;;::::1;::::0;8493:63;;-1:-1:-1;;;8493:63:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8493:32:105;::::1;::::0;-1:-1:-1;;18322:18:150;;8493:63:105::1;18147:319:150::0;8429:386:105::1;8600:23;8585:11;::::0;::::1;::::0;::::1;;:38;::::0;::::1;;;;;;:::i;:::-;;8581:234;;;8670:9:::0;;8681:7:::1;::::0;::::1;::::0;8690:9:::1;::::0;;::::1;::::0;8647:53;;-1:-1:-1;;;8647:53:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8647:22:105;::::1;::::0;::::1;::::0;18322:18:150;;8647:53:105::1;18147:319:150::0;8581:234:105::1;8766:9:::0;;8777:7:::1;::::0;::::1;::::0;8786:9:::1;::::0;;::::1;::::0;8747:49;;-1:-1:-1;;;8747:49:105;;::::1;::::0;::::1;18349:25:150::0;;;;18390:18;;;18383:34;;;;18433:18;;;18426:34;-1:-1:-1;;;;;8747:18:105;::::1;::::0;::::1;::::0;18322::150;;8747:49:105::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8581:234;8840:15;::::0;;;:6:::1;:15;::::0;;;;;;;8833:22;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;8833:22:105;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;8880:13:::1;:22:::0;;;;;8873:29:::1;::::0;::::1;:::i;:::-;7674:1243;;7650:1267;4175:4752;;;4104:4829;4001:4932:::0;;;:::o;2484:139::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:105;;;;-1:-1:-1;;;;;1085:8:105;;;;-1:-1:-1;;1085:14:105;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:105;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:105;;14782:2:150;1063:49:105;;;14764:21:150;14821:1;14801:18;;;14794:29;-1:-1:-1;;;14839:18:150;;;14832:38;14887:18;;1063:49:105;14580:331:150;1063:49:105;2550:4:::1;:26:::0;;-1:-1:-1;;;;;;2550:26:105::1;-1:-1:-1::0;;;;;;2550:26:105;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2591:25:::1;::::0;9250:51:150;;;2591:25:105::1;::::0;9238:2:150;9223:18;2591:25:105::1;9104:203:150::0;12991:286:105;13051:4;13067:29;13073:5;13080:1;13083:5;:12;13067:5;:29::i;:::-;13140:1;13125:5;:12;:16;;;;:::i;:::-;:21;:145;;13246:5;13268:1;13252:5;:12;:17;;13246:24;;;;;;;;:::i;:::-;;;;;;;13125:145;;;13226:1;13197:5;13219:1;13203:5;:12;:17;;13197:24;;;;;;;;:::i;:::-;;;;;;;;;;;13172:12;;13166:5;;:28;;:::i;:::-;;;;;;;:55;;;;:::i;:::-;13165:62;;13106:164;12991:286;-1:-1:-1;;12991:286:105:o;12387:436::-;12481:3;12472:5;:12;12468:49;;12387:436;;;:::o;12468:49::-;12526:6;12535:5;12526:14;;12550:10;12563:5;12569:1;12563:8;;;;;;;;:::i;:::-;;;;;;;12550:21;;12586:6;12595:5;12603:1;12595:9;;;;:::i;:::-;12586:18;;12581:138;12610:3;12606:1;:7;12581:138;;;12649:5;12638;12644:1;12638:8;;;;;;;;:::i;:::-;;;;;;;:16;12634:75;;;12674:20;12680:5;12687:1;12690:3;;;:::i;:::-;;;;12674:5;:20::i;:::-;12615:3;;;:::i;:::-;;;12581:138;;;;12728:22;12734:5;12741;12748:1;12728:5;:22::i;:::-;12760;12766:5;12773;12780:1;12760:5;:22::i;:::-;12792:24;12798:5;12805;:1;12809;12805:5;:::i;:::-;12812:3;12792:5;:24::i;:::-;12458:365;;12387:436;;;:::o;12021:125::-;12120:5;12126:1;12120:8;;;;;;;;:::i;:::-;;;;;;;12130:5;12136:1;12130:8;;;;;;;;:::i;:::-;;;;;;;12097:5;12103:1;12097:8;;;;;;;;:::i;:::-;;;;;;12107:5;12113:1;12107:8;;;;;;;;:::i;:::-;;;;;;;;;;12096:43;;;;;-1:-1:-1;;;12021:125:105:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:695:150:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;168:6;162:13;194:18;190:2;187:26;184:52;;;216:18;;:::i;:::-;255:4;283:53;-1:-1:-1;;;307:13:150;;303:27;299:36;;283:53;:::i;:::-;361:2;352:7;345:19;405:3;400:2;395;387:6;383:15;379:24;376:33;373:53;;;422:1;419;412:12;373:53;444:1;454:134;468:2;465:1;462:9;454:134;;;557:14;;;553:23;;547:30;525:15;;;521:24;;514:64;479:10;;454:134;;;606:2;603:1;600:9;597:81;;;666:1;661:2;656;647:7;643:16;639:25;632:36;597:81;-1:-1:-1;696:7:150;14:695;-1:-1:-1;;;;;14:695:150:o;714:179::-;792:13;;845:22;834:34;;824:45;;814:73;;883:1;880;873:12;814:73;714:179;;;:::o;898:247::-;957:6;1010:2;998:9;989:7;985:23;981:32;978:52;;;1026:1;1023;1016:12;978:52;1065:9;1052:23;1084:31;1109:5;1084:31;:::i;:::-;1134:5;898:247;-1:-1:-1;;;898:247:150:o;1150:251::-;1220:6;1273:2;1261:9;1252:7;1248:23;1244:32;1241:52;;;1289:1;1286;1279:12;1241:52;1321:9;1315:16;1340:31;1365:5;1340:31;:::i;1406:529::-;1483:6;1491;1499;1552:2;1540:9;1531:7;1527:23;1523:32;1520:52;;;1568:1;1565;1558:12;1520:52;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:150;1718:18;;1705:32;1746:33;1705:32;1746:33;:::i;:::-;1798:7;-1:-1:-1;1857:2:150;1842:18;;1829:32;1870:33;1829:32;1870:33;:::i;:::-;1922:7;1912:17;;;1406:529;;;;;:::o;1940:241::-;1996:6;2049:2;2037:9;2028:7;2024:23;2020:32;2017:52;;;2065:1;2062;2055:12;2017:52;2104:9;2091:23;2123:28;2145:5;2123:28;:::i;2186:814::-;2312:6;2320;2328;2336;2344;2397:3;2385:9;2376:7;2372:23;2368:33;2365:53;;;2414:1;2411;2404:12;2365:53;2447:9;2441:16;2476:18;2517:2;2509:6;2506:14;2503:34;;;2533:1;2530;2523:12;2503:34;2556:61;2609:7;2600:6;2589:9;2585:22;2556:61;:::i;:::-;2546:71;;2663:2;2652:9;2648:18;2642:25;2626:41;;2692:2;2682:8;2679:16;2676:36;;;2708:1;2705;2698:12;2676:36;;2731:63;2786:7;2775:8;2764:9;2760:24;2731:63;:::i;:::-;2721:73;;;2834:2;2823:9;2819:18;2813:25;2803:35;;2881:2;2870:9;2866:18;2860:25;2894:31;2919:5;2894:31;:::i;:::-;2944:5;2934:15;;;2989:3;2978:9;2974:19;2968:26;2958:36;;2186:814;;;;;;;;:::o;3005:417::-;3104:6;3157:2;3145:9;3136:7;3132:23;3128:32;3125:52;;;3173:1;3170;3163:12;3125:52;3199:22;;:::i;:::-;3250:9;3244:16;3237:5;3230:31;3306:2;3295:9;3291:18;3285:25;3319:33;3344:7;3319:33;:::i;:::-;3379:2;3368:14;;3361:31;3372:5;3005:417;-1:-1:-1;;;3005:417:150:o;3427:338::-;3520:6;3573:2;3561:9;3552:7;3548:23;3544:32;3541:52;;;3589:1;3586;3579:12;3541:52;3615:22;;:::i;:::-;3666:9;3660:16;3653:5;3646:31;3730:2;3719:9;3715:18;3709:25;3704:2;3697:5;3693:14;3686:49;3754:5;3744:15;;;3427:338;;;;:::o;3770:623::-;3876:6;3929:3;3917:9;3908:7;3904:23;3900:33;3897:53;;;3946:1;3943;3936:12;3897:53;3972:22;;:::i;:::-;4024:9;4018:16;4043:33;4068:7;4043:33;:::i;:::-;4099:7;4092:5;4085:22;;4160:2;4149:9;4145:18;4139:25;4134:2;4127:5;4123:14;4116:49;4218:2;4207:9;4203:18;4197:25;4192:2;4185:5;4181:14;4174:49;4268:2;4257:9;4253:18;4247:25;4303:1;4294:7;4291:14;4281:42;;4319:1;4316;4309:12;4281:42;4350:2;4339:14;;4332:31;4343:5;3770:623;-1:-1:-1;;;3770:623:150:o;4398:775::-;4492:6;4545:3;4533:9;4524:7;4520:23;4516:33;4513:53;;;4562:1;4559;4552:12;4513:53;4588:22;;:::i;:::-;4640:9;4634:16;4695:7;4692:1;4681:22;4672:7;4669:35;4659:63;;4718:1;4715;4708:12;4659:63;4731:22;;4798:2;4783:18;;4777:25;4846:18;4833:32;;4821:45;;4811:73;;4880:1;4877;4870:12;4811:73;4911:2;4900:14;;4893:31;4969:2;4954:18;;4948:25;5015:1;5004:22;;;4992:35;;4982:63;;5041:1;5038;5031:12;4982:63;5072:2;5061:14;;5054:31;5138:2;5123:18;;;5117:25;5101:14;;;5094:49;;;;-1:-1:-1;5065:5:150;4398:775;-1:-1:-1;4398:775:150:o;5178:180::-;5237:6;5290:2;5278:9;5269:7;5265:23;5261:32;5258:52;;;5306:1;5303;5296:12;5258:52;-1:-1:-1;5329:23:150;;5178:180;-1:-1:-1;5178:180:150:o;5363:184::-;5433:6;5486:2;5474:9;5465:7;5461:23;5457:32;5454:52;;;5502:1;5499;5492:12;5454:52;-1:-1:-1;5525:16:150;;5363:184;-1:-1:-1;5363:184:150:o;5552:694::-;5658:6;5666;5674;5727:2;5715:9;5706:7;5702:23;5698:32;5695:52;;;5743:1;5740;5733:12;5695:52;5779:9;5766:23;5756:33;;5840:2;5829:9;5825:18;5812:32;5863:18;5904:2;5896:6;5893:14;5890:34;;;5920:1;5917;5910:12;5890:34;5958:6;5947:9;5943:22;5933:32;;6003:7;5996:4;5992:2;5988:13;5984:27;5974:55;;6025:1;6022;6015:12;5974:55;6065:2;6052:16;6091:2;6083:6;6080:14;6077:34;;;6107:1;6104;6097:12;6077:34;6160:7;6155:2;6145:6;6142:1;6138:14;6134:2;6130:23;6126:32;6123:45;6120:65;;;6181:1;6178;6171:12;6120:65;6212:2;6208;6204:11;6194:21;;6234:6;6224:16;;;;;5552:694;;;;;:::o;6251:339::-;6334:6;6342;6395:2;6383:9;6374:7;6370:23;6366:32;6363:52;;;6411:1;6408;6401:12;6363:52;6447:9;6434:23;6424:33;;6507:2;6496:9;6492:18;6479:32;6540:1;6533:5;6530:12;6520:40;;6556:1;6553;6546:12;6520:40;6579:5;6569:15;;;6251:339;;;;;:::o;6595:351::-;6703:6;6711;6755:9;6746:7;6742:23;6785:3;6781:2;6777:12;6774:32;;;6802:1;6799;6792:12;6774:32;6825:23;;;-1:-1:-1;6882:3:150;-1:-1:-1;;6864:16:150;;6860:26;6857:46;;;6899:1;6896;6889:12;6857:46;;6937:2;6926:9;6922:18;6912:28;;6595:351;;;;;:::o;6951:341::-;7049:6;7057;7101:9;7092:7;7088:23;7131:3;7127:2;7123:12;7120:32;;;7148:1;7145;7138:12;7120:32;7171:23;;;-1:-1:-1;7228:3:150;-1:-1:-1;;7210:16:150;;7206:26;7203:46;;;7245:1;7242;7235:12;7297:248;7365:6;7373;7426:2;7414:9;7405:7;7401:23;7397:32;7394:52;;;7442:1;7439;7432:12;7394:52;-1:-1:-1;;7465:23:150;;;7535:2;7520:18;;;7507:32;;-1:-1:-1;7297:248:150:o;7550:377::-;7624:6;7632;7640;7693:2;7681:9;7672:7;7668:23;7664:32;7661:52;;;7709:1;7706;7699:12;7661:52;7745:9;7732:23;7722:33;;7802:2;7791:9;7787:18;7774:32;7764:42;;7856:2;7845:9;7841:18;7828:32;7869:28;7891:5;7869:28;:::i;7932:473::-;8035:6;8043;8051;8059;8067;8120:3;8108:9;8099:7;8095:23;8091:33;8088:53;;;8137:1;8134;8127:12;8088:53;8160:39;8189:9;8160:39;:::i;:::-;8150:49;;8239:2;8228:9;8224:18;8218:25;8208:35;;8283:2;8272:9;8268:18;8262:25;8252:35;;8327:2;8316:9;8312:18;8306:25;8296:35;;8350:49;8394:3;8383:9;8379:19;8350:49;:::i;:::-;8340:59;;7932:473;;;;;;;;:::o;8410:273::-;8478:6;8531:2;8519:9;8510:7;8506:23;8502:32;8499:52;;;8547:1;8544;8537:12;8499:52;8579:9;8573:16;8629:4;8622:5;8618:16;8611:5;8608:27;8598:55;;8649:1;8646;8639:12;8688:266;8776:6;8771:3;8764:19;8828:6;8821:5;8814:4;8809:3;8805:14;8792:43;-1:-1:-1;8880:1:150;8855:16;;;8873:4;8851:27;;;8844:38;;;;8936:2;8915:15;;;-1:-1:-1;;8911:29:150;8902:39;;;8898:50;;8688:266::o;8959:140::-;9040:1;9033:5;9030:12;9020:46;;9046:18;;:::i;:::-;9075;;8959:140::o;9312:1190::-;9513:2;9565:21;;;9538:18;;;9621:22;;;-1:-1:-1;;9674:2:150;9723:1;9719:14;;;9704:30;;9700:39;;;9659:18;;9762:6;-1:-1:-1;9796:677:150;9810:6;9807:1;9804:13;9796:677;;;-1:-1:-1;;9875:22:150;;;9871:36;9859:49;;9947:20;;-1:-1:-1;;10022:14:150;10018:27;;;10014:41;9990:66;;9980:94;;10070:1;10067;10060:12;9980:94;10100:31;;10158:19;;10204:18;10193:30;;10190:50;;;10236:1;10233;10226:12;10190:50;10288:6;10272:14;10268:27;10260:6;10256:40;10253:60;;;10309:1;10306;10299:12;10253:60;10336:57;10386:6;10378;10373:2;10366:5;10362:14;10336:57;:::i;:::-;10326:67;-1:-1:-1;;;10451:12:150;;;;10416:15;;;;9832:1;9825:9;9796:677;;;-1:-1:-1;10490:6:150;;9312:1190;-1:-1:-1;;;;;;;9312:1190:150:o;15251:498::-;15464:13;;15446:32;;15525:4;15513:17;;;15507:24;15433:3;15418:19;;;15540:61;;15580:20;;15507:24;15540:61;:::i;:::-;;15657:4;15649:6;15645:17;15639:24;15632:4;15621:9;15617:20;15610:54;15734:4;15726:6;15722:17;15716:24;15709:32;15702:40;15695:4;15684:9;15680:20;15673:70;15251:498;;;;:::o;15754:831::-;15999:13;;-1:-1:-1;;;;;15995:39:150;15977:58;;16091:4;16079:17;;;16073:24;16051:20;;;16044:54;16154:4;16142:17;;;16136:24;16114:20;;;16107:54;16208:4;16196:17;;16190:24;15964:3;15949:19;;;16250:1;16233:19;;16223:53;;16256:18;;:::i;:::-;16314:12;16307:4;16296:9;16292:20;16285:42;;16383:4;16375:6;16371:17;16365:24;16358:4;16347:9;16343:20;16336:54;16446:4;16438:6;16434:17;16428:24;16421:4;16410:9;16406:20;16399:54;16509:4;16501:6;16497:17;16491:24;16484:4;16473:9;16469:20;16462:54;16572:4;16564:6;16560:17;16554:24;16547:4;16536:9;16532:20;16525:54;15754:831;;;;:::o;17375:433::-;17613:25;;;17600:3;17585:19;;17647:53;17696:2;17681:18;;17673:6;17647:53;:::i;:::-;17736:6;17731:2;17720:9;17716:18;17709:34;17793:6;17786:14;17779:22;17774:2;17763:9;17759:18;17752:50;17375:433;;;;;;;:::o;18471:251::-;18543:2;18537:9;;;18573:15;;18618:18;18603:34;;18639:22;;;18600:62;18597:88;;;18665:18;;:::i;:::-;18701:2;18694:22;18471:251;:::o;18727:252::-;18799:2;18793:9;18841:3;18829:16;;18875:18;18860:34;;18896:22;;;18857:62;18854:88;;;18922:18;;:::i;18984:275::-;19055:2;19049:9;-1:-1:-1;;;19101:13:150;;19097:27;19085:40;;19176:22;;;19155:18;19140:34;;19137:62;19134:88;;;19202:18;;:::i;:::-;19238:2;19231:22;18984:275;;-1:-1:-1;18984:275:150:o;19264:128::-;19304:3;19335:1;19331:6;19328:1;19325:13;19322:39;;;19341:18;;:::i;:::-;-1:-1:-1;19377:9:150;;19264:128::o;19397:120::-;19437:1;19463;19453:35;;19468:18;;:::i;:::-;-1:-1:-1;19502:9:150;;19397:120::o;19522:422::-;19611:1;19654:5;19611:1;19668:270;19689:7;19679:8;19676:21;19668:270;;;19748:4;19744:1;19740:6;19736:17;19730:4;19727:27;19724:53;;;19757:18;;:::i;:::-;19807:7;19797:8;19793:22;19790:55;;;19827:16;;;;19790:55;19906:22;;;;19866:15;;;;19668:270;;;19672:3;19522:422;;;;;:::o;19949:147::-;20008:5;20037:53;20078:10;20068:8;20064:25;20058:4;20037:53;:::i;20101:140::-;20159:5;20188:47;20229:4;20219:8;20215:19;20209:4;20246:806;20295:5;20325:8;20315:80;;-1:-1:-1;20366:1:150;20380:5;;20315:80;20414:4;20404:76;;-1:-1:-1;20451:1:150;20465:5;;20404:76;20496:4;20514:1;20509:59;;;;20582:1;20577:130;;;;20489:218;;20509:59;20539:1;20530:10;;20553:5;;;20577:130;20614:3;20604:8;20601:17;20598:43;;;20621:18;;:::i;:::-;-1:-1:-1;;20677:1:150;20663:16;;20692:5;;20489:218;;20791:2;20781:8;20778:16;20772:3;20766:4;20763:13;20759:36;20753:2;20743:8;20740:16;20735:2;20729:4;20726:12;20722:35;20719:77;20716:159;;;-1:-1:-1;20828:19:150;;;20860:5;;20716:159;20907:34;20932:8;20926:4;20907:34;:::i;:::-;20977:6;20973:1;20969:6;20965:19;20956:7;20953:32;20950:58;;;20988:18;;:::i;:::-;21026:20;;20246:806;-1:-1:-1;;;20246:806:150:o;21057:168::-;21097:7;21163:1;21159;21155:6;21151:14;21148:1;21145:21;21140:1;21133:9;21126:17;21122:45;21119:71;;;21170:18;;:::i;:::-;-1:-1:-1;21210:9:150;;21057:168::o;21230:125::-;21270:4;21298:1;21295;21292:8;21289:34;;;21303:18;;:::i;:::-;-1:-1:-1;21340:9:150;;21230:125::o;21360:135::-;21399:3;-1:-1:-1;;21420:17:150;;21417:43;;;21440:18;;:::i;:::-;-1:-1:-1;21487:1:150;21476:13;;21360:135::o;21500:112::-;21532:1;21558;21548:35;;21563:18;;:::i;:::-;-1:-1:-1;21597:9:150;;21500:112::o;21617:187::-;21651:3;21698:5;21695:1;21684:20;21732:10;21728:15;21719:7;21716:28;21713:54;;;21747:18;;:::i;:::-;21787:1;21783:15;;21617:187;-1:-1:-1;;21617:187:150:o;21809:127::-;21870:10;21865:3;21861:20;21858:1;21851:31;21901:4;21898:1;21891:15;21925:4;21922:1;21915:15;21941:127;22002:10;21997:3;21993:20;21990:1;21983:31;22033:4;22030:1;22023:15;22057:4;22054:1;22047:15;22073:127;22134:10;22129:3;22125:20;22122:1;22115:31;22165:4;22162:1;22155:15;22189:4;22186:1;22179:15;22205:127;22266:10;22261:3;22257:20;22254:1;22247:31;22297:4;22294:1;22287:15;22321:4;22318:1;22311:15;22337:127;22398:10;22393:3;22389:20;22386:1;22379:31;22429:4;22426:1;22419:15;22453:4;22450:1;22443:15;22669:253;22789:1;22782:5;22779:12;22769:46;;22795:18;;:::i;:::-;22860:3;22856:8;22849:4;22843:11;22839:26;22910:3;22903:5;22899:15;22890:7;22887:28;22881:4;22874:42;;22669:253;;:::o;22927:872::-;23118:5;23105:19;23133:33;23158:7;23133:33;:::i;:::-;22573:11;;-1:-1:-1;;;;;;22569:54:150;-1:-1:-1;;;;;22625:31:150;;;;22566:91;22553:105;;23291:2;23280:14;;23267:28;-1:-1:-1;23253:12:150;;23246:50;23350:2;23339:14;;23326:28;23322:1;23312:12;;;23305:50;;;;23403:2;23392:14;;23379:28;;23426:14;;23416:42;;23454:1;23451;23444:12;23416:42;23467:86;23545:7;23541:1;23535:4;23531:12;23467:86;:::i;:::-;;23607:3;23600:5;23596:15;23583:29;23579:1;23573:4;23569:12;23562:51;23667:3;23660:5;23656:15;23643:29;23639:1;23633:4;23629:12;23622:51;23727:3;23720:5;23716:15;23703:29;23699:1;23693:4;23689:12;23682:51;23787:3;23780:5;23776:15;23763:29;23759:1;23753:4;23749:12;23742:51;22927:872;;:::o;23804:795::-;23975:5;23962:19;23990:33;24015:7;23990:33;:::i;:::-;22573:11;;-1:-1:-1;;;;;;22569:54:150;-1:-1:-1;;;;;22625:31:150;;;;22566:91;22553:105;;24148:2;24137:14;;24124:28;-1:-1:-1;24110:12:150;;24103:50;24207:2;24196:14;;24183:28;24179:1;24169:12;;24162:50;24266:2;24255:14;;24242:28;24238:1;24228:12;;24221:50;24308:1;24298:12;;24358:3;24347:15;;24334:29;24372:30;24334:29;24372:30;:::i;:::-;24453:3;24449:8;24436:10;24430:17;24426:32;24527:3;24516:7;24509:15;24502:23;24498:33;24489:7;24486:46;24474:10;24467:66;;;;24587:3;24580:5;24576:15;24563:29;24559:1;24553:4;24549:12;24542:51;23804:795;;:::o;24604:131::-;-1:-1:-1;;;;;24679:31:150;;24669:42;;24659:70;;24725:1;24722;24715:12;24740:118;24826:5;24819:13;24812:21;24805:5;24802:32;24792:60;;24848:1;24845;24838:12","linkReferences":{}},"methodIdentifiers":{"chainlinkValidityPeriod()":"1e8ff50d","executions()":"b21f4517","fulfill(uint256,bytes[])":"dd2f3c05","getOrder(uint256)":"d09ef241","getPrice(uint256,uint8)":"c0a027f4","initialize(address,address,address)":"c0c53b8b","openFeeP(uint256,uint256,bool)":"3a100f4d","orders(uint256)":"a85c38ef","ordersAnswers(uint256,uint256)":"93d7fe2c","pairsStorage()":"35b03c17","pendingMarginUpdateOrders(uint256)":"d1f6652e","pendingSlOrders(uint256)":"37a3dba3","pyth()":"f98d06f0","setChainlinkValidityPeriod(uint256)":"166a073b","setPyth(address)":"ee22fd6f","storageT()":"16fff074","storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":"cbe91bd9","storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":"b8213bfa","unregisterPendingMarginUpdateOrder(uint256)":"c61904a1","unregisterPendingSlOrder(uint256)":"61417a43","updatePairsStorage(address)":"40e9eda2","useBackUpOracleOnly(bool)":"da74d14a","useBackupOnly()":"67288428"},"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\":\"bool\",\"name\":\"_start\",\"type\":\"bool\"}],\"name\":\"BackUpTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"BackupPriceReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PriceReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"PythUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newPeriod\",\"type\":\"uint256\"}],\"name\":\"chainlinkValidityPeriodSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"chainlinkValidityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executions\",\"outputs\":[{\"internalType\":\"contract IExecute\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"fulfill\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"job\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"initiated\",\"type\":\"bool\"}],\"internalType\":\"struct IPriceAggregator.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"_orderType\",\"type\":\"uint8\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_executions\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPositionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"openFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"job\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"initiated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ordersAnswers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsStorage\",\"outputs\":[{\"internalType\":\"contract IPairStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"pendingMarginUpdateOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"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\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingMarginUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"pendingSlOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingSl\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pyth\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newPeriod\",\"type\":\"uint256\"}],\"name\":\"setChainlinkValidityPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pythContract\",\"type\":\"address\"}],\"name\":\"setPyth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"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\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingMarginUpdate\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"storePendingMarginUpdateOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingSl\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"storePendingSlOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingMarginUpdateOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingSlOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"}],\"name\":\"updatePairsStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_start\",\"type\":\"bool\"}],\"name\":\"useBackUpOracleOnly\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useBackupOnly\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"fulfill(uint256,bytes[])\":{\"params\":{\"orderId\":\"The ID of the order to fulfill\",\"priceUpdateData\":\"Data required for updating the price feed\"}},\"getPrice(uint256,uint8)\":{\"params\":{\"_orderType\":\"Type of the order (Market open, Market close etc.)\",\"_pairIndex\":\"Index of the trading pair\"},\"returns\":{\"_0\":\"orderId The ID of the created order\"}},\"initialize(address,address,address)\":{\"params\":{\"_executions\":\"The address of the executions contract\",\"_pairsStorage\":\"The address of the pairs storage contract\",\"_storageT\":\"The address of the storage contract\"}},\"openFeeP(uint256,uint256,bool)\":{\"params\":{\"_buy\":\"Whether the position is a buy or a sell\",\"_leveragedPositionSize\":\"Size of the leveraged position\",\"_pairIndex\":\"Index of the trading pair\"},\"returns\":{\"_0\":\"Fee percentage\"}},\"pendingMarginUpdateOrders(uint256)\":{\"params\":{\"index\":\"The index of the pending margin update order\"},\"returns\":{\"_0\":\"A struct containing the information about the pending margin update order\"}},\"pendingSlOrders(uint256)\":{\"params\":{\"index\":\"The index of the pending SL order\"},\"returns\":{\"_0\":\"A struct containing the information about the pending SL order\"}},\"setChainlinkValidityPeriod(uint256)\":{\"params\":{\"_newPeriod\":\"new validity period\"}},\"setPyth(address)\":{\"params\":{\"pythContract\":\"The address of the Pyth contract\"}},\"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))\":{\"params\":{\"orderId\":\"The ID of the order\",\"p\":\"Data structure containing information about the pending margin update order\"}},\"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))\":{\"params\":{\"orderId\":\"The ID of the order\",\"p\":\"Data structure containing information about the pending SL order\"}},\"unregisterPendingMarginUpdateOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the order to unregister\"}},\"unregisterPendingSlOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the order to unregister\"}},\"updatePairsStorage(address)\":{\"params\":{\"_pairsStorage\":\"New address for the pairs storage contract\"}},\"useBackUpOracleOnly(bool)\":{\"params\":{\"_start\":\"bool indicating state of oracle usage\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"fulfill(uint256,bytes[])\":{\"notice\":\"Fulfill an order by updating price feeds and invoking corresponding callbacks\"},\"getOrder(uint256)\":{\"notice\":\"Returns order stored\"},\"getPrice(uint256,uint8)\":{\"notice\":\"Creates an order and return the order ID\"},\"initialize(address,address,address)\":{\"notice\":\"Initialize contract\"},\"openFeeP(uint256,uint256,bool)\":{\"notice\":\"Calculate open fee as a percentage for a trading pair\"},\"pendingMarginUpdateOrders(uint256)\":{\"notice\":\"Retrieves a pending margin update order\"},\"pendingSlOrders(uint256)\":{\"notice\":\"Retrieves pending stop-loss (SL) order\"},\"setChainlinkValidityPeriod(uint256)\":{\"notice\":\"Sets chainlink validity period\"},\"setPyth(address)\":{\"notice\":\"Set the address of the Pyth contract\"},\"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))\":{\"notice\":\"Store information about a pending margin update order\"},\"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))\":{\"notice\":\"Store information about a pending stop-loss (SL) order\"},\"unregisterPendingMarginUpdateOrder(uint256)\":{\"notice\":\"Deletes a pending margin update order\"},\"unregisterPendingSlOrder(uint256)\":{\"notice\":\"Deletes a pending stop-loss (SL) order\"},\"updatePairsStorage(address)\":{\"notice\":\"Update the address of the pairs storage contract\"},\"useBackUpOracleOnly(bool)\":{\"notice\":\"Sets bool indication only backup oracle will be used as main is dysfunctional\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PriceAggregator.sol\":\"PriceAggregator\"},\"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/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7\",\"dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4d7cb071e08e81bb8b113a928f4c2d2b3cdf950ad64c6c7003ea3d874163ca77\",\"dweb:/ipfs/QmRbQchPxRTBMHi7WzLb8XnMGzPDQcWhu7i2u5naUsCRoZ\"]},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b75be4c3643b22305995aba71fc92146dbf51fa82d2f9728c515d7749b32dca3\",\"dweb:/ipfs/QmRby4XA9jJQGhxoJ16BTUDuU7BzLFfadbfTgBiQsDgNyZ\"]},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fb7f4ffe03be7379d3833c5946e38153de26aef4a4da0323a1ec603787de9eb7\",\"dweb:/ipfs/QmW4WkkLPGjDJrLrW4mYfxtFh8e9KAcPhrnNdxPQsfkS6t\"]},\"src/PriceAggregator.sol\":{\"keccak256\":\"0x4273ae4bdf005fd92139449facb4d75c05f8f06e4674682ab4911a66b8583138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72c1ab3285828b5cf014a752465cb315f62aeac690d4b4734fe39f80cd30790d\",\"dweb:/ipfs/QmXQnzPDmPA8X7nkipomqEzN5d21U6p9Y5E1ACH9GNojK1\"]},\"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/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\"]}},\"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":"bool","name":"_start","type":"bool","indexed":false}],"type":"event","name":"BackUpTriggered","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"BackupPriceReceived","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","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":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"PriceReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"PythUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_newPeriod","type":"uint256","indexed":false}],"type":"event","name":"chainlinkValidityPeriodSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"chainlinkValidityPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"executions","outputs":[{"internalType":"contract IExecute","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"fulfill"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOrder","outputs":[{"internalType":"struct IPriceAggregator.Order","name":"","type":"tuple","components":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"orderType","type":"uint8"},{"internalType":"bytes32","name":"job","type":"bytes32"},{"internalType":"bool","name":"initiated","type":"bool"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"_orderType","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairsStorage","type":"address"},{"internalType":"address","name":"_executions","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPositionSize","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"view","type":"function","name":"openFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"orderType","type":"uint8"},{"internalType":"bytes32","name":"job","type":"bytes32"},{"internalType":"bool","name":"initiated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"ordersAnswers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsStorage","outputs":[{"internalType":"contract IPairStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarginUpdateOrders","outputs":[{"internalType":"struct IPriceAggregator.PendingMarginUpdate","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"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":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"marginFees","type":"uint256"},{"internalType":"uint256","name":"oldLeverage","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingSlOrders","outputs":[{"internalType":"struct IPriceAggregator.PendingSl","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"newSl","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pyth","outputs":[{"internalType":"contract IPyth","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_newPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setChainlinkValidityPeriod"},{"inputs":[{"internalType":"address","name":"pythContract","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPyth"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"struct IPriceAggregator.PendingMarginUpdate","name":"p","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"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":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"marginFees","type":"uint256"},{"internalType":"uint256","name":"oldLeverage","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storePendingMarginUpdateOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"struct IPriceAggregator.PendingSl","name":"p","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"newSl","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storePendingSlOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingMarginUpdateOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingSlOrder"},{"inputs":[{"internalType":"address","name":"_pairsStorage","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updatePairsStorage"},{"inputs":[{"internalType":"bool","name":"_start","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"useBackUpOracleOnly"},{"inputs":[],"stateMutability":"view","type":"function","name":"useBackupOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"fulfill(uint256,bytes[])":{"params":{"orderId":"The ID of the order to fulfill","priceUpdateData":"Data required for updating the price feed"}},"getPrice(uint256,uint8)":{"params":{"_orderType":"Type of the order (Market open, Market close etc.)","_pairIndex":"Index of the trading pair"},"returns":{"_0":"orderId The ID of the created order"}},"initialize(address,address,address)":{"params":{"_executions":"The address of the executions contract","_pairsStorage":"The address of the pairs storage contract","_storageT":"The address of the storage contract"}},"openFeeP(uint256,uint256,bool)":{"params":{"_buy":"Whether the position is a buy or a sell","_leveragedPositionSize":"Size of the leveraged position","_pairIndex":"Index of the trading pair"},"returns":{"_0":"Fee percentage"}},"pendingMarginUpdateOrders(uint256)":{"params":{"index":"The index of the pending margin update order"},"returns":{"_0":"A struct containing the information about the pending margin update order"}},"pendingSlOrders(uint256)":{"params":{"index":"The index of the pending SL order"},"returns":{"_0":"A struct containing the information about the pending SL order"}},"setChainlinkValidityPeriod(uint256)":{"params":{"_newPeriod":"new validity period"}},"setPyth(address)":{"params":{"pythContract":"The address of the Pyth contract"}},"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":{"params":{"orderId":"The ID of the order","p":"Data structure containing information about the pending margin update order"}},"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":{"params":{"orderId":"The ID of the order","p":"Data structure containing information about the pending SL order"}},"unregisterPendingMarginUpdateOrder(uint256)":{"params":{"orderId":"The ID of the order to unregister"}},"unregisterPendingSlOrder(uint256)":{"params":{"orderId":"The ID of the order to unregister"}},"updatePairsStorage(address)":{"params":{"_pairsStorage":"New address for the pairs storage contract"}},"useBackUpOracleOnly(bool)":{"params":{"_start":"bool indicating state of oracle usage"}}},"version":1},"userdoc":{"kind":"user","methods":{"fulfill(uint256,bytes[])":{"notice":"Fulfill an order by updating price feeds and invoking corresponding callbacks"},"getOrder(uint256)":{"notice":"Returns order stored"},"getPrice(uint256,uint8)":{"notice":"Creates an order and return the order ID"},"initialize(address,address,address)":{"notice":"Initialize contract"},"openFeeP(uint256,uint256,bool)":{"notice":"Calculate open fee as a percentage for a trading pair"},"pendingMarginUpdateOrders(uint256)":{"notice":"Retrieves a pending margin update order"},"pendingSlOrders(uint256)":{"notice":"Retrieves pending stop-loss (SL) order"},"setChainlinkValidityPeriod(uint256)":{"notice":"Sets chainlink validity period"},"setPyth(address)":{"notice":"Set the address of the Pyth contract"},"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":{"notice":"Store information about a pending margin update order"},"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":{"notice":"Store information about a pending stop-loss (SL) order"},"unregisterPendingMarginUpdateOrder(uint256)":{"notice":"Deletes a pending margin update order"},"unregisterPendingSlOrder(uint256)":{"notice":"Deletes a pending stop-loss (SL) order"},"updatePairsStorage(address)":{"notice":"Update the address of the pairs storage contract"},"useBackUpOracleOnly(bool)":{"notice":"Sets bool indication only backup oracle will be used as main is dysfunctional"}},"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/PriceAggregator.sol":"PriceAggregator"},"evmVersion":"london","libraries":{}},"sources":{"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol":{"keccak256":"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7","urls":["bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465","dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a"],"license":"MIT"},"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol":{"keccak256":"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2","urls":["bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b","dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG"],"license":"MIT"},"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"keccak256":"0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd","urls":["bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7","dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/pyth-sdk-solidity/IPyth.sol":{"keccak256":"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2","urls":["bzz-raw://4d7cb071e08e81bb8b113a928f4c2d2b3cdf950ad64c6c7003ea3d874163ca77","dweb:/ipfs/QmRbQchPxRTBMHi7WzLb8XnMGzPDQcWhu7i2u5naUsCRoZ"],"license":"Apache-2.0"},"lib/pyth-sdk-solidity/IPythEvents.sol":{"keccak256":"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320","urls":["bzz-raw://b75be4c3643b22305995aba71fc92146dbf51fa82d2f9728c515d7749b32dca3","dweb:/ipfs/QmRby4XA9jJQGhxoJ16BTUDuU7BzLFfadbfTgBiQsDgNyZ"],"license":"Apache-2.0"},"lib/pyth-sdk-solidity/PythStructs.sol":{"keccak256":"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65","urls":["bzz-raw://fb7f4ffe03be7379d3833c5946e38153de26aef4a4da0323a1ec603787de9eb7","dweb:/ipfs/QmW4WkkLPGjDJrLrW4mYfxtFh8e9KAcPhrnNdxPQsfkS6t"],"license":"Apache-2.0"},"src/PriceAggregator.sol":{"keccak256":"0x4273ae4bdf005fd92139449facb4d75c05f8f06e4674682ab4911a66b8583138","urls":["bzz-raw://72c1ab3285828b5cf014a752465cb315f62aeac690d4b4734fe39f80cd30790d","dweb:/ipfs/QmXQnzPDmPA8X7nkipomqEzN5d21U6p9Y5E1ACH9GNojK1"],"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/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"}},"version":1},"ast":{"absolutePath":"src/PriceAggregator.sol","id":75566,"exportedSymbols":{"AddressUpgradeable":[46968],"AggregatorInterface":[47],"AggregatorV2V3Interface":[56],"AggregatorV3Interface":[102],"ICallbacks":[88257],"IERC20":[51481],"IExecute":[88371],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"IPyth":[54119],"IPythEvents":[54141],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"PriceAggregator":[75565],"PythStructs":[54634]},"nodeType":"SourceUnit","src":"32:13249:105","nodes":[{"id":74452,"nodeType":"PragmaDirective","src":"32:22:105","nodes":[],"literals":["solidity","0.8",".7"]},{"id":74453,"nodeType":"ImportDirective","src":"56:37:105","nodes":[],"absolutePath":"src/interfaces/ICallbacks.sol","file":"./interfaces/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":88258,"symbolAliases":[],"unitAlias":""},{"id":74454,"nodeType":"ImportDirective","src":"94:42:105","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":74455,"nodeType":"ImportDirective","src":"137:35:105","nodes":[],"absolutePath":"src/interfaces/IExecute.sol","file":"./interfaces/IExecute.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":88372,"symbolAliases":[],"unitAlias":""},{"id":74456,"nodeType":"ImportDirective","src":"173:43:105","nodes":[],"absolutePath":"src/interfaces/IPriceAggregator.sol","file":"./interfaces/IPriceAggregator.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":89249,"symbolAliases":[],"unitAlias":""},{"id":74457,"nodeType":"ImportDirective","src":"217:37:105","nodes":[],"absolutePath":"lib/pyth-sdk-solidity/IPyth.sol","file":"pyth-sdk-solidity/IPyth.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":54120,"symbolAliases":[],"unitAlias":""},{"id":74458,"nodeType":"ImportDirective","src":"255:43:105","nodes":[],"absolutePath":"lib/pyth-sdk-solidity/PythStructs.sol","file":"pyth-sdk-solidity/PythStructs.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":54635,"symbolAliases":[],"unitAlias":""},{"id":74459,"nodeType":"ImportDirective","src":"299:75:105","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":43538,"symbolAliases":[],"unitAlias":""},{"id":74460,"nodeType":"ImportDirective","src":"375:78:105","nodes":[],"absolutePath":"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol","file":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol","nameLocation":"-1:-1:-1","scope":75566,"sourceUnit":57,"symbolAliases":[],"unitAlias":""},{"id":75565,"nodeType":"ContractDefinition","src":"455:12825:105","nodes":[{"id":74467,"nodeType":"VariableDeclaration","src":"522:39:105","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"544:10:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74465,"name":"uint","nodeType":"ElementaryTypeName","src":"522:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":74466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:105","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":74470,"nodeType":"VariableDeclaration","src":"568:17:105","nodes":[],"constant":false,"functionSelector":"f98d06f0","mutability":"mutable","name":"pyth","nameLocation":"581:4:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"},"typeName":{"id":74469,"nodeType":"UserDefinedTypeName","pathNode":{"id":74468,"name":"IPyth","nodeType":"IdentifierPath","referencedDeclaration":54119,"src":"568:5:105"},"referencedDeclaration":54119,"src":"568:5:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"visibility":"public"},{"id":74472,"nodeType":"VariableDeclaration","src":"591:25:105","nodes":[],"constant":false,"functionSelector":"67288428","mutability":"mutable","name":"useBackupOnly","nameLocation":"603:13:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74471,"name":"bool","nodeType":"ElementaryTypeName","src":"591:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":74475,"nodeType":"VariableDeclaration","src":"623:31:105","nodes":[],"constant":false,"functionSelector":"16fff074","mutability":"mutable","name":"storageT","nameLocation":"646:8:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"},"typeName":{"id":74474,"nodeType":"UserDefinedTypeName","pathNode":{"id":74473,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"623:15:105"},"referencedDeclaration":89943,"src":"623:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"visibility":"public"},{"id":74479,"nodeType":"VariableDeclaration","src":"660:41:105","nodes":[],"baseFunctions":[89162],"constant":false,"functionSelector":"35b03c17","mutability":"mutable","name":"pairsStorage","nameLocation":"689:12:105","overrides":{"id":74478,"nodeType":"OverrideSpecifier","overrides":[],"src":"680:8:105"},"scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":74477,"nodeType":"UserDefinedTypeName","pathNode":{"id":74476,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"660:12:105"},"referencedDeclaration":89055,"src":"660:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"public"},{"id":74483,"nodeType":"VariableDeclaration","src":"707:35:105","nodes":[],"baseFunctions":[89168],"constant":false,"functionSelector":"b21f4517","mutability":"mutable","name":"executions","nameLocation":"732:10:105","overrides":{"id":74482,"nodeType":"OverrideSpecifier","overrides":[],"src":"723:8:105"},"scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"},"typeName":{"id":74481,"nodeType":"UserDefinedTypeName","pathNode":{"id":74480,"name":"IExecute","nodeType":"IdentifierPath","referencedDeclaration":88371,"src":"707:8:105"},"referencedDeclaration":88371,"src":"707:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"visibility":"public"},{"id":74485,"nodeType":"VariableDeclaration","src":"748:35:105","nodes":[],"constant":false,"functionSelector":"1e8ff50d","mutability":"mutable","name":"chainlinkValidityPeriod","nameLocation":"760:23:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74484,"name":"uint","nodeType":"ElementaryTypeName","src":"748:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74490,"nodeType":"VariableDeclaration","src":"790:36:105","nodes":[],"constant":false,"functionSelector":"a85c38ef","mutability":"mutable","name":"orders","nameLocation":"820:6:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order)"},"typeName":{"id":74489,"keyType":{"id":74486,"name":"uint","nodeType":"ElementaryTypeName","src":"798:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"790:22:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order)"},"valueType":{"id":74488,"nodeType":"UserDefinedTypeName","pathNode":{"id":74487,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":89085,"src":"806:5:105"},"referencedDeclaration":89085,"src":"806:5:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order"}}},"visibility":"public"},{"id":74495,"nodeType":"VariableDeclaration","src":"832:44:105","nodes":[],"constant":false,"functionSelector":"93d7fe2c","mutability":"mutable","name":"ordersAnswers","nameLocation":"863:13:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"typeName":{"id":74494,"keyType":{"id":74491,"name":"uint","nodeType":"ElementaryTypeName","src":"840:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"832:23:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[])"},"valueType":{"baseType":{"id":74492,"name":"uint","nodeType":"ElementaryTypeName","src":"848:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74493,"nodeType":"ArrayTypeName","src":"848:6:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"public"},{"id":74500,"nodeType":"VariableDeclaration","src":"882:51:105","nodes":[],"constant":false,"mutability":"mutable","name":"_pendingSlOrders","nameLocation":"917:16:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingSl_$89098_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingSl)"},"typeName":{"id":74499,"keyType":{"id":74496,"name":"uint","nodeType":"ElementaryTypeName","src":"890:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"882:26:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingSl_$89098_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingSl)"},"valueType":{"id":74498,"nodeType":"UserDefinedTypeName","pathNode":{"id":74497,"name":"PendingSl","nodeType":"IdentifierPath","referencedDeclaration":89098,"src":"898:9:105"},"referencedDeclaration":89098,"src":"898:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage_ptr","typeString":"struct IPriceAggregator.PendingSl"}}},"visibility":"private"},{"id":74505,"nodeType":"VariableDeclaration","src":"939:71:105","nodes":[],"constant":false,"mutability":"mutable","name":"_pendingMarginUpdateOrders","nameLocation":"984:26:105","scope":75565,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingMarginUpdate)"},"typeName":{"id":74504,"keyType":{"id":74501,"name":"uint","nodeType":"ElementaryTypeName","src":"947:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"939:36:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingMarginUpdate)"},"valueType":{"id":74503,"nodeType":"UserDefinedTypeName","pathNode":{"id":74502,"name":"PendingMarginUpdate","nodeType":"IdentifierPath","referencedDeclaration":89116,"src":"955:19:105"},"referencedDeclaration":89116,"src":"955:19:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"}}},"visibility":"private"},{"id":74519,"nodeType":"ModifierDefinition","src":"1034:96:105","nodes":[],"body":{"id":74518,"nodeType":"Block","src":"1053:77:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74508,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1071:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1071:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":74510,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"1085:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gov","nodeType":"MemberAccess","referencedDeclaration":89575,"src":"1085:12:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1085:14:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1071:28:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"474f565f4f4e4c59","id":74514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1101:10:105","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":74507,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1063:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1063:49:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74516,"nodeType":"ExpressionStatement","src":"1063:49:105"},{"id":74517,"nodeType":"PlaceholderStatement","src":"1122:1:105"}]},"name":"onlyGov","nameLocation":"1043:7:105","parameters":{"id":74506,"nodeType":"ParameterList","parameters":[],"src":"1050:2:105"},"virtual":false,"visibility":"internal"},{"id":74533,"nodeType":"ModifierDefinition","src":"1135:108:105","nodes":[],"body":{"id":74532,"nodeType":"Block","src":"1158:85:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74522,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1176:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1176:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":74524,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"1190:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"trading","nodeType":"MemberAccess","referencedDeclaration":89603,"src":"1190:16:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:18:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1176:32:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54524144494e475f4f4e4c59","id":74528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1210:14:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_310474a53f3f40bf51a1a213021afa05290d0f370aad6481e22e412e1e80925c","typeString":"literal_string \"TRADING_ONLY\""},"value":"TRADING_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_310474a53f3f40bf51a1a213021afa05290d0f370aad6481e22e412e1e80925c","typeString":"literal_string \"TRADING_ONLY\""}],"id":74521,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1168:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:57:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74530,"nodeType":"ExpressionStatement","src":"1168:57:105"},{"id":74531,"nodeType":"PlaceholderStatement","src":"1235:1:105"}]},"name":"onlyTrading","nameLocation":"1144:11:105","parameters":{"id":74520,"nodeType":"ParameterList","parameters":[],"src":"1155:2:105"},"virtual":false,"visibility":"internal"},{"id":74540,"nodeType":"FunctionDefinition","src":"1253:53:105","nodes":[],"body":{"id":74539,"nodeType":"Block","src":"1267:39:105","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74536,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"1277:20:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":74537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1277:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74538,"nodeType":"ExpressionStatement","src":"1277:22:105"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":74534,"nodeType":"ParameterList","parameters":[],"src":"1264:2:105"},"returnParameters":{"id":74535,"nodeType":"ParameterList","parameters":[],"src":"1267:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74588,"nodeType":"FunctionDefinition","src":"1558:372:105","nodes":[],"body":{"id":74587,"nodeType":"Block","src":"1662:268:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74555,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74545,"src":"1688:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1680:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74553,"name":"address","nodeType":"ElementaryTypeName","src":"1680:7:105","typeDescriptions":{}}},"id":74556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1680:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1714:1:105","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":74558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1706:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74557,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:105","typeDescriptions":{}}},"id":74560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1706:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1680:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f504152414d53","id":74562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1718:14:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b46866ac96c6da26e5957eca40ae2138492275f36f12ef8c786070c5568ff5c","typeString":"literal_string \"WRONG_PARAMS\""},"value":"WRONG_PARAMS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9b46866ac96c6da26e5957eca40ae2138492275f36f12ef8c786070c5568ff5c","typeString":"literal_string \"WRONG_PARAMS\""}],"id":74552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1672:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1672:61:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74564,"nodeType":"ExpressionStatement","src":"1672:61:105"},{"expression":{"id":74569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74565,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"1744:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74567,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74545,"src":"1772:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74566,"name":"IPairStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89055,"src":"1759:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairStorage_$89055_$","typeString":"type(contract IPairStorage)"}},"id":74568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1759:27:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"src":"1744:42:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":74570,"nodeType":"ExpressionStatement","src":"1744:42:105"},{"expression":{"id":74575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74571,"name":"executions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74483,"src":"1796:10:105","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74573,"name":"_executions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74547,"src":"1818:11:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74572,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"1809:8:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":74574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1809:21:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"src":"1796:34:105","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":74576,"nodeType":"ExpressionStatement","src":"1796:34:105"},{"expression":{"id":74581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74577,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"1840:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74579,"name":"_storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"1867:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74578,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"1851:15:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":74580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1851:26:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"src":"1840:37:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74582,"nodeType":"ExpressionStatement","src":"1840:37:105"},{"expression":{"id":74585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74583,"name":"chainlinkValidityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74485,"src":"1887:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":74584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1913:9:105","subdenomination":"minutes","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"2"},"src":"1887:35:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74586,"nodeType":"ExpressionStatement","src":"1887:35:105"}]},"documentation":{"id":74541,"nodeType":"StructuredDocumentation","src":"1311:242:105","text":" @notice Initialize contract\n @param _storageT The address of the storage contract\n @param _pairsStorage The address of the pairs storage contract\n @param _executions The address of the executions contract"},"functionSelector":"c0c53b8b","implemented":true,"kind":"function","modifiers":[{"id":74550,"kind":"modifierInvocation","modifierName":{"id":74549,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"1650:11:105"},"nodeType":"ModifierInvocation","src":"1650:11:105"}],"name":"initialize","nameLocation":"1567:10:105","parameters":{"id":74548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74543,"mutability":"mutable","name":"_storageT","nameLocation":"1586:9:105","nodeType":"VariableDeclaration","scope":74588,"src":"1578:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74542,"name":"address","nodeType":"ElementaryTypeName","src":"1578:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74545,"mutability":"mutable","name":"_pairsStorage","nameLocation":"1605:13:105","nodeType":"VariableDeclaration","scope":74588,"src":"1597:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74544,"name":"address","nodeType":"ElementaryTypeName","src":"1597:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74547,"mutability":"mutable","name":"_executions","nameLocation":"1628:11:105","nodeType":"VariableDeclaration","scope":74588,"src":"1620:19:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74546,"name":"address","nodeType":"ElementaryTypeName","src":"1620:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1577:63:105"},"returnParameters":{"id":74551,"nodeType":"ParameterList","parameters":[],"src":"1662:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74624,"nodeType":"FunctionDefinition","src":"2088:262:105","nodes":[],"body":{"id":74623,"nodeType":"Block","src":"2156:194:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74599,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74591,"src":"2182:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74597,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:105","typeDescriptions":{}}},"id":74600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2208:1:105","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":74602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2200:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74601,"name":"address","nodeType":"ElementaryTypeName","src":"2200:7:105","typeDescriptions":{}}},"id":74604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2200:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2174:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56414c55455f30","id":74606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2212:9:105","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":74596,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2166:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2166:56:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74608,"nodeType":"ExpressionStatement","src":"2166:56:105"},{"expression":{"id":74613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74609,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"2232:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74611,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74591,"src":"2260:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74610,"name":"IPairStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89055,"src":"2247:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairStorage_$89055_$","typeString":"type(contract IPairStorage)"}},"id":74612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2247:27:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"src":"2232:42:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":74614,"nodeType":"ExpressionStatement","src":"2232:42:105"},{"eventCall":{"arguments":[{"hexValue":"706169727353746f72616765","id":74616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2304:14:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_b7a5d10f8658c04c27ba583d208ecfec144cb68328e5813b4c43e35bbf3aab05","typeString":"literal_string \"pairsStorage\""},"value":"pairsStorage"},{"arguments":[{"id":74619,"name":"_pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74591,"src":"2328:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2320:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74617,"name":"address","nodeType":"ElementaryTypeName","src":"2320:7:105","typeDescriptions":{}}},"id":74620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2320:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b7a5d10f8658c04c27ba583d208ecfec144cb68328e5813b4c43e35bbf3aab05","typeString":"literal_string \"pairsStorage\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":74615,"name":"AddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89122,"src":"2289:14:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":74621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2289:54:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74622,"nodeType":"EmitStatement","src":"2284:59:105"}]},"documentation":{"id":74589,"nodeType":"StructuredDocumentation","src":"1936:147:105","text":" @notice Update the address of the pairs storage contract\n @param _pairsStorage New address for the pairs storage contract"},"functionSelector":"40e9eda2","implemented":true,"kind":"function","modifiers":[{"id":74594,"kind":"modifierInvocation","modifierName":{"id":74593,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":74519,"src":"2148:7:105"},"nodeType":"ModifierInvocation","src":"2148:7:105"}],"name":"updatePairsStorage","nameLocation":"2097:18:105","parameters":{"id":74592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74591,"mutability":"mutable","name":"_pairsStorage","nameLocation":"2124:13:105","nodeType":"VariableDeclaration","scope":74624,"src":"2116:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74590,"name":"address","nodeType":"ElementaryTypeName","src":"2116:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2115:23:105"},"returnParameters":{"id":74595,"nodeType":"ParameterList","parameters":[],"src":"2156:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74643,"nodeType":"FunctionDefinition","src":"2484:139:105","nodes":[],"body":{"id":74642,"nodeType":"Block","src":"2540:83:105","nodes":[],"statements":[{"expression":{"id":74636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74632,"name":"pyth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74470,"src":"2550:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74634,"name":"pythContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74627,"src":"2563:12:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74633,"name":"IPyth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54119,"src":"2557:5:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPyth_$54119_$","typeString":"type(contract IPyth)"}},"id":74635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2557:19:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"src":"2550:26:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"id":74637,"nodeType":"ExpressionStatement","src":"2550:26:105"},{"eventCall":{"arguments":[{"id":74639,"name":"pythContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74627,"src":"2603:12:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74638,"name":"PythUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89132,"src":"2591:11:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2591:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74641,"nodeType":"EmitStatement","src":"2586:30:105"}]},"documentation":{"id":74625,"nodeType":"StructuredDocumentation","src":"2355:124:105","text":" @notice Set the address of the Pyth contract\n @param pythContract The address of the Pyth contract"},"functionSelector":"ee22fd6f","implemented":true,"kind":"function","modifiers":[{"id":74630,"kind":"modifierInvocation","modifierName":{"id":74629,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":74519,"src":"2532:7:105"},"nodeType":"ModifierInvocation","src":"2532:7:105"}],"name":"setPyth","nameLocation":"2493:7:105","parameters":{"id":74628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74627,"mutability":"mutable","name":"pythContract","nameLocation":"2509:12:105","nodeType":"VariableDeclaration","scope":74643,"src":"2501:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74626,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2500:22:105"},"returnParameters":{"id":74631,"nodeType":"ParameterList","parameters":[],"src":"2540:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74660,"nodeType":"FunctionDefinition","src":"2797:137:105","nodes":[],"body":{"id":74659,"nodeType":"Block","src":"2856:78:105","nodes":[],"statements":[{"expression":{"id":74653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74651,"name":"useBackupOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74472,"src":"2866:13:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74652,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74646,"src":"2882:6:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2866:22:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74654,"nodeType":"ExpressionStatement","src":"2866:22:105"},{"eventCall":{"arguments":[{"id":74656,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74646,"src":"2920:6:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":74655,"name":"BackUpTriggered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89152,"src":"2904:15:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":74657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2904:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74658,"nodeType":"EmitStatement","src":"2899:28:105"}]},"documentation":{"id":74644,"nodeType":"StructuredDocumentation","src":"2628:164:105","text":" @notice Sets bool indication only backup oracle will be used as main is dysfunctional\n @param _start bool indicating state of oracle usage"},"functionSelector":"da74d14a","implemented":true,"kind":"function","modifiers":[{"id":74649,"kind":"modifierInvocation","modifierName":{"id":74648,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":74519,"src":"2848:7:105"},"nodeType":"ModifierInvocation","src":"2848:7:105"}],"name":"useBackUpOracleOnly","nameLocation":"2806:19:105","parameters":{"id":74647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74646,"mutability":"mutable","name":"_start","nameLocation":"2831:6:105","nodeType":"VariableDeclaration","scope":74660,"src":"2826:11:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74645,"name":"bool","nodeType":"ElementaryTypeName","src":"2826:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2825:13:105"},"returnParameters":{"id":74650,"nodeType":"ParameterList","parameters":[],"src":"2856:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74677,"nodeType":"FunctionDefinition","src":"3047:177:105","nodes":[],"body":{"id":74676,"nodeType":"Block","src":"3117:107:105","nodes":[],"statements":[{"expression":{"id":74670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74668,"name":"chainlinkValidityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74485,"src":"3127:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74669,"name":"_newPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74663,"src":"3153:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3127:36:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74671,"nodeType":"ExpressionStatement","src":"3127:36:105"},{"eventCall":{"arguments":[{"id":74673,"name":"_newPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74663,"src":"3206:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74672,"name":"chainlinkValidityPeriodSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89156,"src":"3179:26:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3179:38:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74675,"nodeType":"EmitStatement","src":"3174:43:105"}]},"documentation":{"id":74661,"nodeType":"StructuredDocumentation","src":"2939:103:105","text":" @notice Sets chainlink validity period\n @param _newPeriod new validity period"},"functionSelector":"166a073b","implemented":true,"kind":"function","modifiers":[{"id":74666,"kind":"modifierInvocation","modifierName":{"id":74665,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":74519,"src":"3109:7:105"},"nodeType":"ModifierInvocation","src":"3109:7:105"}],"name":"setChainlinkValidityPeriod","nameLocation":"3056:26:105","parameters":{"id":74664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74663,"mutability":"mutable","name":"_newPeriod","nameLocation":"3088:10:105","nodeType":"VariableDeclaration","scope":74677,"src":"3083:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74662,"name":"uint","nodeType":"ElementaryTypeName","src":"3083:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3082:17:105"},"returnParameters":{"id":74667,"nodeType":"ParameterList","parameters":[],"src":"3117:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74714,"nodeType":"FunctionDefinition","src":"3480:280:105","nodes":[],"body":{"id":74713,"nodeType":"Block","src":"3582:178:105","nodes":[],"statements":[{"assignments":[null,null,74692,null,74694],"declarations":[null,null,{"constant":false,"id":74692,"mutability":"mutable","name":"job","nameLocation":"3605:3:105","nodeType":"VariableDeclaration","scope":74713,"src":"3597:11:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3597:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},null,{"constant":false,"id":74694,"mutability":"mutable","name":"orderId","nameLocation":"3617:7:105","nodeType":"VariableDeclaration","scope":74713,"src":"3612:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74693,"name":"uint","nodeType":"ElementaryTypeName","src":"3612:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74699,"initialValue":{"arguments":[{"id":74697,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74680,"src":"3649:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":74695,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"3628:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":74696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairJob","nodeType":"MemberAccess","referencedDeclaration":88901,"src":"3628:20:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes32_$_t_address_$_t_uint256_$","typeString":"function (uint256) external returns (string memory,string memory,bytes32,address,uint256)"}},"id":74698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3628:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes32_$_t_address_$_t_uint256_$","typeString":"tuple(string memory,string memory,bytes32,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3592:68:105"},{"expression":{"id":74709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":74700,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74490,"src":"3671:6:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order storage ref)"}},"id":74702,"indexExpression":{"id":74701,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74694,"src":"3678:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3671:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage","typeString":"struct IPriceAggregator.Order storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":74704,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74680,"src":"3695:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74705,"name":"_orderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74683,"src":"3707:10:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},{"id":74706,"name":"job","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74692,"src":"3719:3:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":74707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3724:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":74703,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89085,"src":"3689:5:105","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Order_$89085_storage_ptr_$","typeString":"type(struct IPriceAggregator.Order storage pointer)"}},"id":74708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3689:40:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_memory_ptr","typeString":"struct IPriceAggregator.Order memory"}},"src":"3671:58:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage","typeString":"struct IPriceAggregator.Order storage ref"}},"id":74710,"nodeType":"ExpressionStatement","src":"3671:58:105"},{"expression":{"id":74711,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74694,"src":"3746:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74690,"id":74712,"nodeType":"Return","src":"3739:14:105"}]},"baseFunctions":[89178],"documentation":{"id":74678,"nodeType":"StructuredDocumentation","src":"3229:246:105","text":" @notice Creates an order and return the order ID\n @param _pairIndex Index of the trading pair\n @param _orderType Type of the order (Market open, Market close etc.)\n @return orderId The ID of the created order"},"functionSelector":"c0a027f4","implemented":true,"kind":"function","modifiers":[{"id":74687,"kind":"modifierInvocation","modifierName":{"id":74686,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":74533,"src":"3555:11:105"},"nodeType":"ModifierInvocation","src":"3555:11:105"}],"name":"getPrice","nameLocation":"3489:8:105","overrides":{"id":74685,"nodeType":"OverrideSpecifier","overrides":[],"src":"3546:8:105"},"parameters":{"id":74684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74680,"mutability":"mutable","name":"_pairIndex","nameLocation":"3503:10:105","nodeType":"VariableDeclaration","scope":74714,"src":"3498:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74679,"name":"uint","nodeType":"ElementaryTypeName","src":"3498:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74683,"mutability":"mutable","name":"_orderType","nameLocation":"3525:10:105","nodeType":"VariableDeclaration","scope":74714,"src":"3515:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"typeName":{"id":74682,"nodeType":"UserDefinedTypeName","pathNode":{"id":74681,"name":"OrderType","nodeType":"IdentifierPath","referencedDeclaration":89075,"src":"3515:9:105"},"referencedDeclaration":89075,"src":"3515:9:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"visibility":"internal"}],"src":"3497:39:105"},"returnParameters":{"id":74690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74714,"src":"3576:4:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74688,"name":"uint","nodeType":"ElementaryTypeName","src":"3576:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3575:6:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75261,"nodeType":"FunctionDefinition","src":"4001:4932:105","nodes":[],"body":{"id":75260,"nodeType":"Block","src":"4104:4829:105","nodes":[],"statements":[{"assignments":[74728],"declarations":[{"constant":false,"id":74728,"mutability":"mutable","name":"r","nameLocation":"4128:1:105","nodeType":"VariableDeclaration","scope":75260,"src":"4114:15:105","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order"},"typeName":{"id":74727,"nodeType":"UserDefinedTypeName","pathNode":{"id":74726,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":89085,"src":"4114:5:105"},"referencedDeclaration":89085,"src":"4114:5:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order"}},"visibility":"internal"}],"id":74732,"initialValue":{"baseExpression":{"id":74729,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74490,"src":"4132:6:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order storage ref)"}},"id":74731,"indexExpression":{"id":74730,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"4139:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4132:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage","typeString":"struct IPriceAggregator.Order storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4114:33:105"},{"condition":{"expression":{"id":74733,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"4162:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initiated","nodeType":"MemberAccess","referencedDeclaration":89084,"src":"4162:11:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75259,"nodeType":"IfStatement","src":"4158:4769:105","trueBody":{"id":75258,"nodeType":"Block","src":"4175:4752:105","statements":[{"assignments":[74736],"declarations":[{"constant":false,"id":74736,"mutability":"mutable","name":"price","nameLocation":"4195:5:105","nodeType":"VariableDeclaration","scope":75258,"src":"4190:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74735,"name":"uint","nodeType":"ElementaryTypeName","src":"4190:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74737,"nodeType":"VariableDeclarationStatement","src":"4190:10:105"},{"assignments":[74742],"declarations":[{"constant":false,"id":74742,"mutability":"mutable","name":"backupFeed","nameLocation":"4245:10:105","nodeType":"VariableDeclaration","scope":75258,"src":"4214:41:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed"},"typeName":{"id":74741,"nodeType":"UserDefinedTypeName","pathNode":{"id":74740,"name":"IPairStorage.BackupFeed","nodeType":"IdentifierPath","referencedDeclaration":88757,"src":"4214:23:105"},"referencedDeclaration":88757,"src":"4214:23:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage_ptr","typeString":"struct IPairStorage.BackupFeed"}},"visibility":"internal"}],"id":74748,"initialValue":{"arguments":[{"expression":{"id":74745,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"4286:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"4286:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":74743,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"4258:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":74744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairBackupFeed","nodeType":"MemberAccess","referencedDeclaration":88924,"src":"4258:27:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_BackupFeed_$88757_memory_ptr_$","typeString":"function (uint256) view external returns (struct IPairStorage.BackupFeed memory)"}},"id":74747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:40:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"nodeType":"VariableDeclarationStatement","src":"4214:84:105"},{"assignments":[74753],"declarations":[{"constant":false,"id":74753,"mutability":"mutable","name":"answers","nameLocation":"4327:7:105","nodeType":"VariableDeclaration","scope":75258,"src":"4312:22:105","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":74751,"name":"uint","nodeType":"ElementaryTypeName","src":"4312:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74752,"nodeType":"ArrayTypeName","src":"4312:6:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":74757,"initialValue":{"baseExpression":{"id":74754,"name":"ordersAnswers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74495,"src":"4337:13:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":74756,"indexExpression":{"id":74755,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"4351:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4337:22:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4312:47:105"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74758,"name":"useBackupOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74472,"src":"4376:13:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":74763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74759,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"4393:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"4393:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":74761,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"4408:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":74762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIMIT_CLOSE","nodeType":"MemberAccess","referencedDeclaration":89072,"src":"4408:21:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"4393:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4376:53:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74765,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"4433:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":74766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"4433:17:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4462:1:105","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":74768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4454:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74767,"name":"address","nodeType":"ElementaryTypeName","src":"4454:7:105","typeDescriptions":{}}},"id":74770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4454:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4433:31:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4376:88:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":74847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5348:14:105","subExpression":{"id":74846,"name":"useBackupOnly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74472,"src":"5349:13:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75098,"nodeType":"IfStatement","src":"5345:2196:105","trueBody":{"id":75097,"nodeType":"Block","src":"5363:2178:105","statements":[{"assignments":[74849],"declarations":[{"constant":false,"id":74849,"mutability":"mutable","name":"fee","nameLocation":"5386:3:105","nodeType":"VariableDeclaration","scope":75097,"src":"5381:8:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74848,"name":"uint","nodeType":"ElementaryTypeName","src":"5381:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74854,"initialValue":{"arguments":[{"id":74852,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74720,"src":"5410:15:105","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":74850,"name":"pyth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74470,"src":"5392:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"id":74851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getUpdateFee","nodeType":"MemberAccess","referencedDeclaration":54100,"src":"5392:17:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory[] memory) view external returns (uint256)"}},"id":74853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5392:34:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5381:45:105"},{"expression":{"arguments":[{"id":74860,"name":"priceUpdateData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74720,"src":"5478:15:105","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":74855,"name":"pyth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74470,"src":"5444:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"id":74857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updatePriceFeeds","nodeType":"MemberAccess","referencedDeclaration":54078,"src":"5444:21:105","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes memory[] memory) payable external"}},"id":74859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":74858,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74849,"src":"5473:3:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5444:33:105","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (bytes memory[] memory) payable external"}},"id":74861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5444:50:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74862,"nodeType":"ExpressionStatement","src":"5444:50:105"},{"assignments":[74867],"declarations":[{"constant":false,"id":74867,"mutability":"mutable","name":"pythPrice","nameLocation":"5538:9:105","nodeType":"VariableDeclaration","scope":75097,"src":"5513:34:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price"},"typeName":{"id":74866,"nodeType":"UserDefinedTypeName","pathNode":{"id":74865,"name":"PythStructs.Price","nodeType":"IdentifierPath","referencedDeclaration":54624,"src":"5513:17:105"},"referencedDeclaration":54624,"src":"5513:17:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_storage_ptr","typeString":"struct PythStructs.Price"}},"visibility":"internal"}],"id":74873,"initialValue":{"arguments":[{"expression":{"id":74870,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"5564:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"job","nodeType":"MemberAccess","referencedDeclaration":89082,"src":"5564:5:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":74868,"name":"pyth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74470,"src":"5550:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPyth_$54119","typeString":"contract IPyth"}},"id":74869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":54022,"src":"5550:13:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_struct$_Price_$54624_memory_ptr_$","typeString":"function (bytes32) view external returns (struct PythStructs.Price memory)"}},"id":74872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5550:20:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"nodeType":"VariableDeclarationStatement","src":"5513:57:105"},{"assignments":[74875],"declarations":[{"constant":false,"id":74875,"mutability":"mutable","name":"conf","nameLocation":"5593:4:105","nodeType":"VariableDeclaration","scope":75097,"src":"5588:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74874,"name":"uint","nodeType":"ElementaryTypeName","src":"5588:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74876,"nodeType":"VariableDeclarationStatement","src":"5588:9:105"},{"condition":{"commonType":{"typeIdentifier":"t_int32","typeString":"int32"},"id":74880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74877,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5619:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"expo","nodeType":"MemberAccess","referencedDeclaration":54621,"src":"5619:14:105","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5636:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5619:18:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":74952,"nodeType":"Block","src":"5848:209:105","statements":[{"expression":{"id":74933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74915,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"5870:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":74918,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5886:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":54617,"src":"5886:15:105","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int64","typeString":"int64"}],"id":74917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5879:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":74916,"name":"uint64","nodeType":"ElementaryTypeName","src":"5879:6:105","typeDescriptions":{}}},"id":74920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5879:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74921,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"5905:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5879:36:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74923,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5878:38:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":74924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5919:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"id":74929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5932:15:105","subExpression":{"expression":{"id":74927,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5933:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"expo","nodeType":"MemberAccess","referencedDeclaration":54621,"src":"5933:14:105","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int32","typeString":"int32"}],"id":74926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5925:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":74925,"name":"uint32","nodeType":"ElementaryTypeName","src":"5925:6:105","typeDescriptions":{}}},"id":74930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5925:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5919:29:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5878:70:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5870:78:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74934,"nodeType":"ExpressionStatement","src":"5870:78:105"},{"expression":{"id":74950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74935,"name":"conf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74875,"src":"5970:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74936,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5978:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"conf","nodeType":"MemberAccess","referencedDeclaration":54619,"src":"5978:14:105","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74938,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"5995:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5978:27:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5977:29:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":74941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6009:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"id":74946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6022:15:105","subExpression":{"expression":{"id":74944,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"6023:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"expo","nodeType":"MemberAccess","referencedDeclaration":54621,"src":"6023:14:105","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int32","typeString":"int32"}],"id":74943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6015:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":74942,"name":"uint32","nodeType":"ElementaryTypeName","src":"6015:6:105","typeDescriptions":{}}},"id":74947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6015:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6009:29:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:61:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5970:68:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74951,"nodeType":"ExpressionStatement","src":"5970:68:105"}]},"id":74953,"nodeType":"IfStatement","src":"5615:442:105","trueBody":{"id":74914,"nodeType":"Block","src":"5639:203:105","statements":[{"expression":{"id":74897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74881,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"5661:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":74884,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5676:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":54617,"src":"5676:15:105","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int64","typeString":"int64"}],"id":74883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5669:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":74882,"name":"uint64","nodeType":"ElementaryTypeName","src":"5669:6:105","typeDescriptions":{}}},"id":74886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5669:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74887,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"5695:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5669:36:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":74889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5708:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"expression":{"id":74892,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5721:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"expo","nodeType":"MemberAccess","referencedDeclaration":54621,"src":"5721:14:105","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int32","typeString":"int32"}],"id":74891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5714:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":74890,"name":"uint32","nodeType":"ElementaryTypeName","src":"5714:6:105","typeDescriptions":{}}},"id":74894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5714:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5708:28:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5669:67:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5661:75:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74898,"nodeType":"ExpressionStatement","src":"5661:75:105"},{"expression":{"id":74912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74899,"name":"conf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74875,"src":"5758:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74900,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5765:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"conf","nodeType":"MemberAccess","referencedDeclaration":54619,"src":"5765:14:105","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74902,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"5782:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5765:27:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":74904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5795:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"expression":{"id":74907,"name":"pythPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74867,"src":"5808:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$54624_memory_ptr","typeString":"struct PythStructs.Price memory"}},"id":74908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"expo","nodeType":"MemberAccess","referencedDeclaration":54621,"src":"5808:14:105","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int32","typeString":"int32"}],"id":74906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5801:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":74905,"name":"uint32","nodeType":"ElementaryTypeName","src":"5801:6:105","typeDescriptions":{}}},"id":74909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5801:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5795:28:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5765:58:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5758:65:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74913,"nodeType":"ExpressionStatement","src":"5758:65:105"}]}},{"assignments":[74958],"declarations":[{"constant":false,"id":74958,"mutability":"mutable","name":"f","nameLocation":"6100:1:105","nodeType":"VariableDeclaration","scope":75097,"src":"6075:26:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_memory_ptr","typeString":"struct IPairStorage.Feed"},"typeName":{"id":74957,"nodeType":"UserDefinedTypeName","pathNode":{"id":74956,"name":"IPairStorage.Feed","nodeType":"IdentifierPath","referencedDeclaration":88752,"src":"6075:17:105"},"referencedDeclaration":88752,"src":"6075:17:105","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage_ptr","typeString":"struct IPairStorage.Feed"}},"visibility":"internal"}],"id":74964,"initialValue":{"arguments":[{"expression":{"id":74961,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"6126:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"6126:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":74959,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"6104:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":74960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFeed","nodeType":"MemberAccess","referencedDeclaration":88916,"src":"6104:21:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_Feed_$88752_memory_ptr_$","typeString":"function (uint256) view external returns (struct IPairStorage.Feed memory)"}},"id":74963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6104:34:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_memory_ptr","typeString":"struct IPairStorage.Feed memory"}},"nodeType":"VariableDeclarationStatement","src":"6075:63:105"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74966,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"6166:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6174:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6166:9:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74969,"name":"conf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74875,"src":"6181:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74970,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"6188:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6181:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"313030","id":74972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6201:3:105","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"6181:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6180:25:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":74975,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"6208:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6180:33:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74977,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6179:35:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":74978,"name":"f","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74958,"src":"6218:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_memory_ptr","typeString":"struct IPairStorage.Feed memory"}},"id":74979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88749,"src":"6218:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6179:54:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6166:67:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50524943455f444556494154494f4e5f544f4f5f48494748","id":74982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6235:26:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_cfd6e10ea9d246c4a7ac0daea5fcedb518e408fe9624c72353a890541aa33a5b","typeString":"literal_string \"PRICE_DEVIATION_TOO_HIGH\""},"value":"PRICE_DEVIATION_TOO_HIGH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cfd6e10ea9d246c4a7ac0daea5fcedb518e408fe9624c72353a890541aa33a5b","typeString":"literal_string \"PRICE_DEVIATION_TOO_HIGH\""}],"id":74965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6158:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6158:104:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74984,"nodeType":"ExpressionStatement","src":"6158:104:105"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74985,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"6285:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":74986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88754,"src":"6285:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6312:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6285:28:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74989,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"6317:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":74990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"6317:17:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6346:1:105","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":74992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6338:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74991,"name":"address","nodeType":"ElementaryTypeName","src":"6338:7:105","typeDescriptions":{}}},"id":74994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6338:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6317:31:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6285:63:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75096,"nodeType":"IfStatement","src":"6281:1246:105","trueBody":{"id":75095,"nodeType":"Block","src":"6350:1177:105","statements":[{"assignments":[74999],"declarations":[{"constant":false,"id":74999,"mutability":"mutable","name":"chainlinkFeed","nameLocation":"6396:13:105","nodeType":"VariableDeclaration","scope":75095,"src":"6372:37:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"},"typeName":{"id":74998,"nodeType":"UserDefinedTypeName","pathNode":{"id":74997,"name":"AggregatorV2V3Interface","nodeType":"IdentifierPath","referencedDeclaration":56,"src":"6372:23:105"},"referencedDeclaration":56,"src":"6372:23:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"visibility":"internal"}],"id":75004,"initialValue":{"arguments":[{"expression":{"id":75001,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"6436:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":75002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"6436:17:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75000,"name":"AggregatorV2V3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"6412:23:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AggregatorV2V3Interface_$56_$","typeString":"type(contract AggregatorV2V3Interface)"}},"id":75003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6412:42:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"nodeType":"VariableDeclarationStatement","src":"6372:82:105"},{"assignments":[null,75006,null,75008,null],"declarations":[null,{"constant":false,"id":75006,"mutability":"mutable","name":"rawBkPrice","nameLocation":"6486:10:105","nodeType":"VariableDeclaration","scope":75095,"src":"6479:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":75005,"name":"int256","nodeType":"ElementaryTypeName","src":"6479:6:105","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},null,{"constant":false,"id":75008,"mutability":"mutable","name":"updatedAt","nameLocation":"6505:9:105","nodeType":"VariableDeclaration","scope":75095,"src":"6500:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75007,"name":"uint","nodeType":"ElementaryTypeName","src":"6500:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":75012,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75009,"name":"chainlinkFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74999,"src":"6521:13:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"id":75010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"latestRoundData","nodeType":"MemberAccess","referencedDeclaration":101,"src":"6521:29:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function () view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":75011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6521:31:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"6476:76:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75013,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75008,"src":"6610:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":75014,"name":"chainlinkValidityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74485,"src":"6622:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6610:35:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":75016,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6649:5:105","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":75017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"6649:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6610:54:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75094,"nodeType":"IfStatement","src":"6607:902:105","trueBody":{"id":75093,"nodeType":"Block","src":"6665:844:105","statements":[{"assignments":[75020],"declarations":[{"constant":false,"id":75020,"mutability":"mutable","name":"bkPrice","nameLocation":"6696:7:105","nodeType":"VariableDeclaration","scope":75093,"src":"6691:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75019,"name":"uint","nodeType":"ElementaryTypeName","src":"6691:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75037,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":75023,"name":"rawBkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75006,"src":"6715:10:105","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":75022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6707:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":75021,"name":"uint256","nodeType":"ElementaryTypeName","src":"6707:7:105","typeDescriptions":{}}},"id":75024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6707:19:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":75025,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"6729:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6707:32:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75027,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6706:34:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":75028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6743:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75031,"name":"chainlinkFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74999,"src":"6755:13:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"id":75032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":63,"src":"6755:22:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":75033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6755:24:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":75030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6749:5:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":75029,"name":"uint8","nodeType":"ElementaryTypeName","src":"6749:5:105","typeDescriptions":{}}},"id":75034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6749:31:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6743:37:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6706:74:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6691:89:105"},{"eventCall":{"arguments":[{"id":75039,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"6831:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75040,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"6840:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75041,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"6840:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75042,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"6853:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75038,"name":"BackupPriceReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89148,"src":"6811:19:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":75043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6811:50:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75044,"nodeType":"EmitStatement","src":"6806:55:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75045,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"6892:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":75046,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"6902:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6892:15:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75068,"nodeType":"IfStatement","src":"6888:286:105","trueBody":{"id":75067,"nodeType":"Block","src":"6909:265:105","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75049,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"6983:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":75050,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"6993:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6983:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75052,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6982:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"313030","id":75053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7002:3:105","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"6982:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":75055,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"7008:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6982:36:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6981:38:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":75058,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"7022:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6981:46:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75060,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6980:48:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":75061,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"7032:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":75062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88754,"src":"7032:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6980:76:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4241434b55505f444556494154494f4e5f544f4f5f48494748","id":75064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7090:27:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad8528342a7431caaf82d5f6464130f837b6d5e0770cfc58c76b07f3bdc76b4a","typeString":"literal_string \"BACKUP_DEVIATION_TOO_HIGH\""},"value":"BACKUP_DEVIATION_TOO_HIGH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ad8528342a7431caaf82d5f6464130f837b6d5e0770cfc58c76b07f3bdc76b4a","typeString":"literal_string \"BACKUP_DEVIATION_TOO_HIGH\""}],"id":75048,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6939:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6939:208:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75066,"nodeType":"ExpressionStatement","src":"6939:208:105"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75069,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"7203:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":75070,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"7213:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7203:15:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75092,"nodeType":"IfStatement","src":"7199:288:105","trueBody":{"id":75091,"nodeType":"Block","src":"7220:267:105","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75073,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"7294:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":75074,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"7302:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7294:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75076,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7293:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"313030","id":75077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7313:3:105","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7293:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":75079,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"7319:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7293:36:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75081,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7292:38:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":75082,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75020,"src":"7333:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7292:48:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7291:50:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":75085,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"7345:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":75086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88754,"src":"7345:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7291:78:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4241434b55505f444556494154494f4e5f544f4f5f48494748","id":75088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7403:27:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad8528342a7431caaf82d5f6464130f837b6d5e0770cfc58c76b07f3bdc76b4a","typeString":"literal_string \"BACKUP_DEVIATION_TOO_HIGH\""},"value":"BACKUP_DEVIATION_TOO_HIGH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ad8528342a7431caaf82d5f6464130f837b6d5e0770cfc58c76b07f3bdc76b4a","typeString":"literal_string \"BACKUP_DEVIATION_TOO_HIGH\""}],"id":75072,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7250:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7250:210:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75090,"nodeType":"ExpressionStatement","src":"7250:210:105"}]}}]}}]}}]}},"id":75099,"nodeType":"IfStatement","src":"4373:3168:105","trueBody":{"id":74845,"nodeType":"Block","src":"4465:862:105","statements":[{"assignments":[74777],"declarations":[{"constant":false,"id":74777,"mutability":"mutable","name":"o","nameLocation":"4524:1:105","nodeType":"VariableDeclaration","scope":74845,"src":"4483:42:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"},"typeName":{"id":74776,"nodeType":"UserDefinedTypeName","pathNode":{"id":74775,"name":"ITradingStorage.PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"4483:33:105"},"referencedDeclaration":89494,"src":"4483:33:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}},"visibility":"internal"}],"id":74782,"initialValue":{"arguments":[{"id":74780,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"4560:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":74778,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"4528:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reqIDpendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89740,"src":"4528:31:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingLimitOrder_$89494_memory_ptr_$","typeString":"function (uint256) view external returns (struct ITradingStorage.PendingLimitOrder memory)"}},"id":74781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4528:40:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"4483:85:105"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":74788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74783,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74777,"src":"4589:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":74784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"4589:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":74785,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"4604:15:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":74786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"4604:26:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":74787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQ","nodeType":"MemberAccess","referencedDeclaration":89403,"src":"4604:30:105","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"4589:45:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74844,"nodeType":"IfStatement","src":"4586:727:105","trueBody":{"id":74843,"nodeType":"Block","src":"4635:678:105","statements":[{"assignments":[74791],"declarations":[{"constant":false,"id":74791,"mutability":"mutable","name":"chainlinkFeed","nameLocation":"4767:13:105","nodeType":"VariableDeclaration","scope":74843,"src":"4743:37:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"},"typeName":{"id":74790,"nodeType":"UserDefinedTypeName","pathNode":{"id":74789,"name":"AggregatorV2V3Interface","nodeType":"IdentifierPath","referencedDeclaration":56,"src":"4743:23:105"},"referencedDeclaration":56,"src":"4743:23:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"visibility":"internal"}],"id":74796,"initialValue":{"arguments":[{"expression":{"id":74793,"name":"backupFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74742,"src":"4807:10:105","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":74794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"4807:17:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74792,"name":"AggregatorV2V3Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"4783:23:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AggregatorV2V3Interface_$56_$","typeString":"type(contract AggregatorV2V3Interface)"}},"id":74795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4783:42:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"nodeType":"VariableDeclarationStatement","src":"4743:82:105"},{"assignments":[null,74798,null,74800,null],"declarations":[null,{"constant":false,"id":74798,"mutability":"mutable","name":"rawBkPrice","nameLocation":"4857:10:105","nodeType":"VariableDeclaration","scope":74843,"src":"4850:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":74797,"name":"int256","nodeType":"ElementaryTypeName","src":"4850:6:105","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},null,{"constant":false,"id":74800,"mutability":"mutable","name":"updatedAt","nameLocation":"4875:9:105","nodeType":"VariableDeclaration","scope":74843,"src":"4870:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74799,"name":"uint","nodeType":"ElementaryTypeName","src":"4870:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":74804,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":74801,"name":"chainlinkFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74791,"src":"4891:13:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"id":74802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"latestRoundData","nodeType":"MemberAccess","referencedDeclaration":101,"src":"4891:29:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"function () view external returns (uint80,int256,uint256,uint256,uint80)"}},"id":74803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4891:31:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$","typeString":"tuple(uint80,int256,uint256,uint256,uint80)"}},"nodeType":"VariableDeclarationStatement","src":"4847:75:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74805,"name":"updatedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74800,"src":"4980:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":74806,"name":"chainlinkValidityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74485,"src":"4992:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4980:35:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":74808,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5019:5:105","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":74809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5019:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4980:54:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74842,"nodeType":"IfStatement","src":"4977:318:105","trueBody":{"id":74841,"nodeType":"Block","src":"5035:260:105","statements":[{"assignments":[74812],"declarations":[{"constant":false,"id":74812,"mutability":"mutable","name":"bkPrice","nameLocation":"5066:7:105","nodeType":"VariableDeclaration","scope":74841,"src":"5061:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74811,"name":"uint","nodeType":"ElementaryTypeName","src":"5061:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74829,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74815,"name":"rawBkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74798,"src":"5085:10:105","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":74814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5077:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":74813,"name":"uint256","nodeType":"ElementaryTypeName","src":"5077:7:105","typeDescriptions":{}}},"id":74816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5077:19:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74817,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"5099:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5077:32:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5076:34:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":74820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5113:2:105","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":74823,"name":"chainlinkFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74791,"src":"5125:13:105","typeDescriptions":{"typeIdentifier":"t_contract$_AggregatorV2V3Interface_$56","typeString":"contract AggregatorV2V3Interface"}},"id":74824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":63,"src":"5125:22:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":74825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5125:24:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":74822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5119:5:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":74821,"name":"uint8","nodeType":"ElementaryTypeName","src":"5119:5:105","typeDescriptions":{}}},"id":74826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5119:31:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5113:37:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:74:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5061:89:105"},{"expression":{"id":74832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74830,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"5176:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74831,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74812,"src":"5184:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5176:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74833,"nodeType":"ExpressionStatement","src":"5176:15:105"},{"eventCall":{"arguments":[{"id":74835,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"5242:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":74836,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"5251:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":74837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"5251:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74838,"name":"bkPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74812,"src":"5264:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74834,"name":"BackupPriceReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89148,"src":"5222:19:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":74839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5222:50:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74840,"nodeType":"EmitStatement","src":"5217:55:105"}]}}]}}]}},{"expression":{"arguments":[{"id":75103,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"7568:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75100,"name":"answers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"7555:7:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":75102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"7555:12:105","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":75104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7555:19:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75105,"nodeType":"ExpressionStatement","src":"7555:19:105"},{"eventCall":{"arguments":[{"id":75107,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"7607:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75108,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"7616:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"7616:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75110,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"7629:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75106,"name":"PriceReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89140,"src":"7593:13:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":75111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7593:42:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75112,"nodeType":"EmitStatement","src":"7588:47:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75113,"name":"answers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"7654:7:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":75114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7654:14:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":75115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7671:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7654:18:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75257,"nodeType":"IfStatement","src":"7650:1267:105","trueBody":{"id":75256,"nodeType":"Block","src":"7674:1243:105","statements":[{"assignments":[75121],"declarations":[{"constant":false,"id":75121,"mutability":"mutable","name":"a","nameLocation":"7727:1:105","nodeType":"VariableDeclaration","scope":75256,"src":"7692:36:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer"},"typeName":{"id":75120,"nodeType":"UserDefinedTypeName","pathNode":{"id":75119,"name":"ICallbacks.AggregatorAnswer","nodeType":"IdentifierPath","referencedDeclaration":88062,"src":"7692:27:105"},"referencedDeclaration":88062,"src":"7692:27:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_storage_ptr","typeString":"struct ICallbacks.AggregatorAnswer"}},"visibility":"internal"}],"id":75134,"initialValue":{"arguments":[{"id":75124,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"7780:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":75126,"name":"answers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"7817:7:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}],"id":75125,"name":"_median","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75564,"src":"7809:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7809:16:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":75130,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"7872:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89077,"src":"7872:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75128,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"7847:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":75129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairSpreadP","nodeType":"MemberAccess","referencedDeclaration":88931,"src":"7847:24:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":75132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7847:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75122,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88257,"src":"7731:10:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$88257_$","typeString":"type(contract ICallbacks)"}},"id":75123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AggregatorAnswer","nodeType":"MemberAccess","referencedDeclaration":88062,"src":"7731:27:105","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AggregatorAnswer_$88062_storage_ptr_$","typeString":"type(struct ICallbacks.AggregatorAnswer storage pointer)"}},"id":75133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7731:171:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"nodeType":"VariableDeclarationStatement","src":"7692:210:105"},{"assignments":[75137],"declarations":[{"constant":false,"id":75137,"mutability":"mutable","name":"c","nameLocation":"7932:1:105","nodeType":"VariableDeclaration","scope":75256,"src":"7921:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"},"typeName":{"id":75136,"nodeType":"UserDefinedTypeName","pathNode":{"id":75135,"name":"ICallbacks","nodeType":"IdentifierPath","referencedDeclaration":88257,"src":"7921:10:105"},"referencedDeclaration":88257,"src":"7921:10:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"visibility":"internal"}],"id":75143,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75139,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"7947:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":75140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"callbacks","nodeType":"MemberAccess","referencedDeclaration":89608,"src":"7947:18:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7947:20:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75138,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88257,"src":"7936:10:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$88257_$","typeString":"type(contract ICallbacks)"}},"id":75142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7936:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"nodeType":"VariableDeclarationStatement","src":"7921:47:105"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":75148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75144,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"7991:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"7991:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75146,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"8006:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":75147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_OPEN","nodeType":"MemberAccess","referencedDeclaration":89069,"src":"8006:21:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"7991:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":75165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75161,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"8136:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"8136:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75163,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"8151:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":75164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"MARKET_CLOSE","nodeType":"MemberAccess","referencedDeclaration":89070,"src":"8151:22:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"8136:37:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":75182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75178,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"8283:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"8283:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75180,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"8298:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":75181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIMIT_OPEN","nodeType":"MemberAccess","referencedDeclaration":89071,"src":"8298:20:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"8283:35:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":75199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75195,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"8433:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"8433:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75197,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"8448:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":75198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIMIT_CLOSE","nodeType":"MemberAccess","referencedDeclaration":89072,"src":"8448:21:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"8433:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"},"id":75216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75212,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"8585:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order storage pointer"}},"id":75213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89080,"src":"8585:11:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75214,"name":"OrderType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89075,"src":"8600:9:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OrderType_$89075_$","typeString":"type(enum IPriceAggregator.OrderType)"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UPDATE_MARGIN","nodeType":"MemberAccess","referencedDeclaration":89073,"src":"8600:23:105","typeDescriptions":{"typeIdentifier":"t_enum$_OrderType_$89075","typeString":"enum IPriceAggregator.OrderType"}},"src":"8585:38:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75240,"nodeType":"Block","src":"8725:90:105","statements":[{"expression":{"arguments":[{"expression":{"id":75232,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8766:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8766:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75234,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8777:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8777:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75236,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8786:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8786:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75229,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8747:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateSlCallback","nodeType":"MemberAccess","referencedDeclaration":88214,"src":"8747:18:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8747:49:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75239,"nodeType":"ExpressionStatement","src":"8747:49:105"}]},"id":75241,"nodeType":"IfStatement","src":"8581:234:105","trueBody":{"id":75228,"nodeType":"Block","src":"8625:94:105","statements":[{"expression":{"arguments":[{"expression":{"id":75220,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8670:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8670:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75222,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8681:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75223,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8681:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75224,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8690:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8690:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75217,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8647:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateMarginCallback","nodeType":"MemberAccess","referencedDeclaration":88223,"src":"8647:22:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8647:53:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75227,"nodeType":"ExpressionStatement","src":"8647:53:105"}]}},"id":75242,"nodeType":"IfStatement","src":"8429:386:105","trueBody":{"id":75211,"nodeType":"Block","src":"8471:104:105","statements":[{"expression":{"arguments":[{"expression":{"id":75203,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8526:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8526:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75205,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8537:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8537:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75207,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8546:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8546:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75200,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8493:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeLimitCloseOrderCallback","nodeType":"MemberAccess","referencedDeclaration":88205,"src":"8493:32:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8493:63:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75210,"nodeType":"ExpressionStatement","src":"8493:63:105"}]}},"id":75243,"nodeType":"IfStatement","src":"8279:536:105","trueBody":{"id":75194,"nodeType":"Block","src":"8320:103:105","statements":[{"expression":{"arguments":[{"expression":{"id":75186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8374:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8374:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75188,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8385:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8385:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8394:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8394:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75183,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8342:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executeLimitOpenOrderCallback","nodeType":"MemberAccess","referencedDeclaration":88196,"src":"8342:31:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8342:62:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75193,"nodeType":"ExpressionStatement","src":"8342:62:105"}]}},"id":75244,"nodeType":"IfStatement","src":"8132:683:105","trueBody":{"id":75177,"nodeType":"Block","src":"8175:98:105","statements":[{"expression":{"arguments":[{"expression":{"id":75169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8224:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8224:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75171,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8235:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8235:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75173,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8244:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8244:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75166,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8197:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"closeTradeMarketCallback","nodeType":"MemberAccess","referencedDeclaration":88187,"src":"8197:26:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8197:57:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75176,"nodeType":"ExpressionStatement","src":"8197:57:105"}]}},"id":75245,"nodeType":"IfStatement","src":"7987:828:105","trueBody":{"id":75160,"nodeType":"Block","src":"8029:97:105","statements":[{"expression":{"arguments":[{"expression":{"id":75152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8077:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderId","nodeType":"MemberAccess","referencedDeclaration":88057,"src":"8077:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75154,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8088:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":88059,"src":"8088:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75156,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75121,"src":"8097:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatorAnswer_$88062_memory_ptr","typeString":"struct ICallbacks.AggregatorAnswer memory"}},"id":75157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88061,"src":"8097:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75149,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75137,"src":"8051:1:105","typeDescriptions":{"typeIdentifier":"t_contract$_ICallbacks_$88257","typeString":"contract ICallbacks"}},"id":75151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradeMarketCallback","nodeType":"MemberAccess","referencedDeclaration":88178,"src":"8051:25:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) external"}},"id":75158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8051:56:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75159,"nodeType":"ExpressionStatement","src":"8051:56:105"}]}},{"expression":{"id":75249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8833:22:105","subExpression":{"baseExpression":{"id":75246,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74490,"src":"8840:6:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order storage ref)"}},"id":75248,"indexExpression":{"id":75247,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"8847:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8840:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage","typeString":"struct IPriceAggregator.Order storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75250,"nodeType":"ExpressionStatement","src":"8833:22:105"},{"expression":{"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8873:29:105","subExpression":{"baseExpression":{"id":75251,"name":"ordersAnswers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74495,"src":"8880:13:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(uint256 => uint256[] storage ref)"}},"id":75253,"indexExpression":{"id":75252,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74717,"src":"8894:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8880:22:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75255,"nodeType":"ExpressionStatement","src":"8873:29:105"}]}}]}}]},"baseFunctions":[89186],"documentation":{"id":74715,"nodeType":"StructuredDocumentation","src":"3766:230:105","text":" @notice Fulfill an order by updating price feeds and invoking corresponding callbacks\n @param orderId The ID of the order to fulfill\n @param priceUpdateData Data required for updating the price feed"},"functionSelector":"dd2f3c05","implemented":true,"kind":"function","modifiers":[{"id":74724,"kind":"modifierInvocation","modifierName":{"id":74723,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":74533,"src":"4092:11:105"},"nodeType":"ModifierInvocation","src":"4092:11:105"}],"name":"fulfill","nameLocation":"4010:7:105","overrides":{"id":74722,"nodeType":"OverrideSpecifier","overrides":[],"src":"4083:8:105"},"parameters":{"id":74721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74717,"mutability":"mutable","name":"orderId","nameLocation":"4023:7:105","nodeType":"VariableDeclaration","scope":75261,"src":"4018:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74716,"name":"uint","nodeType":"ElementaryTypeName","src":"4018:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74720,"mutability":"mutable","name":"priceUpdateData","nameLocation":"4049:15:105","nodeType":"VariableDeclaration","scope":75261,"src":"4032:32:105","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":74718,"name":"bytes","nodeType":"ElementaryTypeName","src":"4032:5:105","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":74719,"nodeType":"ArrayTypeName","src":"4032:7:105","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"4017:48:105"},"returnParameters":{"id":74725,"nodeType":"ParameterList","parameters":[],"src":"4104:0:105"},"scope":75565,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":75280,"nodeType":"FunctionDefinition","src":"9149:141:105","nodes":[],"body":{"id":75279,"nodeType":"Block","src":"9244:46:105","nodes":[],"statements":[{"expression":{"id":75277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75273,"name":"_pendingSlOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"9254:16:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingSl_$89098_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingSl storage ref)"}},"id":75275,"indexExpression":{"id":75274,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75264,"src":"9271:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9254:25:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage","typeString":"struct IPriceAggregator.PendingSl storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75276,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75267,"src":"9282:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_calldata_ptr","typeString":"struct IPriceAggregator.PendingSl calldata"}},"src":"9254:29:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage","typeString":"struct IPriceAggregator.PendingSl storage ref"}},"id":75278,"nodeType":"ExpressionStatement","src":"9254:29:105"}]},"baseFunctions":[89221],"documentation":{"id":75262,"nodeType":"StructuredDocumentation","src":"8939:205:105","text":" @notice Store information about a pending stop-loss (SL) order\n @param orderId The ID of the order\n @param p Data structure containing information about the pending SL order"},"functionSelector":"b8213bfa","implemented":true,"kind":"function","modifiers":[{"id":75271,"kind":"modifierInvocation","modifierName":{"id":75270,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":74533,"src":"9232:11:105"},"nodeType":"ModifierInvocation","src":"9232:11:105"}],"name":"storePendingSlOrder","nameLocation":"9158:19:105","overrides":{"id":75269,"nodeType":"OverrideSpecifier","overrides":[],"src":"9223:8:105"},"parameters":{"id":75268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75264,"mutability":"mutable","name":"orderId","nameLocation":"9183:7:105","nodeType":"VariableDeclaration","scope":75280,"src":"9178:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75263,"name":"uint","nodeType":"ElementaryTypeName","src":"9178:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75267,"mutability":"mutable","name":"p","nameLocation":"9211:1:105","nodeType":"VariableDeclaration","scope":75280,"src":"9192:20:105","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_calldata_ptr","typeString":"struct IPriceAggregator.PendingSl"},"typeName":{"id":75266,"nodeType":"UserDefinedTypeName","pathNode":{"id":75265,"name":"PendingSl","nodeType":"IdentifierPath","referencedDeclaration":89098,"src":"9192:9:105"},"referencedDeclaration":89098,"src":"9192:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage_ptr","typeString":"struct IPriceAggregator.PendingSl"}},"visibility":"internal"}],"src":"9177:36:105"},"returnParameters":{"id":75272,"nodeType":"ParameterList","parameters":[],"src":"9244:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75299,"nodeType":"FunctionDefinition","src":"9516:171:105","nodes":[],"body":{"id":75298,"nodeType":"Block","src":"9631:56:105","nodes":[],"statements":[{"expression":{"id":75296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75292,"name":"_pendingMarginUpdateOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74505,"src":"9641:26:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingMarginUpdate storage ref)"}},"id":75294,"indexExpression":{"id":75293,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75283,"src":"9668:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9641:35:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage","typeString":"struct IPriceAggregator.PendingMarginUpdate storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75295,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75286,"src":"9679:1:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_calldata_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate calldata"}},"src":"9641:39:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage","typeString":"struct IPriceAggregator.PendingMarginUpdate storage ref"}},"id":75297,"nodeType":"ExpressionStatement","src":"9641:39:105"}]},"baseFunctions":[89229],"documentation":{"id":75281,"nodeType":"StructuredDocumentation","src":"9296:215:105","text":" @notice Store information about a pending margin update order\n @param orderId The ID of the order\n @param p Data structure containing information about the pending margin update order"},"functionSelector":"cbe91bd9","implemented":true,"kind":"function","modifiers":[{"id":75290,"kind":"modifierInvocation","modifierName":{"id":75289,"name":"onlyTrading","nodeType":"IdentifierPath","referencedDeclaration":74533,"src":"9619:11:105"},"nodeType":"ModifierInvocation","src":"9619:11:105"}],"name":"storePendingMarginUpdateOrder","nameLocation":"9525:29:105","overrides":{"id":75288,"nodeType":"OverrideSpecifier","overrides":[],"src":"9610:8:105"},"parameters":{"id":75287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75283,"mutability":"mutable","name":"orderId","nameLocation":"9560:7:105","nodeType":"VariableDeclaration","scope":75299,"src":"9555:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75282,"name":"uint","nodeType":"ElementaryTypeName","src":"9555:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75286,"mutability":"mutable","name":"p","nameLocation":"9598:1:105","nodeType":"VariableDeclaration","scope":75299,"src":"9569:30:105","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_calldata_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"},"typeName":{"id":75285,"nodeType":"UserDefinedTypeName","pathNode":{"id":75284,"name":"PendingMarginUpdate","nodeType":"IdentifierPath","referencedDeclaration":89116,"src":"9569:19:105"},"referencedDeclaration":89116,"src":"9569:19:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"}},"visibility":"internal"}],"src":"9554:46:105"},"returnParameters":{"id":75291,"nodeType":"ParameterList","parameters":[],"src":"9631:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75322,"nodeType":"FunctionDefinition","src":"9820:186:105","nodes":[],"body":{"id":75321,"nodeType":"Block","src":"9886:120:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75307,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9904:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9904:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75309,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"9918:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":75310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"callbacks","nodeType":"MemberAccess","referencedDeclaration":89608,"src":"9918:18:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9918:20:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9904:34:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43414c4c4241434b535f4f4e4c59","id":75313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9940:16:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""},"value":"CALLBACKS_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""}],"id":75306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9896:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9896:61:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75315,"nodeType":"ExpressionStatement","src":"9896:61:105"},{"expression":{"id":75319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9967:32:105","subExpression":{"baseExpression":{"id":75316,"name":"_pendingSlOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"9974:16:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingSl_$89098_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingSl storage ref)"}},"id":75318,"indexExpression":{"id":75317,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75302,"src":"9991:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9974:25:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage","typeString":"struct IPriceAggregator.PendingSl storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75320,"nodeType":"ExpressionStatement","src":"9967:32:105"}]},"baseFunctions":[89234],"documentation":{"id":75300,"nodeType":"StructuredDocumentation","src":"9693:122:105","text":" @notice Deletes a pending stop-loss (SL) order\n @param orderId The ID of the order to unregister"},"functionSelector":"61417a43","implemented":true,"kind":"function","modifiers":[],"name":"unregisterPendingSlOrder","nameLocation":"9829:24:105","overrides":{"id":75304,"nodeType":"OverrideSpecifier","overrides":[],"src":"9877:8:105"},"parameters":{"id":75303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75302,"mutability":"mutable","name":"orderId","nameLocation":"9859:7:105","nodeType":"VariableDeclaration","scope":75322,"src":"9854:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75301,"name":"uint","nodeType":"ElementaryTypeName","src":"9854:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9853:14:105"},"returnParameters":{"id":75305,"nodeType":"ParameterList","parameters":[],"src":"9886:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75345,"nodeType":"FunctionDefinition","src":"10138:206:105","nodes":[],"body":{"id":75344,"nodeType":"Block","src":"10214:130:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75330,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10232:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10232:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75332,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74475,"src":"10246:8:105","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":75333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"callbacks","nodeType":"MemberAccess","referencedDeclaration":89608,"src":"10246:18:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10246:20:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10232:34:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43414c4c4241434b535f4f4e4c59","id":75336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10268:16:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""},"value":"CALLBACKS_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""}],"id":75329,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10224:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10224:61:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75338,"nodeType":"ExpressionStatement","src":"10224:61:105"},{"expression":{"id":75342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10295:42:105","subExpression":{"baseExpression":{"id":75339,"name":"_pendingMarginUpdateOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74505,"src":"10302:26:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingMarginUpdate storage ref)"}},"id":75341,"indexExpression":{"id":75340,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75325,"src":"10329:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10302:35:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage","typeString":"struct IPriceAggregator.PendingMarginUpdate storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75343,"nodeType":"ExpressionStatement","src":"10295:42:105"}]},"baseFunctions":[89239],"documentation":{"id":75323,"nodeType":"StructuredDocumentation","src":"10012:121:105","text":" @notice Deletes a pending margin update order\n @param orderId The ID of the order to unregister"},"functionSelector":"c61904a1","implemented":true,"kind":"function","modifiers":[],"name":"unregisterPendingMarginUpdateOrder","nameLocation":"10147:34:105","overrides":{"id":75327,"nodeType":"OverrideSpecifier","overrides":[],"src":"10205:8:105"},"parameters":{"id":75326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75325,"mutability":"mutable","name":"orderId","nameLocation":"10187:7:105","nodeType":"VariableDeclaration","scope":75345,"src":"10182:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75324,"name":"uint","nodeType":"ElementaryTypeName","src":"10182:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10181:14:105"},"returnParameters":{"id":75328,"nodeType":"ParameterList","parameters":[],"src":"10214:0:105"},"scope":75565,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75360,"nodeType":"FunctionDefinition","src":"10553:134:105","nodes":[],"body":{"id":75359,"nodeType":"Block","src":"10640:47:105","nodes":[],"statements":[{"expression":{"baseExpression":{"id":75355,"name":"_pendingSlOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"10657:16:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingSl_$89098_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingSl storage ref)"}},"id":75357,"indexExpression":{"id":75356,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75348,"src":"10674:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10657:23:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage","typeString":"struct IPriceAggregator.PendingSl storage ref"}},"functionReturnParameters":75354,"id":75358,"nodeType":"Return","src":"10650:30:105"}]},"baseFunctions":[89205],"documentation":{"id":75346,"nodeType":"StructuredDocumentation","src":"10350:198:105","text":" @notice Retrieves pending stop-loss (SL) order\n @param index The index of the pending SL order\n @return A struct containing the information about the pending SL order"},"functionSelector":"37a3dba3","implemented":true,"kind":"function","modifiers":[],"name":"pendingSlOrders","nameLocation":"10562:15:105","overrides":{"id":75350,"nodeType":"OverrideSpecifier","overrides":[],"src":"10604:8:105"},"parameters":{"id":75349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75348,"mutability":"mutable","name":"index","nameLocation":"10583:5:105","nodeType":"VariableDeclaration","scope":75360,"src":"10578:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75347,"name":"uint","nodeType":"ElementaryTypeName","src":"10578:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10577:12:105"},"returnParameters":{"id":75354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75360,"src":"10622:16:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl"},"typeName":{"id":75352,"nodeType":"UserDefinedTypeName","pathNode":{"id":75351,"name":"PendingSl","nodeType":"IdentifierPath","referencedDeclaration":89098,"src":"10622:9:105"},"referencedDeclaration":89098,"src":"10622:9:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage_ptr","typeString":"struct IPriceAggregator.PendingSl"}},"visibility":"internal"}],"src":"10621:18:105"},"scope":75565,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75375,"nodeType":"FunctionDefinition","src":"10919:164:105","nodes":[],"body":{"id":75374,"nodeType":"Block","src":"11026:57:105","nodes":[],"statements":[{"expression":{"baseExpression":{"id":75370,"name":"_pendingMarginUpdateOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74505,"src":"11043:26:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_PendingMarginUpdate_$89116_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.PendingMarginUpdate storage ref)"}},"id":75372,"indexExpression":{"id":75371,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75363,"src":"11070:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11043:33:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage","typeString":"struct IPriceAggregator.PendingMarginUpdate storage ref"}},"functionReturnParameters":75369,"id":75373,"nodeType":"Return","src":"11036:40:105"}]},"baseFunctions":[89213],"documentation":{"id":75361,"nodeType":"StructuredDocumentation","src":"10693:221:105","text":" @notice Retrieves a pending margin update order\n @param index The index of the pending margin update order\n @return A struct containing the information about the pending margin update order"},"functionSelector":"d1f6652e","implemented":true,"kind":"function","modifiers":[],"name":"pendingMarginUpdateOrders","nameLocation":"10928:25:105","overrides":{"id":75365,"nodeType":"OverrideSpecifier","overrides":[],"src":"10980:8:105"},"parameters":{"id":75364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75363,"mutability":"mutable","name":"index","nameLocation":"10959:5:105","nodeType":"VariableDeclaration","scope":75375,"src":"10954:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75362,"name":"uint","nodeType":"ElementaryTypeName","src":"10954:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10953:12:105"},"returnParameters":{"id":75369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75375,"src":"10998:26:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"},"typeName":{"id":75367,"nodeType":"UserDefinedTypeName","pathNode":{"id":75366,"name":"PendingMarginUpdate","nodeType":"IdentifierPath","referencedDeclaration":89116,"src":"10998:19:105"},"referencedDeclaration":89116,"src":"10998:19:105","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"}},"visibility":"internal"}],"src":"10997:28:105"},"scope":75565,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75396,"nodeType":"FunctionDefinition","src":"11383:204:105","nodes":[],"body":{"id":75395,"nodeType":"Block","src":"11496:91:105","nodes":[],"statements":[{"expression":{"arguments":[{"id":75390,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75378,"src":"11539:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75391,"name":"_leveragedPositionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75380,"src":"11551:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75392,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75382,"src":"11575:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":75388,"name":"pairsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74479,"src":"11513:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":75389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairOpenFeeP","nodeType":"MemberAccess","referencedDeclaration":88984,"src":"11513:25:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool) view external returns (uint256)"}},"id":75393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11513:67:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75387,"id":75394,"nodeType":"Return","src":"11506:74:105"}]},"baseFunctions":[89197],"documentation":{"id":75376,"nodeType":"StructuredDocumentation","src":"11089:289:105","text":" @notice Calculate open fee as a percentage for a trading pair\n @param _pairIndex Index of the trading pair\n @param _leveragedPositionSize Size of the leveraged position\n @param _buy Whether the position is a buy or a sell\n @return Fee percentage"},"functionSelector":"3a100f4d","implemented":true,"kind":"function","modifiers":[],"name":"openFeeP","nameLocation":"11392:8:105","overrides":{"id":75384,"nodeType":"OverrideSpecifier","overrides":[],"src":"11472:8:105"},"parameters":{"id":75383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75378,"mutability":"mutable","name":"_pairIndex","nameLocation":"11406:10:105","nodeType":"VariableDeclaration","scope":75396,"src":"11401:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75377,"name":"uint","nodeType":"ElementaryTypeName","src":"11401:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75380,"mutability":"mutable","name":"_leveragedPositionSize","nameLocation":"11423:22:105","nodeType":"VariableDeclaration","scope":75396,"src":"11418:27:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75379,"name":"uint","nodeType":"ElementaryTypeName","src":"11418:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75382,"mutability":"mutable","name":"_buy","nameLocation":"11452:4:105","nodeType":"VariableDeclaration","scope":75396,"src":"11447:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75381,"name":"bool","nodeType":"ElementaryTypeName","src":"11447:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11400:57:105"},"returnParameters":{"id":75387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75396,"src":"11490:4:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75385,"name":"uint","nodeType":"ElementaryTypeName","src":"11490:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11489:6:105"},"scope":75565,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75411,"nodeType":"FunctionDefinition","src":"11649:107:105","nodes":[],"body":{"id":75410,"nodeType":"Block","src":"11721:35:105","nodes":[],"statements":[{"expression":{"baseExpression":{"id":75406,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74490,"src":"11738:6:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Order_$89085_storage_$","typeString":"mapping(uint256 => struct IPriceAggregator.Order storage ref)"}},"id":75408,"indexExpression":{"id":75407,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75399,"src":"11745:3:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11738:11:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage","typeString":"struct IPriceAggregator.Order storage ref"}},"functionReturnParameters":75405,"id":75409,"nodeType":"Return","src":"11731:18:105"}]},"baseFunctions":[89247],"documentation":{"id":75397,"nodeType":"StructuredDocumentation","src":"11597:47:105","text":" @notice Returns order stored"},"functionSelector":"d09ef241","implemented":true,"kind":"function","modifiers":[],"name":"getOrder","nameLocation":"11658:8:105","overrides":{"id":75401,"nodeType":"OverrideSpecifier","overrides":[],"src":"11691:8:105"},"parameters":{"id":75400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75399,"mutability":"mutable","name":"_id","nameLocation":"11672:3:105","nodeType":"VariableDeclaration","scope":75411,"src":"11667:8:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75398,"name":"uint","nodeType":"ElementaryTypeName","src":"11667:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11666:10:105"},"returnParameters":{"id":75405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75411,"src":"11708:12:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_memory_ptr","typeString":"struct IPriceAggregator.Order"},"typeName":{"id":75403,"nodeType":"UserDefinedTypeName","pathNode":{"id":75402,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":89085,"src":"11708:5:105"},"referencedDeclaration":89085,"src":"11708:5:105","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$89085_storage_ptr","typeString":"struct IPriceAggregator.Order"}},"visibility":"internal"}],"src":"11707:14:105"},"scope":75565,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75439,"nodeType":"FunctionDefinition","src":"12021:125:105","nodes":[],"body":{"id":75438,"nodeType":"Block","src":"12086:60:105","nodes":[],"statements":[{"expression":{"id":75436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":75422,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75415,"src":"12097:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75424,"indexExpression":{"id":75423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75417,"src":"12103:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12097:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":75425,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75415,"src":"12107:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75427,"indexExpression":{"id":75426,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75419,"src":"12113:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12107:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75428,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12096:20:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":75429,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75415,"src":"12120:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75431,"indexExpression":{"id":75430,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75419,"src":"12126:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12120:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":75432,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75415,"src":"12130:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75434,"indexExpression":{"id":75433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75417,"src":"12136:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12130:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75435,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12119:20:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12096:43:105","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75437,"nodeType":"ExpressionStatement","src":"12096:43:105"}]},"documentation":{"id":75412,"nodeType":"StructuredDocumentation","src":"11762:254:105","text":" @notice Swaps the elements at the i^th and j^th index of an array.\n @param array The array of integers.\n @param i The index of the first element to be swapped.\n @param j The index of the second element to be swapped."},"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"12030:5:105","parameters":{"id":75420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75415,"mutability":"mutable","name":"array","nameLocation":"12050:5:105","nodeType":"VariableDeclaration","scope":75439,"src":"12036:19:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":75413,"name":"uint","nodeType":"ElementaryTypeName","src":"12036:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75414,"nodeType":"ArrayTypeName","src":"12036:6:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":75417,"mutability":"mutable","name":"i","nameLocation":"12062:1:105","nodeType":"VariableDeclaration","scope":75439,"src":"12057:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75416,"name":"uint","nodeType":"ElementaryTypeName","src":"12057:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75419,"mutability":"mutable","name":"j","nameLocation":"12070:1:105","nodeType":"VariableDeclaration","scope":75439,"src":"12065:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75418,"name":"uint","nodeType":"ElementaryTypeName","src":"12065:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12035:37:105"},"returnParameters":{"id":75421,"nodeType":"ParameterList","parameters":[],"src":"12086:0:105"},"scope":75565,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":75515,"nodeType":"FunctionDefinition","src":"12387:436:105","nodes":[],"body":{"id":75514,"nodeType":"Block","src":"12458:365:105","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75450,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75445,"src":"12472:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":75451,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75447,"src":"12481:3:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12472:12:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75455,"nodeType":"IfStatement","src":"12468:49:105","trueBody":{"id":75454,"nodeType":"Block","src":"12486:31:105","statements":[{"functionReturnParameters":75449,"id":75453,"nodeType":"Return","src":"12500:7:105"}]}},{"assignments":[75457],"declarations":[{"constant":false,"id":75457,"mutability":"mutable","name":"j","nameLocation":"12531:1:105","nodeType":"VariableDeclaration","scope":75514,"src":"12526:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75456,"name":"uint","nodeType":"ElementaryTypeName","src":"12526:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75459,"initialValue":{"id":75458,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75445,"src":"12535:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12526:14:105"},{"assignments":[75461],"declarations":[{"constant":false,"id":75461,"mutability":"mutable","name":"pivot","nameLocation":"12555:5:105","nodeType":"VariableDeclaration","scope":75514,"src":"12550:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75460,"name":"uint","nodeType":"ElementaryTypeName","src":"12550:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75465,"initialValue":{"baseExpression":{"id":75462,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12563:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75464,"indexExpression":{"id":75463,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75457,"src":"12569:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12563:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12550:21:105"},{"body":{"id":75492,"nodeType":"Block","src":"12620:99:105","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":75478,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12638:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75480,"indexExpression":{"id":75479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75467,"src":"12644:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12638:8:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":75481,"name":"pivot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75461,"src":"12649:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12638:16:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75491,"nodeType":"IfStatement","src":"12634:75:105","trueBody":{"id":75490,"nodeType":"Block","src":"12656:53:105","statements":[{"expression":{"arguments":[{"id":75484,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12680:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":75485,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75467,"src":"12687:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12690:3:105","subExpression":{"id":75486,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75457,"src":"12692:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75483,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75439,"src":"12674:5:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256[] memory,uint256,uint256) pure"}},"id":75488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12674:20:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75489,"nodeType":"ExpressionStatement","src":"12674:20:105"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75467,"src":"12606:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":75473,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75447,"src":"12610:3:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12606:7:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75493,"initializationExpression":{"assignments":[75467],"declarations":[{"constant":false,"id":75467,"mutability":"mutable","name":"i","nameLocation":"12591:1:105","nodeType":"VariableDeclaration","scope":75493,"src":"12586:6:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75466,"name":"uint","nodeType":"ElementaryTypeName","src":"12586:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75471,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75468,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75445,"src":"12595:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":75469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12603:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12595:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12586:18:105"},"loopExpression":{"expression":{"id":75476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12615:3:105","subExpression":{"id":75475,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75467,"src":"12617:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75477,"nodeType":"ExpressionStatement","src":"12615:3:105"},"nodeType":"ForStatement","src":"12581:138:105"},{"expression":{"arguments":[{"id":75495,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12734:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":75496,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75445,"src":"12741:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75497,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75457,"src":"12748:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75494,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75439,"src":"12728:5:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256[] memory,uint256,uint256) pure"}},"id":75498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12728:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75499,"nodeType":"ExpressionStatement","src":"12728:22:105"},{"expression":{"arguments":[{"id":75501,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12766:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":75502,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75445,"src":"12773:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75503,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75457,"src":"12780:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75500,"name":"_sort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75515,"src":"12760:5:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256[] memory,uint256,uint256) pure"}},"id":75504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12760:22:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75505,"nodeType":"ExpressionStatement","src":"12760:22:105"},{"expression":{"arguments":[{"id":75507,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75443,"src":"12798:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75508,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75457,"src":"12805:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":75509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12809:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12805:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75511,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75447,"src":"12812:3:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75506,"name":"_sort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75515,"src":"12792:5:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256[] memory,uint256,uint256) pure"}},"id":75512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12792:24:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75513,"nodeType":"ExpressionStatement","src":"12792:24:105"}]},"documentation":{"id":75440,"nodeType":"StructuredDocumentation","src":"12152:230:105","text":" @notice Sorts an array of integers using quick sort.\n @param array The array of integers to be sorted.\n @param begin The starting index for the sort.\n @param end The ending index for the sort."},"implemented":true,"kind":"function","modifiers":[],"name":"_sort","nameLocation":"12396:5:105","parameters":{"id":75448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75443,"mutability":"mutable","name":"array","nameLocation":"12416:5:105","nodeType":"VariableDeclaration","scope":75515,"src":"12402:19:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":75441,"name":"uint","nodeType":"ElementaryTypeName","src":"12402:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75442,"nodeType":"ArrayTypeName","src":"12402:6:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":75445,"mutability":"mutable","name":"begin","nameLocation":"12428:5:105","nodeType":"VariableDeclaration","scope":75515,"src":"12423:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75444,"name":"uint","nodeType":"ElementaryTypeName","src":"12423:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75447,"mutability":"mutable","name":"end","nameLocation":"12440:3:105","nodeType":"VariableDeclaration","scope":75515,"src":"12435:8:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75446,"name":"uint","nodeType":"ElementaryTypeName","src":"12435:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12401:43:105"},"returnParameters":{"id":75449,"nodeType":"ParameterList","parameters":[],"src":"12458:0:105"},"scope":75565,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":75564,"nodeType":"FunctionDefinition","src":"12991:286:105","nodes":[],"body":{"id":75563,"nodeType":"Block","src":"13057:220:105","nodes":[],"statements":[{"expression":{"arguments":[{"id":75525,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13073:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"30","id":75526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13080:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":75527,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13083:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13083:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75524,"name":"_sort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75515,"src":"13067:5:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256[] memory,uint256,uint256) pure"}},"id":75529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13067:29:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75530,"nodeType":"ExpressionStatement","src":"13067:29:105"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75531,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13125:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13125:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":75533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13140:1:105","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13125:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13145:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13125:21:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"id":75555,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13246:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75560,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75556,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13252:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13252:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":75558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13268:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13252:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13246:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13125:145:105","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":75537,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13166:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75544,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75538,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13172:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13172:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"commonType":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"id":75542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":75540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13188:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":75541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13192:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13188:5:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}},"src":"13172:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13166:28:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"id":75545,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13197:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75550,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75546,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75519,"src":"13203:5:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":75547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13203:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":75548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13219:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13203:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13197:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13166:55:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13165:57:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":75553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13226:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13165:62:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75523,"id":75562,"nodeType":"Return","src":"13106:164:105"}]},"documentation":{"id":75516,"nodeType":"StructuredDocumentation","src":"12829:157:105","text":" @notice Calculates the median of an array of integers.\n @param array The array of integers.\n @return The median of the array."},"implemented":true,"kind":"function","modifiers":[],"name":"_median","nameLocation":"13000:7:105","parameters":{"id":75520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75519,"mutability":"mutable","name":"array","nameLocation":"13022:5:105","nodeType":"VariableDeclaration","scope":75564,"src":"13008:19:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":75517,"name":"uint","nodeType":"ElementaryTypeName","src":"13008:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75518,"nodeType":"ArrayTypeName","src":"13008:6:105","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"13007:21:105"},"returnParameters":{"id":75523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75522,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75564,"src":"13051:4:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75521,"name":"uint","nodeType":"ElementaryTypeName","src":"13051:4:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13050:6:105"},"scope":75565,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":74461,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":43537,"src":"483:13:105"},"id":74462,"nodeType":"InheritanceSpecifier","src":"483:13:105"},{"baseName":{"id":74463,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"498:16:105"},"id":74464,"nodeType":"InheritanceSpecifier","src":"498:16:105"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75565,89248,43537],"name":"PriceAggregator","nameLocation":"464:15:105","scope":75566,"usedErrors":[]}],"license":"MIT"},"id":105}
1
+ {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainlinkValidityPeriod","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"executions","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IExecute"}],"stateMutability":"view"},{"type":"function","name":"forceCloseTradeMarket","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fulfill","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.Order","components":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"},{"name":"job","type":"bytes32","internalType":"bytes32"},{"name":"initiated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairsStorage","type":"address","internalType":"address"},{"name":"_executions","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxDeviationP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum IPriceAggregator.OrderType"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPositionSize","type":"uint256","internalType":"uint256"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"orderType","type":"uint8","internalType":"enum IPriceAggregator.OrderType"},{"name":"job","type":"bytes32","internalType":"bytes32"},{"name":"initiated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ordersAnswers","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairsStorage","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairStorage"}],"stateMutability":"view"},{"type":"function","name":"pendingMarginUpdateOrders","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.PendingMarginUpdate","components":[{"name":"trader","type":"address","internalType":"address"},{"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":"tier","type":"uint256","internalType":"uint256"},{"name":"marginFees","type":"uint256","internalType":"uint256"},{"name":"oldLeverage","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pendingSlOrders","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPriceAggregator.PendingSl","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"newSl","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pyth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPyth"}],"stateMutability":"view"},{"type":"function","name":"setChainlinkValidityPeriod","inputs":[{"name":"_newPeriod","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPyth","inputs":[{"name":"pythContract","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"storePendingMarginUpdateOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"p","type":"tuple","internalType":"struct IPriceAggregator.PendingMarginUpdate","components":[{"name":"trader","type":"address","internalType":"address"},{"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":"tier","type":"uint256","internalType":"uint256"},{"name":"marginFees","type":"uint256","internalType":"uint256"},{"name":"oldLeverage","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storePendingSlOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"p","type":"tuple","internalType":"struct IPriceAggregator.PendingSl","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"newSl","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingMarginUpdateOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterPendingSlOrder","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePairsStorage","inputs":[{"name":"_pairsStorage","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"useBackUpOracleOnly","inputs":[{"name":"_start","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"useBackupOnly","inputs":[],"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":"BackUpTriggered","inputs":[{"name":"_start","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"BackupPriceReceived","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PriceReceived","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PythUpdated","inputs":[{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"chainlinkValidityPeriodSet","inputs":[{"name":"_newPeriod","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613f3080620000f36000396000f3fe6080604052600436106101665760003560e01c8063a85c38ef116100d1578063cbe91bd91161008a578063da74d14a11610064578063da74d14a146104e4578063dd2f3c0514610504578063ee22fd6f14610517578063f98d06f01461053757600080fd5b8063cbe91bd91461046a578063d09ef2411461048a578063d1f6652e146104b757600080fd5b8063a85c38ef14610371578063b21f4517146103ca578063b8213bfa146103ea578063c0a027f41461040a578063c0c53b8b1461042a578063c61904a11461044a57600080fd5b80633a100f4d116101235780633a100f4d146102a057806340e9eda2146102c057806361417a43146102e057806367288428146103005780637251b3e61461033157806393d7fe2c1461035157600080fd5b8063166a073b1461016b57806316fff0741461018d5780631e8ff50d146101ca5780632b35de75146101ee57806335b03c171461020e57806337a3dba31461022e575b600080fd5b34801561017757600080fd5b5061018b610186366004613610565b61055d565b005b34801561019957600080fd5b506001546101ad906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d657600080fd5b506101e060045481565b6040519081526020016101c1565b3480156101fa57600080fd5b506101e06102093660046136c0565b610658565b34801561021a57600080fd5b506002546101ad906001600160a01b031681565b34801561023a57600080fd5b5061024e610249366004613610565b6107ee565b6040516101c1919081516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808083015115159082015260a0918201519181019190915260c00190565b3480156102ac57600080fd5b506101e06102bb36600461377a565b610899565b3480156102cc57600080fd5b5061018b6102db36600461325a565b61092d565b3480156102ec57600080fd5b5061018b6102fb366004613610565b610a98565b34801561030c57600080fd5b5060005461032190600160b01b900460ff1681565b60405190151581526020016101c1565b34801561033d57600080fd5b5061018b61034c3660046132e6565b610bb1565b34801561035d57600080fd5b506101e061036c366004613758565b610faf565b34801561037d57600080fd5b506103ba61038c366004613610565b6005602052600090815260409020805460018201546002830154600390930154919260ff9182169290911684565b6040516101c19493929190613aa0565b3480156103d657600080fd5b506003546101ad906001600160a01b031681565b3480156103f657600080fd5b5061018b61040536600461372e565b610fe0565b34801561041657600080fd5b506101e06104253660046136c0565b6110b6565b34801561043657600080fd5b5061018b61044536600461329b565b611293565b34801561045657600080fd5b5061018b610465366004613610565b611425565b34801561047657600080fd5b5061018b6104853660046136f4565b61154c565b34801561049657600080fd5b506104aa6104a5366004613610565b61161c565b6040516101c1919061393a565b3480156104c357600080fd5b506104d76104d2366004613610565b6116b1565b6040516101c19190613972565b3480156104f057600080fd5b5061018b6104ff36600461332a565b61179c565b61018b610512366004613642565b61189f565b34801561052357600080fd5b5061018b61053236600461325a565b612ad8565b34801561054357600080fd5b506000546101ad906201000090046001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ab57600080fd5b505afa1580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e3919061327e565b6001600160a01b0316336001600160a01b03161461061c5760405162461bcd60e51b815260040161061390613918565b60405180910390fd5b60048190556040518181527fb7116a6d2338b4af7895e72c37e89f941362a610ee8e3787ee4b3113aa51a747906020015b60405180910390a150565b6002546040516307aa801760e21b81526004810184905260009182916001600160a01b0390911690631eaa005c9060240160606040518083038186803b1580156106a157600080fd5b505afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190613444565b905060008360088111156106ef576106ef613d75565b148061070c5750600683600881111561070a5761070a613d75565b145b806107285750600283600881111561072657610726613d75565b145b15610735575190506107e8565b600183600881111561074957610749613d75565b14806107665750600783600881111561076457610764613d75565b145b806107825750600383600881111561078057610780613d75565b145b8061079e5750600883600881111561079c5761079c613d75565b145b806107ba575060048360088111156107b8576107b8613d75565b145b806107d6575060058360088111156107d4576107d4613d75565b145b156107e6576020015190506107e8565b505b92915050565b6108326040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081525090565b50600090815260076020908152604091829020825160c08101845281546001600160a01b0316815260018201549281019290925260028101549282019290925260038201546060820152600482015460ff161515608082015260059091015460a082015290565b60025460405163fb3e519d60e01b8152600481018590526024810184905282151560448201526000916001600160a01b03169063fb3e519d9060640160206040518083038186803b1580156108ed57600080fd5b505afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190613629565b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b3919061327e565b6001600160a01b0316336001600160a01b0316146109e35760405162461bcd60e51b815260040161061390613918565b6001600160a01b038116610a235760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610613565b600280546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b706169727353746f7261676560a01b606082015260208101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee444227819060800161064d565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d919061327e565b6001600160a01b0316336001600160a01b031614610b6e5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610613565b600090815260076020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff1916905560050155565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c37919061327e565b6001600160a01b0316336001600160a01b031614610c675760405162461bcd60e51b815260040161061390613918565b6001546040516351d407ff60e11b81526001600160a01b0387811660048301526024820187905260448201869052600092169063a3a80ffe906064016101606040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190613573565b60e001516001546040516351d407ff60e11b81526001600160a01b03898116600483015260248201899052604482018890529293506000929091169063a3a80ffe906064016101606040518083038186803b158015610d5257600080fd5b505afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190613573565b60600151905080841115610dcd5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610613565b60008211610e085760405162461bcd60e51b81526020600482015260086024820152674e4f5f545241444560c01b6044820152606401610613565b6002546040516362faca8d60e11b81526001600160a01b0389811660048301526024820189905260448201889052600092169063c5f5951a9060640160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e949190613347565b9050600081610ead57610ea8886001612be6565b610eb8565b610eb8886007612be6565b600154604080516101e0810182526001600160a01b038d81166080830190815260a083018e905260c083018d905260e083018c90526000610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526101c0840181905290835260208301819052828401819052606083018190529251631b026ffd60e31b81529495509092169263d8137fe892610f689290918691906004016139e3565b600060405180830381600087803b158015610f8257600080fd5b505af1158015610f96573d6000803e3d6000fd5b50505050610fa48186612c1c565b505050505050505050565b60066020528160005260406000208181548110610fcb57600080fd5b90600052602060002001600091509150505481565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611066919061327e565b6001600160a01b0316336001600160a01b0316146110965760405162461bcd60e51b8152600401610613906138f2565b600082815260076020526040902081906110b08282613e70565b50505050565b60015460408051637622567960e11b815290516000926001600160a01b03169163ec44acf2916004808301926020929190829003018186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061327e565b6001600160a01b0316336001600160a01b0316146111635760405162461bcd60e51b8152600401610613906138f2565b600254604051630c0be07f60e21b81526004810185905260009182916001600160a01b039091169063302f81fc906024015b600060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111eb9190810190613364565b94505093505050604051806080016040528086815260200185600881111561121557611215613d75565b8152602080820185905260016040928301819052600085815260058352929092208351815590830151818301805492939192909160ff199091169083600881111561126257611262613d75565b0217905550604082015160028201556060909101516003909101805460ff1916911515919091179055949350505050565b600054610100900460ff16158080156112b35750600054600160ff909116105b806112cd5750303b1580156112cd575060005460ff166001145b6113305760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610613565b6000805460ff191660011790558015611353576000805461ff0019166101001790555b6001600160a01b0383166113985760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b6044820152606401610613565b600280546001600160a01b038086166001600160a01b031992831617909255600380548584169083161790556001805492871692909116919091179055607860045580156110b0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561147257600080fd5b505afa158015611486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114aa919061327e565b6001600160a01b0316336001600160a01b0316146114fb5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610613565b600090815260086020526040812080546001600160a01b0319168155600181018290556002810182905560038101805460ff1916905560048101829055600581018290556006810182905560070155565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b15801561159a57600080fd5b505afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d2919061327e565b6001600160a01b0316336001600160a01b0316146116025760405162461bcd60e51b8152600401610613906138f2565b600082815260086020526040902081906110b08282613dfa565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260056020908152604091829020825160808101909352805483526001810154909183019060ff16600881111561167d5761167d613d75565b600881111561168e5761168e613d75565b81526002820154602082015260039091015460ff16151560409091015292915050565b6116f960408051610100810182526000808252602082018190529181018290529060608201908152602001600081526020016000815260200160008152602001600081525090565b60008281526008602090815260409182902082516101008101845281546001600160a01b031681526001808301549382019390935260028201549381019390935260038101549091606084019160ff169081111561175957611759613d75565b600181111561176a5761176a613d75565b815260048201546020820152600582015460408201526006820154606082015260079091015460809091015292915050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ea57600080fd5b505afa1580156117fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611822919061327e565b6001600160a01b0316336001600160a01b0316146118525760405162461bcd60e51b815260040161061390613918565b60008054821515600160b01b0260ff60b01b199091161790556040517f5a3be68c2e82796ccb7eaec7f9aecf7cd941e6fc2d4298f6c4f101e924c15a479061064d90831515815260200190565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ed57600080fd5b505afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611925919061327e565b6001600160a01b0316336001600160a01b0316146119555760405162461bcd60e51b8152600401610613906138f2565b6000838152600560205260409020600381015460ff16156110b05760008383600081811061198557611985613d8b565b90506020028101906119979190613acb565b8101906119a49190613610565b600254835460405163685e905b60e01b81529293506000926001600160a01b039092169163685e905b916119de9160040190815260200190565b604080518083038186803b1580156119f557600080fd5b505afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d91906133ef565b6000878152600660205260408120905491925090600160b01b900460ff168015611a6f57506003600185015460ff166008811115611a6d57611a6d613d75565b145b8015611a87575060208201516001600160a01b031615155b15611cad5760015460405163363df41d60e11b8152600481018990526000916001600160a01b031690636c7be83a9060240160806040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b09919061349f565b9050600281606001516003811115611b2357611b23613d75565b1415611ca757600083602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611b6e57600080fd5b505afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba691906137a8565b509350509250504260045482611bbc9190613b93565b10611ca3576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfc57600080fd5b505afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3491906137f8565b611c3f90600a613c14565b611c4e6402540be40085613cc0565b611c589190613bab565b8954604080518f8152602081019290925281018290529098508891507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c9060600160405180910390a1505b5050505b506123a7565b600054600160b01b900460ff16158015611cc5575060005b156123a7576000805460405163d47eed4560e01b8152620100009091046001600160a01b03169063d47eed4590611d02908a908a90600401613858565b60206040518083038186803b158015611d1a57600080fd5b505afa158015611d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d529190613629565b600054604051631df3cbc560e31b81529192506201000090046001600160a01b03169063ef9e5e28908390611d8d908b908b90600401613858565b6000604051808303818588803b158015611da657600080fd5b505af1158015611dba573d6000803e3d6000fd5b50506040805160808101825260008082526020820181905291810182905260608101919091529250611dea915050565b6004600187015460ff166008811115611e0557611e05613d75565b1480611e2957506005600187015460ff166008811115611e2757611e27613d75565b145b15611ec357600054600287015460405163052571af60e51b81526004810191909152601e6024820152620100009091046001600160a01b03169063a4ae35e09060440160806040518083038186803b158015611e8457600080fd5b505afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc91906134fa565b9050611f54565b600054600287015460405163052571af60e51b81526004810191909152600a6024820152620100009091046001600160a01b03169063a4ae35e09060440160806040518083038186803b158015611f1957600080fd5b505afa158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5191906134fa565b90505b600080826040015160030b1315611fdc576040820151611f7590600a613c02565b8251611f90906402540be400906001600160401b0316613cc0565b611f9a9190613cc0565b95508160400151600a611fad9190613c02565b6402540be40083602001516001600160401b0316611fcb9190613cc0565b611fd59190613cc0565b9050612060565b8160400151611fea90613d25565b611ff590600a613c02565b8251612010906402540be400906001600160401b0316613cc0565b61201a9190613bab565b9550816040015161202a90613d25565b61203590600a613c02565b6402540be40083602001516001600160401b03166120539190613cc0565b61205d9190613bab565b90505b6000861180156120a757508654600188015461207f919060ff16610658565b8661208f6402540be40084613cc0565b61209a906064613cc0565b6120a49190613bab565b11155b6120f35760405162461bcd60e51b815260206004820152601860248201527f50524943455f444556494154494f4e5f544f4f5f4849474800000000000000006044820152606401610613565b84511580159061210f575060208501516001600160a01b031615155b156123a357600085602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561215957600080fd5b505afa15801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906137a8565b5093505092505042600454826121a79190613b93565b1061239f576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e757600080fd5b505afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f91906137f8565b61222a90600a613c14565b6122396402540be40085613cc0565b6122439190613bab565b90507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c8e8c600001548360405161228d939291909283526020830191909152604082015260600190565b60405180910390a1898111156123195788518a6402540be4006122b08285613cdf565b6122bb906064613cc0565b6122c59190613cc0565b6122cf9190613bab565b11156123195760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b6044820152606401610613565b8981101561239d578851816402540be400612334828e613cdf565b61233f906064613cc0565b6123499190613cc0565b6123539190613bab565b111561239d5760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b6044820152606401610613565b505b5050505b5050505b805460018101825560008281526020908190209091018490558454604080518a81529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a1805415612acf57600060405180606001604052808981526020016124748480548060200260200160405190810160405280929190818152602001828054801561246a57602002820191906000526020600020905b815481526020019060010190808311612456575b5050505050612f9a565b815260025487546040516312f070cd60e01b81526004810191909152600060248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b1580156124ca57600080fd5b505afa1580156124de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125029190613629565b8152509050600060405180606001604052808a81526020016125708580548060200260200160405190810160405280929190818152602001828054801561246a5760200282019190600052602060002090815481526020019060010190808311612456575050505050612f9a565b815260025488546040516312f070cd60e01b81526004810191909152600160248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b1580156125c657600080fd5b505afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613629565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561265257600080fd5b505afa158015612666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268a919061327e565b90506000600188015460ff1660088111156126a7576126a7613d75565b141561272e57825160208401516040808601519051631410f75b60e01b8152600481019390935260248301919091526044820152600060648201526001600160a01b03821690631410f75b906084015b600060405180830381600087803b15801561271157600080fd5b505af1158015612725573d6000803e3d6000fd5b50505050612a85565b60018088015460ff16600881111561274857612748613d75565b141561278f578251602084015160405163962e1f0960e01b815260048101929092526024820152600060448201526001600160a01b0382169063962e1f09906064016126f7565b6002600188015460ff1660088111156127aa576127aa613d75565b14156127fe5782516020840151604080860151905163a875fc6b60e01b8152600481019390935260248301919091526044820152600060648201526001600160a01b0382169063a875fc6b906084016126f7565b6003600188015460ff16600881111561281957612819613d75565b1415612860578251602084015160405163484aabb160e01b815260048101929092526024820152600060448201526001600160a01b0382169063484aabb1906064016126f7565b6004600188015460ff16600881111561287b5761287b613d75565b14156128c25782516020840151604051634ec0e88960e01b815260048101929092526024820152600060448201526001600160a01b03821690634ec0e889906064016126f7565b6005600188015460ff1660088111156128dd576128dd613d75565b14156129245782516020840151604051638246cd1960e01b815260048101929092526024820152600060448201526001600160a01b03821690638246cd19906064016126f7565b6007600188015460ff16600881111561293f5761293f613d75565b1415612986578151602083015160405163962e1f0960e01b815260048101929092526024820152600160448201526001600160a01b0382169063962e1f09906064016126f7565b6006600188015460ff1660088111156129a1576129a1613d75565b14156129f557815160208301516040808501519051631410f75b60e01b8152600481019390935260248301919091526044820152600160648201526001600160a01b03821690631410f75b906084016126f7565b6008600188015460ff166008811115612a1057612a10613d75565b1415612a85578151602083015160405163484aabb160e01b815260048101929092526024820152600160448201526001600160a01b0382169063484aabb190606401600060405180830381600087803b158015612a6c57600080fd5b505af1158015612a80573d6000803e3d6000fd5b505050505b60008a815260056020908152604080832083815560018101805460ff199081169091556002820185905560039091018054909116905560069091528120612acb91613160565b5050505b50505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2657600080fd5b505afa158015612b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5e919061327e565b6001600160a01b0316336001600160a01b031614612b8e5760405162461bcd60e51b815260040161061390613918565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527fc0377667bd059a05c5d852537639c6099198490d6e89d187764aff179ffec7489060200161064d565b600254604051630c0be07f60e21b815260048101849052600091829182916001600160a01b03169063302f81fc90602401611195565b60008281526005602090815260408083206006909252909120600382015460ff16156110b057805460018101825560008281526020908190209091018490558254604080518781529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a18054156110b05760006040518060600160405280868152602001612d0d8480548060200260200160405190810160405280929190818152602001828054801561246a5760200282019190600052602060002090815481526020019060010190808311612456575050505050612f9a565b815260025485546040516312f070cd60e01b81526004810191909152600060248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b158015612d6357600080fd5b505afa158015612d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9b9190613629565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015612def57600080fd5b505afa158015612e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e27919061327e565b905060018085015460ff166008811115612e4357612e43613d75565b1415612ebc578151602083015160405163962e1f0960e01b815260048101929092526024820152600060448201526001600160a01b0382169063962e1f0990606401600060405180830381600087803b158015612e9f57600080fd5b505af1158015612eb3573d6000803e3d6000fd5b50505050612f4c565b6007600185015460ff166008811115612ed757612ed7613d75565b1415612f4c578151602083015160405163962e1f0960e01b815260048101929092526024820152600160448201526001600160a01b0382169063962e1f0990606401600060405180830381600087803b158015612f3357600080fd5b505af1158015612f47573d6000803e3d6000fd5b505050505b600086815260056020908152604080832083815560018101805460ff199081169091556002820185905560039091018054909116905560069091528120612f9291613160565b505050505050565b6000612fa9826000845161302a565b60028251612fb79190613d11565b15612fe0578160018351901c81518110612fd357612fd3613d8b565b60200260200101516107e8565b60018260018451901c81518110612ff957612ff9613d8b565b602090810291909101015183518490613010613d8b565b60200260200101516130229190613b93565b901c92915050565b80821061303657505050565b6000829050600084828151811061304f5761304f613d8b565b6020026020010151905060008460016130689190613b93565b90505b838110156130ba578186828151811061308657613086613d8b565b602002602001015110156130aa576130aa86826130a286613cf6565b9550856130ed565b6130b381613cf6565b905061306b565b506130c68585846130ed565b6130d185858461302a565b6130e6856130e0846001613b93565b8561302a565b5050505050565b8281815181106130ff576130ff613d8b565b602002602001015183838151811061311957613119613d8b565b602002602001015184848151811061313357613133613d8b565b6020026020010185848151811061314c5761314c613d8b565b602090810291909101019190915252505050565b508054600082559060005260206000209081019061317e9190613181565b50565b5b808211156131965760008155600101613182565b5090565b80516131a581613ed7565b919050565b80516131a581613eec565b600082601f8301126131c657600080fd5b81516001600160401b038111156131df576131df613da1565b60206131f3601f8301601f19168201613b63565b828152858284870101111561320757600080fd5b60005b8381101561322557858101830151828201840152820161320a565b838111156132365760008385840101525b5095945050505050565b805169ffffffffffffffffffff811681146131a557600080fd5b60006020828403121561326c57600080fd5b813561327781613ed7565b9392505050565b60006020828403121561329057600080fd5b815161327781613ed7565b6000806000606084860312156132b057600080fd5b83356132bb81613ed7565b925060208401356132cb81613ed7565b915060408401356132db81613ed7565b809150509250925092565b600080600080600060a086880312156132fe57600080fd5b853561330981613ed7565b97602087013597506040870135966060810135965060800135945092505050565b60006020828403121561333c57600080fd5b813561327781613eec565b60006020828403121561335957600080fd5b815161327781613eec565b600080600080600060a0868803121561337c57600080fd5b85516001600160401b038082111561339357600080fd5b61339f89838a016131b5565b965060208801519150808211156133b557600080fd5b506133c2888289016131b5565b9450506040860151925060608601516133da81613ed7565b80925050608086015190509295509295909350565b60006040828403121561340157600080fd5b604051604081018181106001600160401b038211171561342357613423613da1565b60405282518152602083015161343881613ed7565b60208201529392505050565b60006060828403121561345657600080fd5b604051606081018181106001600160401b038211171561347857613478613da1565b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000608082840312156134b157600080fd5b6134b9613b18565b82516134c481613ed7565b8082525060208301516020820152604083015160408201526060830151600481106134ee57600080fd5b60608201529392505050565b60006080828403121561350c57600080fd5b613514613b18565b82518060070b811461352557600080fd5b815260208301516001600160401b038116811461354157600080fd5b60208201526040830151600381900b811461355b57600080fd5b60408201526060928301519281019290925250919050565b6000610160828403121561358657600080fd5b61358e613b40565b6135978361319a565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526135d760c084016131aa565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561362257600080fd5b5035919050565b60006020828403121561363b57600080fd5b5051919050565b60008060006040848603121561365757600080fd5b8335925060208401356001600160401b038082111561367557600080fd5b818601915086601f83011261368957600080fd5b81358181111561369857600080fd5b8760208260051b85010111156136ad57600080fd5b6020830194508093505050509250925092565b600080604083850312156136d357600080fd5b823591506020830135600981106136e957600080fd5b809150509250929050565b60008082840361012081121561370957600080fd5b83359250610100601f198201121561372057600080fd5b506020830190509250929050565b60008082840360e081121561374257600080fd5b8335925060c0601f198201121561372057600080fd5b6000806040838503121561376b57600080fd5b50508035926020909101359150565b60008060006060848603121561378f57600080fd5b833592506020840135915060408401356132db81613eec565b600080600080600060a086880312156137c057600080fd5b6137c986613240565b94506020860151935060408601519250606086015191506137ec60808701613240565b90509295509295909350565b60006020828403121561380a57600080fd5b815160ff8116811461327757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6009811061385457613854613d75565b9052565b60208082528181018390526000906040600585901b8401810190840186845b878110156138e557868403603f190183528135368a9003601e1901811261389d57600080fd5b890180356001600160401b038111156138b557600080fd5b8036038b13156138c457600080fd5b6138d1868289850161381b565b955050509184019190840190600101613877565b5091979650505050505050565b6020808252600c908201526b54524144494e475f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81518152602080830151608083019161395590840182613844565b506040830151604083015260608301511515606083015292915050565b81516001600160a01b0316815260208083015190820152604080830151908201526060820151610100820190600281106139ae576139ae613d75565b806060840152506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b835180516001600160a01b031682526102008201906020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c0810151613a3d60c085018215159052565b5060e08181015190840152610100808201519084015261012080820151908401526101409081015190830152602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b84815260808101613ab46020830186613844565b836040830152821515606083015295945050505050565b6000808335601e19843603018112613ae257600080fd5b8301803591506001600160401b03821115613afc57600080fd5b602001915036819003821315613b1157600080fd5b9250929050565b604051608081016001600160401b0381118282101715613b3a57613b3a613da1565b60405290565b60405161016081016001600160401b0381118282101715613b3a57613b3a613da1565b604051601f8201601f191681016001600160401b0381118282101715613b8b57613b8b613da1565b604052919050565b60008219821115613ba657613ba6613d49565b500190565b600082613bba57613bba613d5f565b500490565b600181815b80851115613bfa578160001904821115613be057613be0613d49565b80851615613bed57918102915b93841c9390800290613bc4565b509250929050565b600061327763ffffffff841683613c1f565b600061327760ff8416835b600082613c2e575060016107e8565b81613c3b575060006107e8565b8160018114613c515760028114613c5b57613c77565b60019150506107e8565b60ff841115613c6c57613c6c613d49565b50506001821b6107e8565b5060208310610133831016604e8410600b8410161715613c9a575081810a6107e8565b613ca48383613bbf565b8060001904821115613cb857613cb8613d49565b029392505050565b6000816000190483118215151615613cda57613cda613d49565b500290565b600082821015613cf157613cf1613d49565b500390565b6000600019821415613d0a57613d0a613d49565b5060010190565b600082613d2057613d20613d5f565b500690565b60008160030b637fffffff19811415613d4057613d40613d49565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b60028210613de757613de7613d75565b60ff1981541660ff831681178255505050565b8135613e0581613ed7565b613e0f8183613db7565b506020820135600182015560408201356002820155606082013560028110613e3657600080fd5b613e438160038401613dd7565b506080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b8135613e7b81613ed7565b613e858183613db7565b50602082013560018201556040820135600282015560608201356003820155600481016080830135613eb681613eec565b60ff1982541660ff821515168117835550505060a082013560058201555050565b6001600160a01b038116811461317e57600080fd5b801515811461317e57600080fdfea2646970667358221220d7ac3bb4fa400766eae44edb10bfcab1d50477e46eec5c8686176c76fab6e75664736f6c63430008070033","sourceMap":"455:17867:108:-:0;;;1253:53;;;;;;;;;-1:-1:-1;1277:22:108;:20;:22::i;:::-;455:17867;;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:-;455:17867:108;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101665760003560e01c8063a85c38ef116100d1578063cbe91bd91161008a578063da74d14a11610064578063da74d14a146104e4578063dd2f3c0514610504578063ee22fd6f14610517578063f98d06f01461053757600080fd5b8063cbe91bd91461046a578063d09ef2411461048a578063d1f6652e146104b757600080fd5b8063a85c38ef14610371578063b21f4517146103ca578063b8213bfa146103ea578063c0a027f41461040a578063c0c53b8b1461042a578063c61904a11461044a57600080fd5b80633a100f4d116101235780633a100f4d146102a057806340e9eda2146102c057806361417a43146102e057806367288428146103005780637251b3e61461033157806393d7fe2c1461035157600080fd5b8063166a073b1461016b57806316fff0741461018d5780631e8ff50d146101ca5780632b35de75146101ee57806335b03c171461020e57806337a3dba31461022e575b600080fd5b34801561017757600080fd5b5061018b610186366004613610565b61055d565b005b34801561019957600080fd5b506001546101ad906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d657600080fd5b506101e060045481565b6040519081526020016101c1565b3480156101fa57600080fd5b506101e06102093660046136c0565b610658565b34801561021a57600080fd5b506002546101ad906001600160a01b031681565b34801561023a57600080fd5b5061024e610249366004613610565b6107ee565b6040516101c1919081516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808083015115159082015260a0918201519181019190915260c00190565b3480156102ac57600080fd5b506101e06102bb36600461377a565b610899565b3480156102cc57600080fd5b5061018b6102db36600461325a565b61092d565b3480156102ec57600080fd5b5061018b6102fb366004613610565b610a98565b34801561030c57600080fd5b5060005461032190600160b01b900460ff1681565b60405190151581526020016101c1565b34801561033d57600080fd5b5061018b61034c3660046132e6565b610bb1565b34801561035d57600080fd5b506101e061036c366004613758565b610faf565b34801561037d57600080fd5b506103ba61038c366004613610565b6005602052600090815260409020805460018201546002830154600390930154919260ff9182169290911684565b6040516101c19493929190613aa0565b3480156103d657600080fd5b506003546101ad906001600160a01b031681565b3480156103f657600080fd5b5061018b61040536600461372e565b610fe0565b34801561041657600080fd5b506101e06104253660046136c0565b6110b6565b34801561043657600080fd5b5061018b61044536600461329b565b611293565b34801561045657600080fd5b5061018b610465366004613610565b611425565b34801561047657600080fd5b5061018b6104853660046136f4565b61154c565b34801561049657600080fd5b506104aa6104a5366004613610565b61161c565b6040516101c1919061393a565b3480156104c357600080fd5b506104d76104d2366004613610565b6116b1565b6040516101c19190613972565b3480156104f057600080fd5b5061018b6104ff36600461332a565b61179c565b61018b610512366004613642565b61189f565b34801561052357600080fd5b5061018b61053236600461325a565b612ad8565b34801561054357600080fd5b506000546101ad906201000090046001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ab57600080fd5b505afa1580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e3919061327e565b6001600160a01b0316336001600160a01b03161461061c5760405162461bcd60e51b815260040161061390613918565b60405180910390fd5b60048190556040518181527fb7116a6d2338b4af7895e72c37e89f941362a610ee8e3787ee4b3113aa51a747906020015b60405180910390a150565b6002546040516307aa801760e21b81526004810184905260009182916001600160a01b0390911690631eaa005c9060240160606040518083038186803b1580156106a157600080fd5b505afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190613444565b905060008360088111156106ef576106ef613d75565b148061070c5750600683600881111561070a5761070a613d75565b145b806107285750600283600881111561072657610726613d75565b145b15610735575190506107e8565b600183600881111561074957610749613d75565b14806107665750600783600881111561076457610764613d75565b145b806107825750600383600881111561078057610780613d75565b145b8061079e5750600883600881111561079c5761079c613d75565b145b806107ba575060048360088111156107b8576107b8613d75565b145b806107d6575060058360088111156107d4576107d4613d75565b145b156107e6576020015190506107e8565b505b92915050565b6108326040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600015158152602001600081525090565b50600090815260076020908152604091829020825160c08101845281546001600160a01b0316815260018201549281019290925260028101549282019290925260038201546060820152600482015460ff161515608082015260059091015460a082015290565b60025460405163fb3e519d60e01b8152600481018590526024810184905282151560448201526000916001600160a01b03169063fb3e519d9060640160206040518083038186803b1580156108ed57600080fd5b505afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190613629565b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b3919061327e565b6001600160a01b0316336001600160a01b0316146109e35760405162461bcd60e51b815260040161061390613918565b6001600160a01b038116610a235760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610613565b600280546001600160a01b0319166001600160a01b03831690811790915560408051818152600c918101919091526b706169727353746f7261676560a01b606082015260208101919091527f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee444227819060800161064d565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d919061327e565b6001600160a01b0316336001600160a01b031614610b6e5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610613565b600090815260076020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff1916905560050155565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c37919061327e565b6001600160a01b0316336001600160a01b031614610c675760405162461bcd60e51b815260040161061390613918565b6001546040516351d407ff60e11b81526001600160a01b0387811660048301526024820187905260448201869052600092169063a3a80ffe906064016101606040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190613573565b60e001516001546040516351d407ff60e11b81526001600160a01b03898116600483015260248201899052604482018890529293506000929091169063a3a80ffe906064016101606040518083038186803b158015610d5257600080fd5b505afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190613573565b60600151905080841115610dcd5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610613565b60008211610e085760405162461bcd60e51b81526020600482015260086024820152674e4f5f545241444560c01b6044820152606401610613565b6002546040516362faca8d60e11b81526001600160a01b0389811660048301526024820189905260448201889052600092169063c5f5951a9060640160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e949190613347565b9050600081610ead57610ea8886001612be6565b610eb8565b610eb8886007612be6565b600154604080516101e0810182526001600160a01b038d81166080830190815260a083018e905260c083018d905260e083018c90526000610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526101c0840181905290835260208301819052828401819052606083018190529251631b026ffd60e31b81529495509092169263d8137fe892610f689290918691906004016139e3565b600060405180830381600087803b158015610f8257600080fd5b505af1158015610f96573d6000803e3d6000fd5b50505050610fa48186612c1c565b505050505050505050565b60066020528160005260406000208181548110610fcb57600080fd5b90600052602060002001600091509150505481565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611066919061327e565b6001600160a01b0316336001600160a01b0316146110965760405162461bcd60e51b8152600401610613906138f2565b600082815260076020526040902081906110b08282613e70565b50505050565b60015460408051637622567960e11b815290516000926001600160a01b03169163ec44acf2916004808301926020929190829003018186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061327e565b6001600160a01b0316336001600160a01b0316146111635760405162461bcd60e51b8152600401610613906138f2565b600254604051630c0be07f60e21b81526004810185905260009182916001600160a01b039091169063302f81fc906024015b600060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111eb9190810190613364565b94505093505050604051806080016040528086815260200185600881111561121557611215613d75565b8152602080820185905260016040928301819052600085815260058352929092208351815590830151818301805492939192909160ff199091169083600881111561126257611262613d75565b0217905550604082015160028201556060909101516003909101805460ff1916911515919091179055949350505050565b600054610100900460ff16158080156112b35750600054600160ff909116105b806112cd5750303b1580156112cd575060005460ff166001145b6113305760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610613565b6000805460ff191660011790558015611353576000805461ff0019166101001790555b6001600160a01b0383166113985760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b6044820152606401610613565b600280546001600160a01b038086166001600160a01b031992831617909255600380548584169083161790556001805492871692909116919091179055607860045580156110b0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561147257600080fd5b505afa158015611486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114aa919061327e565b6001600160a01b0316336001600160a01b0316146114fb5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610613565b600090815260086020526040812080546001600160a01b0319168155600181018290556002810182905560038101805460ff1916905560048101829055600581018290556006810182905560070155565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b15801561159a57600080fd5b505afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d2919061327e565b6001600160a01b0316336001600160a01b0316146116025760405162461bcd60e51b8152600401610613906138f2565b600082815260086020526040902081906110b08282613dfa565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260056020908152604091829020825160808101909352805483526001810154909183019060ff16600881111561167d5761167d613d75565b600881111561168e5761168e613d75565b81526002820154602082015260039091015460ff16151560409091015292915050565b6116f960408051610100810182526000808252602082018190529181018290529060608201908152602001600081526020016000815260200160008152602001600081525090565b60008281526008602090815260409182902082516101008101845281546001600160a01b031681526001808301549382019390935260028201549381019390935260038101549091606084019160ff169081111561175957611759613d75565b600181111561176a5761176a613d75565b815260048201546020820152600582015460408201526006820154606082015260079091015460809091015292915050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ea57600080fd5b505afa1580156117fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611822919061327e565b6001600160a01b0316336001600160a01b0316146118525760405162461bcd60e51b815260040161061390613918565b60008054821515600160b01b0260ff60b01b199091161790556040517f5a3be68c2e82796ccb7eaec7f9aecf7cd941e6fc2d4298f6c4f101e924c15a479061064d90831515815260200190565b600160009054906101000a90046001600160a01b03166001600160a01b031663ec44acf26040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ed57600080fd5b505afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611925919061327e565b6001600160a01b0316336001600160a01b0316146119555760405162461bcd60e51b8152600401610613906138f2565b6000838152600560205260409020600381015460ff16156110b05760008383600081811061198557611985613d8b565b90506020028101906119979190613acb565b8101906119a49190613610565b600254835460405163685e905b60e01b81529293506000926001600160a01b039092169163685e905b916119de9160040190815260200190565b604080518083038186803b1580156119f557600080fd5b505afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d91906133ef565b6000878152600660205260408120905491925090600160b01b900460ff168015611a6f57506003600185015460ff166008811115611a6d57611a6d613d75565b145b8015611a87575060208201516001600160a01b031615155b15611cad5760015460405163363df41d60e11b8152600481018990526000916001600160a01b031690636c7be83a9060240160806040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b09919061349f565b9050600281606001516003811115611b2357611b23613d75565b1415611ca757600083602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611b6e57600080fd5b505afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba691906137a8565b509350509250504260045482611bbc9190613b93565b10611ca3576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfc57600080fd5b505afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3491906137f8565b611c3f90600a613c14565b611c4e6402540be40085613cc0565b611c589190613bab565b8954604080518f8152602081019290925281018290529098508891507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c9060600160405180910390a1505b5050505b506123a7565b600054600160b01b900460ff16158015611cc5575060005b156123a7576000805460405163d47eed4560e01b8152620100009091046001600160a01b03169063d47eed4590611d02908a908a90600401613858565b60206040518083038186803b158015611d1a57600080fd5b505afa158015611d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d529190613629565b600054604051631df3cbc560e31b81529192506201000090046001600160a01b03169063ef9e5e28908390611d8d908b908b90600401613858565b6000604051808303818588803b158015611da657600080fd5b505af1158015611dba573d6000803e3d6000fd5b50506040805160808101825260008082526020820181905291810182905260608101919091529250611dea915050565b6004600187015460ff166008811115611e0557611e05613d75565b1480611e2957506005600187015460ff166008811115611e2757611e27613d75565b145b15611ec357600054600287015460405163052571af60e51b81526004810191909152601e6024820152620100009091046001600160a01b03169063a4ae35e09060440160806040518083038186803b158015611e8457600080fd5b505afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc91906134fa565b9050611f54565b600054600287015460405163052571af60e51b81526004810191909152600a6024820152620100009091046001600160a01b03169063a4ae35e09060440160806040518083038186803b158015611f1957600080fd5b505afa158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5191906134fa565b90505b600080826040015160030b1315611fdc576040820151611f7590600a613c02565b8251611f90906402540be400906001600160401b0316613cc0565b611f9a9190613cc0565b95508160400151600a611fad9190613c02565b6402540be40083602001516001600160401b0316611fcb9190613cc0565b611fd59190613cc0565b9050612060565b8160400151611fea90613d25565b611ff590600a613c02565b8251612010906402540be400906001600160401b0316613cc0565b61201a9190613bab565b9550816040015161202a90613d25565b61203590600a613c02565b6402540be40083602001516001600160401b03166120539190613cc0565b61205d9190613bab565b90505b6000861180156120a757508654600188015461207f919060ff16610658565b8661208f6402540be40084613cc0565b61209a906064613cc0565b6120a49190613bab565b11155b6120f35760405162461bcd60e51b815260206004820152601860248201527f50524943455f444556494154494f4e5f544f4f5f4849474800000000000000006044820152606401610613565b84511580159061210f575060208501516001600160a01b031615155b156123a357600085602001519050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561215957600080fd5b505afa15801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906137a8565b5093505092505042600454826121a79190613b93565b1061239f576000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e757600080fd5b505afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f91906137f8565b61222a90600a613c14565b6122396402540be40085613cc0565b6122439190613bab565b90507f482b3c0103a0a457f4564b7b9d39dfe5be10c809b29f2b102ee9f7e8e8eebc2c8e8c600001548360405161228d939291909283526020830191909152604082015260600190565b60405180910390a1898111156123195788518a6402540be4006122b08285613cdf565b6122bb906064613cc0565b6122c59190613cc0565b6122cf9190613bab565b11156123195760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b6044820152606401610613565b8981101561239d578851816402540be400612334828e613cdf565b61233f906064613cc0565b6123499190613cc0565b6123539190613bab565b111561239d5760405162461bcd60e51b8152602060048201526019602482015278084828696aaa0be888aac9282a8929e9cbea89e9ebe90928e9603b1b6044820152606401610613565b505b5050505b5050505b805460018101825560008281526020908190209091018490558454604080518a81529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a1805415612acf57600060405180606001604052808981526020016124748480548060200260200160405190810160405280929190818152602001828054801561246a57602002820191906000526020600020905b815481526020019060010190808311612456575b5050505050612f9a565b815260025487546040516312f070cd60e01b81526004810191909152600060248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b1580156124ca57600080fd5b505afa1580156124de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125029190613629565b8152509050600060405180606001604052808a81526020016125708580548060200260200160405190810160405280929190818152602001828054801561246a5760200282019190600052602060002090815481526020019060010190808311612456575050505050612f9a565b815260025488546040516312f070cd60e01b81526004810191909152600160248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b1580156125c657600080fd5b505afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613629565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b15801561265257600080fd5b505afa158015612666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268a919061327e565b90506000600188015460ff1660088111156126a7576126a7613d75565b141561272e57825160208401516040808601519051631410f75b60e01b8152600481019390935260248301919091526044820152600060648201526001600160a01b03821690631410f75b906084015b600060405180830381600087803b15801561271157600080fd5b505af1158015612725573d6000803e3d6000fd5b50505050612a85565b60018088015460ff16600881111561274857612748613d75565b141561278f578251602084015160405163962e1f0960e01b815260048101929092526024820152600060448201526001600160a01b0382169063962e1f09906064016126f7565b6002600188015460ff1660088111156127aa576127aa613d75565b14156127fe5782516020840151604080860151905163a875fc6b60e01b8152600481019390935260248301919091526044820152600060648201526001600160a01b0382169063a875fc6b906084016126f7565b6003600188015460ff16600881111561281957612819613d75565b1415612860578251602084015160405163484aabb160e01b815260048101929092526024820152600060448201526001600160a01b0382169063484aabb1906064016126f7565b6004600188015460ff16600881111561287b5761287b613d75565b14156128c25782516020840151604051634ec0e88960e01b815260048101929092526024820152600060448201526001600160a01b03821690634ec0e889906064016126f7565b6005600188015460ff1660088111156128dd576128dd613d75565b14156129245782516020840151604051638246cd1960e01b815260048101929092526024820152600060448201526001600160a01b03821690638246cd19906064016126f7565b6007600188015460ff16600881111561293f5761293f613d75565b1415612986578151602083015160405163962e1f0960e01b815260048101929092526024820152600160448201526001600160a01b0382169063962e1f09906064016126f7565b6006600188015460ff1660088111156129a1576129a1613d75565b14156129f557815160208301516040808501519051631410f75b60e01b8152600481019390935260248301919091526044820152600160648201526001600160a01b03821690631410f75b906084016126f7565b6008600188015460ff166008811115612a1057612a10613d75565b1415612a85578151602083015160405163484aabb160e01b815260048101929092526024820152600160448201526001600160a01b0382169063484aabb190606401600060405180830381600087803b158015612a6c57600080fd5b505af1158015612a80573d6000803e3d6000fd5b505050505b60008a815260056020908152604080832083815560018101805460ff199081169091556002820185905560039091018054909116905560069091528120612acb91613160565b5050505b50505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2657600080fd5b505afa158015612b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5e919061327e565b6001600160a01b0316336001600160a01b031614612b8e5760405162461bcd60e51b815260040161061390613918565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527fc0377667bd059a05c5d852537639c6099198490d6e89d187764aff179ffec7489060200161064d565b600254604051630c0be07f60e21b815260048101849052600091829182916001600160a01b03169063302f81fc90602401611195565b60008281526005602090815260408083206006909252909120600382015460ff16156110b057805460018101825560008281526020908190209091018490558254604080518781529283019190915281018490527f153ed01a0a6e506afbb501e4c353ea1c06dd65f8e1e9cb7afe44416e1dd775169060600160405180910390a18054156110b05760006040518060600160405280868152602001612d0d8480548060200260200160405190810160405280929190818152602001828054801561246a5760200282019190600052602060002090815481526020019060010190808311612456575050505050612f9a565b815260025485546040516312f070cd60e01b81526004810191909152600060248201526020909201916001600160a01b03909116906312f070cd9060440160206040518083038186803b158015612d6357600080fd5b505afa158015612d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9b9190613629565b81525090506000600160009054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015612def57600080fd5b505afa158015612e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e27919061327e565b905060018085015460ff166008811115612e4357612e43613d75565b1415612ebc578151602083015160405163962e1f0960e01b815260048101929092526024820152600060448201526001600160a01b0382169063962e1f0990606401600060405180830381600087803b158015612e9f57600080fd5b505af1158015612eb3573d6000803e3d6000fd5b50505050612f4c565b6007600185015460ff166008811115612ed757612ed7613d75565b1415612f4c578151602083015160405163962e1f0960e01b815260048101929092526024820152600160448201526001600160a01b0382169063962e1f0990606401600060405180830381600087803b158015612f3357600080fd5b505af1158015612f47573d6000803e3d6000fd5b505050505b600086815260056020908152604080832083815560018101805460ff199081169091556002820185905560039091018054909116905560069091528120612f9291613160565b505050505050565b6000612fa9826000845161302a565b60028251612fb79190613d11565b15612fe0578160018351901c81518110612fd357612fd3613d8b565b60200260200101516107e8565b60018260018451901c81518110612ff957612ff9613d8b565b602090810291909101015183518490613010613d8b565b60200260200101516130229190613b93565b901c92915050565b80821061303657505050565b6000829050600084828151811061304f5761304f613d8b565b6020026020010151905060008460016130689190613b93565b90505b838110156130ba578186828151811061308657613086613d8b565b602002602001015110156130aa576130aa86826130a286613cf6565b9550856130ed565b6130b381613cf6565b905061306b565b506130c68585846130ed565b6130d185858461302a565b6130e6856130e0846001613b93565b8561302a565b5050505050565b8281815181106130ff576130ff613d8b565b602002602001015183838151811061311957613119613d8b565b602002602001015184848151811061313357613133613d8b565b6020026020010185848151811061314c5761314c613d8b565b602090810291909101019190915252505050565b508054600082559060005260206000209081019061317e9190613181565b50565b5b808211156131965760008155600101613182565b5090565b80516131a581613ed7565b919050565b80516131a581613eec565b600082601f8301126131c657600080fd5b81516001600160401b038111156131df576131df613da1565b60206131f3601f8301601f19168201613b63565b828152858284870101111561320757600080fd5b60005b8381101561322557858101830151828201840152820161320a565b838111156132365760008385840101525b5095945050505050565b805169ffffffffffffffffffff811681146131a557600080fd5b60006020828403121561326c57600080fd5b813561327781613ed7565b9392505050565b60006020828403121561329057600080fd5b815161327781613ed7565b6000806000606084860312156132b057600080fd5b83356132bb81613ed7565b925060208401356132cb81613ed7565b915060408401356132db81613ed7565b809150509250925092565b600080600080600060a086880312156132fe57600080fd5b853561330981613ed7565b97602087013597506040870135966060810135965060800135945092505050565b60006020828403121561333c57600080fd5b813561327781613eec565b60006020828403121561335957600080fd5b815161327781613eec565b600080600080600060a0868803121561337c57600080fd5b85516001600160401b038082111561339357600080fd5b61339f89838a016131b5565b965060208801519150808211156133b557600080fd5b506133c2888289016131b5565b9450506040860151925060608601516133da81613ed7565b80925050608086015190509295509295909350565b60006040828403121561340157600080fd5b604051604081018181106001600160401b038211171561342357613423613da1565b60405282518152602083015161343881613ed7565b60208201529392505050565b60006060828403121561345657600080fd5b604051606081018181106001600160401b038211171561347857613478613da1565b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000608082840312156134b157600080fd5b6134b9613b18565b82516134c481613ed7565b8082525060208301516020820152604083015160408201526060830151600481106134ee57600080fd5b60608201529392505050565b60006080828403121561350c57600080fd5b613514613b18565b82518060070b811461352557600080fd5b815260208301516001600160401b038116811461354157600080fd5b60208201526040830151600381900b811461355b57600080fd5b60408201526060928301519281019290925250919050565b6000610160828403121561358657600080fd5b61358e613b40565b6135978361319a565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526135d760c084016131aa565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561362257600080fd5b5035919050565b60006020828403121561363b57600080fd5b5051919050565b60008060006040848603121561365757600080fd5b8335925060208401356001600160401b038082111561367557600080fd5b818601915086601f83011261368957600080fd5b81358181111561369857600080fd5b8760208260051b85010111156136ad57600080fd5b6020830194508093505050509250925092565b600080604083850312156136d357600080fd5b823591506020830135600981106136e957600080fd5b809150509250929050565b60008082840361012081121561370957600080fd5b83359250610100601f198201121561372057600080fd5b506020830190509250929050565b60008082840360e081121561374257600080fd5b8335925060c0601f198201121561372057600080fd5b6000806040838503121561376b57600080fd5b50508035926020909101359150565b60008060006060848603121561378f57600080fd5b833592506020840135915060408401356132db81613eec565b600080600080600060a086880312156137c057600080fd5b6137c986613240565b94506020860151935060408601519250606086015191506137ec60808701613240565b90509295509295909350565b60006020828403121561380a57600080fd5b815160ff8116811461327757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6009811061385457613854613d75565b9052565b60208082528181018390526000906040600585901b8401810190840186845b878110156138e557868403603f190183528135368a9003601e1901811261389d57600080fd5b890180356001600160401b038111156138b557600080fd5b8036038b13156138c457600080fd5b6138d1868289850161381b565b955050509184019190840190600101613877565b5091979650505050505050565b6020808252600c908201526b54524144494e475f4f4e4c5960a01b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81518152602080830151608083019161395590840182613844565b506040830151604083015260608301511515606083015292915050565b81516001600160a01b0316815260208083015190820152604080830151908201526060820151610100820190600281106139ae576139ae613d75565b806060840152506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b835180516001600160a01b031682526102008201906020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c0810151613a3d60c085018215159052565b5060e08181015190840152610100808201519084015261012080820151908401526101409081015190830152602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b84815260808101613ab46020830186613844565b836040830152821515606083015295945050505050565b6000808335601e19843603018112613ae257600080fd5b8301803591506001600160401b03821115613afc57600080fd5b602001915036819003821315613b1157600080fd5b9250929050565b604051608081016001600160401b0381118282101715613b3a57613b3a613da1565b60405290565b60405161016081016001600160401b0381118282101715613b3a57613b3a613da1565b604051601f8201601f191681016001600160401b0381118282101715613b8b57613b8b613da1565b604052919050565b60008219821115613ba657613ba6613d49565b500190565b600082613bba57613bba613d5f565b500490565b600181815b80851115613bfa578160001904821115613be057613be0613d49565b80851615613bed57918102915b93841c9390800290613bc4565b509250929050565b600061327763ffffffff841683613c1f565b600061327760ff8416835b600082613c2e575060016107e8565b81613c3b575060006107e8565b8160018114613c515760028114613c5b57613c77565b60019150506107e8565b60ff841115613c6c57613c6c613d49565b50506001821b6107e8565b5060208310610133831016604e8410600b8410161715613c9a575081810a6107e8565b613ca48383613bbf565b8060001904821115613cb857613cb8613d49565b029392505050565b6000816000190483118215151615613cda57613cda613d49565b500290565b600082821015613cf157613cf1613d49565b500390565b6000600019821415613d0a57613d0a613d49565b5060010190565b600082613d2057613d20613d5f565b500690565b60008160030b637fffffff19811415613d4057613d40613d49565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b60028210613de757613de7613d75565b60ff1981541660ff831681178255505050565b8135613e0581613ed7565b613e0f8183613db7565b506020820135600182015560408201356002820155606082013560028110613e3657600080fd5b613e438160038401613dd7565b506080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b8135613e7b81613ed7565b613e858183613db7565b50602082013560018201556040820135600282015560608201356003820155600481016080830135613eb681613eec565b60ff1982541660ff821515168117835550505060a082013560058201555050565b6001600160a01b038116811461317e57600080fd5b801515811461317e57600080fdfea2646970667358221220d7ac3bb4fa400766eae44edb10bfcab1d50477e46eec5c8686176c76fab6e75664736f6c63430008070033","sourceMap":"455:17867:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:177;;;;;;;;;;-1:-1:-1;3047:177:108;;;;;:::i;:::-;;:::i;:::-;;623:31;;;;;;;;;;-1:-1:-1;623:31:108;;;;-1:-1:-1;;;;;623:31:108;;;;;;-1:-1:-1;;;;;11897:32:154;;;;11879:51;;11867:2;11852:18;623:31:108;;;;;;;;748:35;;;;;;;;;;;;;;;;;;;22695:25:154;;;22683:2;22668:18;748:35:108;22549:177:154;12876:760:108;;;;;;;;;;-1:-1:-1;12876:760:108;;;;;:::i;:::-;;:::i;660:41::-;;;;;;;;;;-1:-1:-1;660:41:108;;;;-1:-1:-1;;;;;660:41:108;;;11594:134;;;;;;;;;;-1:-1:-1;11594:134:108;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11698:23:108;;;:16;:23;;;;;;11691:30;;;;;;;;;-1:-1:-1;;;;;11691:30:108;;;-1:-1:-1;11691:30:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11594:134;;;;;22171:13:154;;-1:-1:-1;;;;;22167:39:154;22149:58;;22263:4;22251:17;;;22245:24;22223:20;;;22216:54;22314:17;;;22308:24;22286:20;;;22279:54;;;;22389:4;22377:17;;;22371:24;22349:20;;;22342:54;22466:4;22454:17;;;22448:24;22441:32;22434:40;22412:20;;;22405:70;-1:-1:-1;22519:17:154;;;22513:24;22491:20;;;22484:54;;;;22136:3;22121:19;11594:134:108;21944:600:154;12424:204:108;;;;;;;;;;-1:-1:-1;12424:204:108;;;;;:::i;:::-;;:::i;2088:262::-;;;;;;;;;;-1:-1:-1;2088:262:108;;;;;:::i;:::-;;:::i;10861:186::-;;;;;;;;;;-1:-1:-1;10861:186:108;;;;;:::i;:::-;;:::i;591:25::-;;;;;;;;;;-1:-1:-1;591:25:108;;;;-1:-1:-1;;;591:25:108;;;;;;;;;13651:14:154;;13644:22;13626:41;;13614:2;13599:18;591:25:108;13486:187:154;13869:1150:108;;;;;;;;;;-1:-1:-1;13869:1150:108;;;;;:::i;:::-;;:::i;832:44::-;;;;;;;;;;-1:-1:-1;832:44:108;;;;;:::i;:::-;;:::i;790:36::-;;;;;;;;;;-1:-1:-1;790:36:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;707:35::-;;;;;;;;;;-1:-1:-1;707:35:108;;;;-1:-1:-1;;;;;707:35:108;;;10190:141;;;;;;;;;;-1:-1:-1;10190:141:108;;;;;:::i;:::-;;:::i;3480:278::-;;;;;;;;;;-1:-1:-1;3480:278:108;;;;;:::i;:::-;;:::i;1558:372::-;;;;;;;;;;-1:-1:-1;1558:372:108;;;;;:::i;:::-;;:::i;11179:206::-;;;;;;;;;;-1:-1:-1;11179:206:108;;;;;:::i;:::-;;:::i;10557:171::-;;;;;;;;;;-1:-1:-1;10557:171:108;;;;;:::i;:::-;;:::i;12690:107::-;;;;;;;;;;-1:-1:-1;12690:107:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11960:164::-;;;;;;;;;;-1:-1:-1;11960:164:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2797:137::-;;;;;;;;;;-1:-1:-1;2797:137:108;;;;;:::i;:::-;;:::i;3999:5975::-;;;;;;:::i;:::-;;:::i;2484:139::-;;;;;;;;;;-1:-1:-1;2484:139:108;;;;;:::i;:::-;;:::i;568:17::-;;;;;;;;;;-1:-1:-1;568:17:108;;;;;;;-1:-1:-1;;;;;568:17:108;;;3047:177;1085:8;;:14;;;-1:-1:-1;;;1085:14:108;;;;-1:-1:-1;;;;;1085:8:108;;;;-1:-1:-1;;1085:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:108;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:108;;18442:2:154;1063:49:108;;;18424:21:154;18481:1;18461:18;;;18454:29;-1:-1:-1;;;18499:18:154;;;18492:38;18547:18;;1063:49:108;;;;;;;;;3127:23:::1;:36:::0;;;3179:38:::1;::::0;22695:25:154;;;3179:38:108::1;::::0;22683:2:154;22668:18;3179:38:108::1;;;;;;;;3047:177:::0;:::o;12876:760::-;13015:12;;:33;;-1:-1:-1;;;13015:33:108;;;;;22695:25:154;;;12970:4:108;;;;-1:-1:-1;;;;;13015:12:108;;;;:21;;22668:18:154;;13015:33:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12986:62;-1:-1:-1;13072:21:108;13063:5;:30;;;;;;;;:::i;:::-;;:81;;;-1:-1:-1;13119:25:108;13110:5;:34;;;;;;;;:::i;:::-;;13063:81;:127;;;-1:-1:-1;13170:20:108;13161:5;:29;;;;;;;;:::i;:::-;;13063:127;13059:570;;;13222:19;;-1:-1:-1;13215:26:108;;13059:570;13280:22;13271:5;:31;;;;;;;;:::i;:::-;;:87;;;-1:-1:-1;13332:26:108;13323:5;:35;;;;;;;;:::i;:::-;;13271:87;:138;;;-1:-1:-1;13388:21:108;13379:5;:30;;;;;;;;:::i;:::-;;13271:138;:193;;;-1:-1:-1;13439:25:108;13430:5;:34;;;;;;;;:::i;:::-;;13271:193;:246;;;-1:-1:-1;13494:23:108;13485:5;:32;;;;;;;;:::i;:::-;;13271:246;:295;;;-1:-1:-1;13547:19:108;13538:5;:28;;;;;;;;:::i;:::-;;13271:295;13267:362;;;13598:20;;;;-1:-1:-1;13591:27:108;;13267:362;12975:661;12876:760;;;;;:::o;12424:204::-;12554:12;;:67;;-1:-1:-1;;;12554:67:108;;;;;23629:25:154;;;23670:18;;;23663:34;;;23740:14;;23733:22;23713:18;;;23706:50;12531:4:108;;-1:-1:-1;;;;;12554:12:108;;:25;;23602:18:154;;12554:67:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12547:74;12424:204;-1:-1:-1;;;;12424:204:108:o;2088:262::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:108;;;;-1:-1:-1;;;;;1085:8:108;;;;-1:-1:-1;;1085:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:108;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:108;;18442:2:154;1063:49:108;;;18424:21:154;18481:1;18461:18;;;18454:29;-1:-1:-1;;;18499:18:154;;;18492:38;18547:18;;1063:49:108;18240:331:154;1063:49:108;-1:-1:-1;;;;;2174:36:108;::::1;2166:56;;;::::0;-1:-1:-1;;;2166:56:108;;19117:2:154;2166:56:108::1;::::0;::::1;19099:21:154::0;19156:1;19136:18;;;19129:29;-1:-1:-1;;;19174:18:154;;;19167:37;19221:18;;2166:56:108::1;18915:330:154::0;2166:56:108::1;2232:12;:42:::0;;-1:-1:-1;;;;;;2232:42:108::1;-1:-1:-1::0;;;;;2232:42:108;::::1;::::0;;::::1;::::0;;;2289:54:::1;::::0;;17658:21:154;;;17715:2;17695:18;;;17688:30;;;;-1:-1:-1;;;17749:2:154;17734:18;;17727:42;17836:4;17821:20;;17814:62;;;;2289:54:108::1;::::0;17801:3:154;17786:19;2289:54:108::1;17446:436:154::0;10861:186:108;10959:8;;:20;;;-1:-1:-1;;;10959:20:108;;;;-1:-1:-1;;;;;10959:8:108;;;;-1:-1:-1;;10959:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10945:34:108;:10;:34;10937:61;;;;-1:-1:-1;;;10937:61:108;;15518:2:154;10937:61:108;;;15500:21:154;15557:2;15537:18;;;15530:30;-1:-1:-1;;;15576:18:154;;;15569:44;15630:18;;10937:61:108;15316:338:154;10937:61:108;11015:25;;;;:16;:25;;;;;11008:32;;-1:-1:-1;;;;;;11008:32:108;;;-1:-1:-1;11008:32:108;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11008:32:108;;;;;;10861:186::o;13869:1150::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:108;;;;-1:-1:-1;;;;;1085:8:108;;;;-1:-1:-1;;1085:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:108;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:108;;18442:2:154;1063:49:108;;;18424:21:154;18481:1;18461:18;;;18454:29;-1:-1:-1;;;18499:18:154;;;18492:38;18547:18;;1063:49:108;18240:331:154;1063:49:108;14100:8:::1;::::0;:48:::1;::::0;-1:-1:-1;;;14100:48:108;;-1:-1:-1;;;;;12161:32:154;;;14100:48:108::1;::::0;::::1;12143:51:154::0;12210:18;;;12203:34;;;12253:18;;;12246:34;;;14084:13:108::1;::::0;14100:8:::1;::::0;:19:::1;::::0;12116:18:154;;14100:48:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;::::0;14179:8:::1;::::0;:48:::1;::::0;-1:-1:-1;;;14179:48:108;;-1:-1:-1;;;;;12161:32:154;;;14179:48:108::1;::::0;::::1;12143:51:154::0;12210:18;;;12203:34;;;12253:18;;;12246:34;;;14100:57:108;;-1:-1:-1;14167:9:108::1;::::0;14179:8;;::::1;::::0;:19:::1;::::0;12116:18:154;;14179:48:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;;14167:76;;14273:4;14262:7;:15;;14254:38;;;::::0;-1:-1:-1;;;14254:38:108;;18778:2:154;14254:38:108::1;::::0;::::1;18760:21:154::0;18817:2;18797:18;;;18790:30;-1:-1:-1;;;18836:18:154;;;18829:40;18886:18;;14254:38:108::1;18576:334:154::0;14254:38:108::1;14321:1;14310:8;:12;14302:33;;;::::0;-1:-1:-1;;;14302:33:108;;15861:2:154;14302:33:108::1;::::0;::::1;15843:21:154::0;15900:1;15880:18;;;15873:29;-1:-1:-1;;;15918:18:154;;;15911:38;15966:18;;14302:33:108::1;15659:331:154::0;14302:33:108::1;14359:12;::::0;:52:::1;::::0;-1:-1:-1;;;14359:52:108;;-1:-1:-1;;;;;12161:32:154;;;14359:52:108::1;::::0;::::1;12143:51:154::0;12210:18;;;12203:34;;;12253:18;;;12246:34;;;14346:10:108::1;::::0;14359:12:::1;::::0;:23:::1;::::0;12116:18:154;;14359:52:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14346:65;;14422:15;14440:5;:172;;14550:62;14560:10;14572:39;14550:9;:62::i;:::-;14440:172;;;14465:66;14475:10;14487:43;14465:9;:66::i;:::-;14639:8;::::0;14685:207:::1;::::0;;14737:84;;;;;-1:-1:-1;;;;;14737:84:108;;::::1;14685:207;::::0;::::1;14737:84:::0;;;-1:-1:-1;14737:84:108;;;;;;;;;;;;;;;;;-1:-1:-1;14639:8:108::1;14737:84:::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;14685:207;;;14737:84:::1;14685:207:::0;::::1;::::0;;;;;;;;;-1:-1:-1;14685:207:108;;;;;14639:303;;-1:-1:-1;;;14639:303:108;;14422:190;;-1:-1:-1;14639:8:108;;::::1;::::0;:32:::1;::::0;:303:::1;::::0;14685:207;;14422:190;;-1:-1:-1;14639:303:108::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14961:28;14973:7;14982:6;14961:11;:28::i;:::-;14073:946;;;;13869:1150:::0;;;;;:::o;832:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10190:141::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:108;;;;-1:-1:-1;;;;;1190:8:108;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:108;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:108;;16197:2:154;1168:57:108;;;16179:21:154;16236:2;16216:18;;;16209:30;-1:-1:-1;;;16255:18:154;;;16248:42;16307:18;;1168:57:108;15995:336:154;1168:57:108;10295:25:::1;::::0;;;:16:::1;:25;::::0;;;;10323:1;;10295:29:::1;10323:1:::0;10295:25;:29:::1;:::i;:::-;-1:-1:-1::0;;;;10190:141:108:o;3480:278::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:108;;;;3576:4;;-1:-1:-1;;;;;1190:8:108;;:16;;:18;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:108;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:108;;16197:2:154;1168:57:108;;;16179:21:154;16236:2;16216:18;;;16209:30;-1:-1:-1;;;16255:18:154;;;16248:42;16307:18;;1168:57:108;15995:336:154;1168:57:108;3626:12:::1;::::0;:32:::1;::::0;-1:-1:-1;;;3626:32:108;;::::1;::::0;::::1;22695:25:154::0;;;-1:-1:-1;;;;;;;;;3626:12:108;;::::1;::::0;:20:::1;::::0;22668:18:154;;3626:32:108::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;3626:32:108::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;3592:66;;;;;;;3687:40;;;;;;;;3693:10;3687:40;;;;3705:10;3687:40;;;;;;;;:::i;:::-;::::0;;::::1;::::0;;::::1;::::0;;;3722:4:::1;3687:40:::0;;;;;;;-1:-1:-1;3669:15:108;;;:6:::1;:15:::0;;;;;;:58;;;;;;::::1;::::0;;;::::1;::::0;;:15;;:58;;;;-1:-1:-1;;3669:58:108;;::::1;::::0;;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;3669:58:108::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;3669:58:108::1;::::0;::::1;;::::0;;;::::1;::::0;;3744:7;3480:278;-1:-1:-1;;;;3480:278:108:o;1558:372::-;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;;16538:2:154;3325:201:24;;;16520:21:154;16577:2;16557:18;;;16550:30;16616:34;16596:18;;;16589:62;-1:-1:-1;;;16667:18:154;;;16660:44;16721:19;;3325:201:24;16336: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;-1:-1:-1;;;;;1680:36:108;::::1;1672:61;;;::::0;-1:-1:-1;;;1672:61:108;;16953:2:154;1672:61:108::1;::::0;::::1;16935:21:154::0;16992:2;16972:18;;;16965:30;-1:-1:-1;;;17011:18:154;;;17004:42;17063:18;;1672:61:108::1;16751:336:154::0;1672:61:108::1;1744:12;:42:::0;;-1:-1:-1;;;;;1744:42:108;;::::1;-1:-1:-1::0;;;;;;1744:42:108;;::::1;;::::0;;;1796:10:::1;:34:::0;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;1840:37:108;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;1913:9:::1;1887:23;:35:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;15269:36:154;;3721:14:24;;15257:2:154;15242:18;3721:14:24;;;;;;;3269:483;1558:372:108;;;:::o;11179:206::-;11287:8;;:20;;;-1:-1:-1;;;11287:20:108;;;;-1:-1:-1;;;;;11287:8:108;;;;-1:-1:-1;;11287:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11273:34:108;:10;:34;11265:61;;;;-1:-1:-1;;;11265:61:108;;15518:2:154;11265:61:108;;;15500:21:154;15557:2;15537:18;;;15530:30;-1:-1:-1;;;15576:18:154;;;15569:44;15630:18;;11265:61:108;15316:338:154;11265:61:108;11343:35;;;;:26;:35;;;;;11336:42;;-1:-1:-1;;;;;;11336:42:108;;;-1:-1:-1;11336:42:108;;;;;;;;;;;;;;;;-1:-1:-1;;11336:42:108;;;;;;;;;;;;;;;;;;;;;;;;11179:206::o;10557:171::-;1190:8;;:18;;;-1:-1:-1;;;1190:18:108;;;;-1:-1:-1;;;;;1190:8:108;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:108;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:108;;16197:2:154;1168:57:108;;;16179:21:154;16236:2;16216:18;;;16209:30;-1:-1:-1;;;16255:18:154;;;16248:42;16307:18;;1168:57:108;15995:336:154;1168:57:108;10682:35:::1;::::0;;;:26:::1;:35;::::0;;;;10720:1;;10682:39:::1;10720:1:::0;10682:35;:39:::1;:::i;12690:107::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12779:11:108;;;;:6;:11;;;;;;;;;12772:18;;;;;;;;;;;;;;;;12779:11;;12772:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;12690:107;-1:-1:-1;;12690:107:108:o;11960:164::-;12039:26;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12039:26:108;12084:33;;;;:26;:33;;;;;;;;;12077:40;;;;;;;;;-1:-1:-1;;;;;12077:40:108;;;-1:-1:-1;12077:40:108;;;;;;;;;;;;;;;;;;;;;;;;;;12084:33;;12077:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11960:164;-1:-1:-1;;11960:164:108:o;2797:137::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:108;;;;-1:-1:-1;;;;;1085:8:108;;;;-1:-1:-1;;1085:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:108;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:108;;18442:2:154;1063:49:108;;;18424:21:154;18481:1;18461:18;;;18454:29;-1:-1:-1;;;18499:18:154;;;18492:38;18547:18;;1063:49:108;18240:331:154;1063:49:108;2866:13:::1;:22:::0;;-1:-1:-1;;;;2866:22:108::1;-1:-1:-1::0;;;2866:22:108;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;2904:23:::1;::::0;13626:41:154;;;2904:23:108::1;::::0;13614:2:154;13599:18;2904:23:108::1;13486:187:154::0;3999:5975:108;1190:8;;:18;;;-1:-1:-1;;;1190:18:108;;;;-1:-1:-1;;;;;1190:8:108;;;;:16;;:18;;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1176:32:108;:10;:32;1168:57;;;;-1:-1:-1;;;1168:57:108;;16197:2:154;1168:57:108;;;16179:21:154;16236:2;16216:18;;;16209:30;-1:-1:-1;;;16255:18:154;;;16248:42;16307:18;;1168:57:108;15995:336:154;1168:57:108;4112:15:::1;4130::::0;;;:6:::1;:15;::::0;;;;4160:11:::1;::::0;::::1;::::0;::::1;;4156:5812;;;4188:13;4215:15;;4231:1;4215:18;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;4204:41;;;;;;;:::i;:::-;4303:12;::::0;4331:11;;4303:40:::1;::::0;-1:-1:-1;;;4303:40:108;;::::1;::::0;::::1;22695:25:154::0;;;;4188:57:108;;-1:-1:-1;4259:41:108::1;::::0;-1:-1:-1;;;;;4303:12:108;;::::1;::::0;-1:-1:-1;;22668:18:154;;4303:40:108::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4357:22;4382::::0;;;:13:::1;:22;::::0;;;;4421:13;;4259:84;;-1:-1:-1;4382:22:108;-1:-1:-1;;;4421:13:108;::::1;;;:53:::0;::::1;;;-1:-1:-1::0;4453:21:108::1;4438:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;4421:53;:88;;;;-1:-1:-1::0;4478:17:108::1;::::0;::::1;::::0;-1:-1:-1;;;;;4478:31:108::1;::::0;::::1;4421:88;4418:3402;;;4573:8;::::0;:40:::1;::::0;-1:-1:-1;;;4573:40:108;;::::1;::::0;::::1;22695:25:154::0;;;4528:42:108::1;::::0;-1:-1:-1;;;;;4573:8:108::1;::::0;:31:::1;::::0;22668:18:154;;4573:40:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4528:85:::0;-1:-1:-1;4649:30:108::1;4634:1;:11;;;:45;;;;;;;;:::i;:::-;;4631:727;;;4788:37;4852:10;:17;;;4788:82;;4895:17;4915:14:::0;4936:13:::1;-1:-1:-1::0;;;;;4936:29:108::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4892:75;;;;;;;5064:15;5037:23;;5025:9;:35;;;;:::i;:::-;:54;5022:318;;5106:12;5170:13;-1:-1:-1::0;;;;;5170:22:108::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5158:37;::::0;:2:::1;:37;:::i;:::-;5122:32;557:4;5130:10:::0;5122:32:::1;:::i;:::-;5121:74;;;;:::i;:::-;5296:11:::0;;5267:50:::1;::::0;;23969:25:154;;;24025:2;24010:18;;24003:34;;;;24053:18;;24046:34;;;5106:89:108;;-1:-1:-1;5106:89:108;;-1:-1:-1;5267:50:108::1;::::0;23957:2:154;23942:18;5267:50:108::1;;;;;;;5080:260;5022:318;4680:678;;;4631:727;4510:862;4418:3402;;;5394:13;::::0;-1:-1:-1;;;5394:13:108;::::1;;;5393:14;:23:::0;::::1;;;;5411:5;5393:23;5390:2430;;;5435:8;5446:4:::0;;:34:::1;::::0;-1:-1:-1;;;5446:34:108;;:4;;;::::1;-1:-1:-1::0;;;;;5446:4:108::1;::::0;-1:-1:-1;;5446:34:108::1;::::0;5464:15;;;;5446:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5498:4;::::0;:50:::1;::::0;-1:-1:-1;;;5498:50:108;;5435:45;;-1:-1:-1;5498:4:108;;::::1;-1:-1:-1::0;;;;;5498:4:108::1;::::0;:21:::1;::::0;5435:45;;5498:50:::1;::::0;5532:15;;;;5498:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5567:34:108::1;::::0;-1:-1:-1;;;5567:34:108::1;5638:23;5623:11;::::0;::::1;::::0;::::1;;:38;::::0;::::1;;;;;;:::i;:::-;;:76;;;-1:-1:-1::0;5680:19:108::1;5665:11;::::0;::::1;::::0;::::1;;:34;::::0;::::1;;;;;;:::i;:::-;;5623:76;5620:288;;;5734:4;::::0;::::1;5759:5:::0;::::1;::::0;5734:35:::1;::::0;-1:-1:-1;;;5734:35:108;;::::1;::::0;::::1;13861:25:154::0;;;;5766:2:108::1;13902:18:154::0;;;13895:34;5734:4:108;;;::::1;-1:-1:-1::0;;;;;5734:4:108::1;::::0;:24:::1;::::0;13834:18:154;;5734:35:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5722:47;;5620:288;;;5840:4;::::0;::::1;5865:5:::0;::::1;::::0;5840:35:::1;::::0;-1:-1:-1;;;5840:35:108;;::::1;::::0;::::1;13861:25:154::0;;;;5872:2:108::1;13902:18:154::0;;;13895:34;5840:4:108;;;::::1;-1:-1:-1::0;;;;;5840:4:108::1;::::0;:24:::1;::::0;13834:18:154;;5840:35:108::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5828:47;;5620:288;5926:9;5974:1:::0;5957:9:::1;:14;;;:18;;;5953:442;;;6059:14;::::0;::::1;::::0;6046:28:::1;::::0;:2:::1;:28;:::i;:::-;6014:15:::0;;6007:36:::1;::::0;557:4:::1;::::0;-1:-1:-1;;;;;6007:36:108::1;;:::i;:::-;:67;;;;:::i;:::-;5999:75;;6146:9;:14;;;6133:2;:28;;;;:::i;:::-;6103:14;::::0;::::1;::::0;:27:::1;::::0;557:4:::1;::::0;-1:-1:-1;;;;;6103:27:108::1;;:::i;:::-;:58;;;;:::i;:::-;6096:65;;5953:442;;;6271:9;:14;;;6270:15;;;:::i;:::-;6257:29;::::0;:2:::1;:29;:::i;:::-;6224:15:::0;;6217:36:::1;::::0;557:4:::1;::::0;-1:-1:-1;;;;;6217:36:108::1;;:::i;:::-;6216:70;;;;:::i;:::-;6208:78;;6361:9;:14;;;6360:15;;;:::i;:::-;6347:29;::::0;:2:::1;:29;:::i;:::-;6316:14;::::0;::::1;::::0;:27:::1;::::0;557:4:::1;::::0;-1:-1:-1;;;;;6316:27:108::1;;:::i;:::-;6315:61;;;;:::i;:::-;6308:68;;5953:442;6429:1;6421:5;:9;:91;;;;-1:-1:-1::0;6487:11:108;;6500::::1;::::0;::::1;::::0;6473:39:::1;::::0;6487:11;6500::::1;;6473:13;:39::i;:::-;6463:5:::0;6436:17:::1;557:4;6436::::0;:17:::1;:::i;:::-;:23;::::0;6456:3:::1;6436:23;:::i;:::-;6435:33;;;;:::i;:::-;6434:78;;6421:91;6413:128;;;::::0;-1:-1:-1;;;6413:128:108;;18089:2:154;6413:128:108::1;::::0;::::1;18071:21:154::0;18128:2;18108:18;;;18101:30;18167:26;18147:18;;;18140:54;18211:18;;6413:128:108::1;17887:348:154::0;6413:128:108::1;6564:24:::0;;:28;;;;:63:::1;;-1:-1:-1::0;6596:17:108::1;::::0;::::1;::::0;-1:-1:-1;;;;;6596:31:108::1;::::0;::::1;6564:63;6560:1246;;;6651:37;6715:10;:17;;;6651:82;;6758:17;6779:14:::0;6800:13:::1;-1:-1:-1::0;;;;;6800:29:108::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6755:76;;;;;;;6928:15;6901:23;;6889:9;:35;;;;:::i;:::-;:54;6886:902;;6970:12;7034:13;-1:-1:-1::0;;;;;7034:22:108::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7022:37;::::0;:2:::1;:37;:::i;:::-;6986:32;557:4;6994:10:::0;6986:32:::1;:::i;:::-;6985:74;;;;:::i;:::-;6970:89;;7090:50;7110:7;7119:1;:11;;;7132:7;7090:50;;;;;;;23969:25:154::0;;;24025:2;24010:18;;24003:34;;;;24068:2;24053:18;;24046:34;23957:2;23942:18;;23767:319;7090:50:108::1;;;;;;;;7181:5;7171:7;:15;7167:286;;;7311:24:::0;;7301:5;557:4:::1;7262:15;7301:5:::0;7262:7;:15:::1;:::i;:::-;7261:23;::::0;7281:3:::1;7261:23;:::i;:::-;:36;;;;:::i;:::-;7260:46;;;;:::i;:::-;7259:76;;7218:208;;;::::0;-1:-1:-1;;;7218:208:108;;17294:2:154;7218:208:108::1;::::0;::::1;17276:21:154::0;17333:2;17313:18;;;17306:30;-1:-1:-1;;;17352:18:154;;;17345:55;17417:18;;7218:208:108::1;17092:349:154::0;7218:208:108::1;7492:5;7482:7;:15;7478:288;;;7624:24:::0;;7612:7;557:4:::1;7573:15;7612:7:::0;7573:5;:15:::1;:::i;:::-;7572:23;::::0;7592:3:::1;7572:23;:::i;:::-;:36;;;;:::i;:::-;7571:48;;;;:::i;:::-;7570:78;;7529:210;;;::::0;-1:-1:-1;;;7529:210:108;;17294:2:154;7529:210:108::1;::::0;::::1;17276:21:154::0;17333:2;17313:18;;;17306:30;-1:-1:-1;;;17352:18:154;;;17345:55;17417:18;;7529:210:108::1;17092:349:154::0;7529:210:108::1;6944:844;6886:902;6629:1177;;;6560:1246;5417:2403;;;5390:2430;7834:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;7834:19:108;;;::::1;::::0;;;;;;::::1;::::0;;;7895:11;;7872:42:::1;::::0;;23969:25:154;;;24010:18;;;24003:34;;;;24053:18;;24046:34;;;7872:42:108::1;::::0;23957:2:154;23942:18;7872:42:108::1;;;;;;;7933:14:::0;;:18;7929:2029:::1;;7972:36;8011:178;;;;;;;;8060:7;8011:178;;;;8089:16;8097:7;8089:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:16::i;:::-;8011:178:::0;;8127:12:::1;::::0;8152:11;;8127:44:::1;::::0;;-1:-1:-1;;;8127:44:108;;::::1;::::0;::::1;22899:25:154::0;;;;-1:-1:-1;22940:18:154;;;22933:50;8127:44:108;8011:178:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;8127:12:108;;::::1;::::0;-1:-1:-1;;22872:18:154;;;;;8127:44:108;;;;;;:12;:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8011:178;;::::0;7972:217:::1;;8208:40;8251:177;;;;;;;;8300:7;8251:177;;;;8329:16;8337:7;8329:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:16::i;:::-;8251:177:::0;;8367:12:::1;::::0;8392:11;;8367:43:::1;::::0;;-1:-1:-1;;;8367:43:108;;::::1;::::0;::::1;22899:25:154::0;;;;8367:12:108;22940:18:154;;;22933:50;8367:43:108;8251:177:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;8367:12:108;;::::1;::::0;-1:-1:-1;;22872:18:154;;;;;8367:43:108;;;;;;:12;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8251:177:::0;;8473:8:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;8473:20:108;;;;8208:220;;-1:-1:-1;8447:12:108::1;::::0;-1:-1:-1;;;;;8473:8:108;;::::1;::::0;-1:-1:-1;;8473:20:108::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8447:47:::0;-1:-1:-1;8532:21:108::1;8517:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;8513:1343;;;8603:9:::0;;8614:7:::1;::::0;::::1;::::0;8623:9:::1;::::0;;::::1;::::0;8577:63;;-1:-1:-1;;;8577:63:108;;::::1;::::0;::::1;24316:25:154::0;;;;24357:18;;;24350:34;;;;24400:18;;;24393:34;-1:-1:-1;24443:18:154;;;24436:50;-1:-1:-1;;;;;8577:25:108;::::1;::::0;-1:-1:-1;;24288:19:154;;8577:63:108::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8513:1343;;;8684:22;8669:11:::0;;::::1;::::0;::::1;;:37;::::0;::::1;;;;;;:::i;:::-;;8665:1191;;;8757:9:::0;;8768:7:::1;::::0;::::1;::::0;8730:53:::1;::::0;-1:-1:-1;;;8730:53:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;-1:-1:-1;23713:18:154;;;23706:50;-1:-1:-1;;;;;8730:26:108;::::1;::::0;-1:-1:-1;;23602:18:154;;8730:53:108::1;23433:329:154::0;8665:1191:108::1;8827:20;8812:11;::::0;::::1;::::0;::::1;;:35;::::0;::::1;;;;;;:::i;:::-;;8808:1048;;;8903:9:::0;;8914:7:::1;::::0;::::1;::::0;8923:9:::1;::::0;;::::1;::::0;8871:69;;-1:-1:-1;;;8871:69:108;;::::1;::::0;::::1;24316:25:154::0;;;;24357:18;;;24350:34;;;;24400:18;;;24393:34;-1:-1:-1;24443:18:154;;;24436:50;-1:-1:-1;;;;;8871:31:108;::::1;::::0;-1:-1:-1;;24288:19:154;;8871:69:108::1;24091:401:154::0;8808:1048:108::1;8984:21;8969:11;::::0;::::1;::::0;::::1;;:36;::::0;::::1;;;;;;:::i;:::-;;8965:891;;;9062:9:::0;;9073:7:::1;::::0;::::1;::::0;9029:59:::1;::::0;-1:-1:-1;;;9029:59:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;-1:-1:-1;23713:18:154;;;23706:50;-1:-1:-1;;;;;9029:32:108;::::1;::::0;-1:-1:-1;;23602:18:154;;9029:59:108::1;23433:329:154::0;8965:891:108::1;9132:23;9117:11;::::0;::::1;::::0;::::1;;:38;::::0;::::1;;;;;;:::i;:::-;;9113:743;;;9202:9:::0;;9213:7:::1;::::0;::::1;::::0;9179:49:::1;::::0;-1:-1:-1;;;9179:49:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;-1:-1:-1;23713:18:154;;;23706:50;-1:-1:-1;;;;;9179:22:108;::::1;::::0;-1:-1:-1;;23602:18:154;;9179:49:108::1;23433:329:154::0;9113:743:108::1;9271:19;9256:11;::::0;::::1;::::0;::::1;;:34;::::0;::::1;;;;;;:::i;:::-;;9253:603;;;9333:9:::0;;9344:7:::1;::::0;::::1;::::0;9314:45:::1;::::0;-1:-1:-1;;;9314:45:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;-1:-1:-1;23713:18:154;;;23706:50;-1:-1:-1;;;;;9314:18:108;::::1;::::0;-1:-1:-1;;23602:18:154;;9314:45:108::1;23433:329:154::0;9253:603:108::1;9403:26;9388:11;::::0;::::1;::::0;::::1;;:41;::::0;::::1;;;;;;:::i;:::-;;9384:472;;;9480:13:::0;;9495:11:::1;::::0;::::1;::::0;9453:60:::1;::::0;-1:-1:-1;;;9453:60:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;9508:4:108::1;23713:18:154::0;;;23706:50;-1:-1:-1;;;;;9453:26:108;::::1;::::0;-1:-1:-1;;23602:18:154;;9453:60:108::1;23433:329:154::0;9384:472:108::1;9556:25;9541:11;::::0;::::1;::::0;::::1;;:40;::::0;::::1;;;;;;:::i;:::-;;9538:318;;;9630:13:::0;;9645:11:::1;::::0;::::1;::::0;9658:13:::1;::::0;;::::1;::::0;9604:74;;-1:-1:-1;;;9604:74:108;;::::1;::::0;::::1;24316:25:154::0;;;;24357:18;;;24350:34;;;;24400:18;;;24393:34;9673:4:108::1;24443:18:154::0;;;24436:50;-1:-1:-1;;;;;9604:25:108;::::1;::::0;-1:-1:-1;;24288:19:154;;9604:74:108::1;24091:401:154::0;9538:318:108::1;9722:25;9707:11;::::0;::::1;::::0;::::1;;:40;::::0;::::1;;;;;;:::i;:::-;;9703:153;;;9804:13:::0;;9819:11:::1;::::0;::::1;::::0;9771:66:::1;::::0;-1:-1:-1;;;9771:66:108;;::::1;::::0;::::1;23629:25:154::0;;;;23670:18;;;23663:34;9832:4:108::1;23713:18:154::0;;;23706:50;-1:-1:-1;;;;;9771:32:108;::::1;::::0;::::1;::::0;23602:18:154;;9771:66:108::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9703:153;9881:15;::::0;;;:6:::1;:15;::::0;;;;;;;9874:22;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;9874:22:108;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;9921:13:::1;:22:::0;;;;;9914:29:::1;::::0;::::1;:::i;:::-;7953:2005;;;7929:2029;4173:5795;;;4102:5872;3999:5975:::0;;;:::o;2484:139::-;1085:8;;:14;;;-1:-1:-1;;;1085:14:108;;;;-1:-1:-1;;;;;1085:8:108;;;;-1:-1:-1;;1085:14:108;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1071:28:108;:10;:28;1063:49;;;;-1:-1:-1;;;1063:49:108;;18442:2:154;1063:49:108;;;18424:21:154;18481:1;18461:18;;;18454:29;-1:-1:-1;;;18499:18:154;;;18492:38;18547:18;;1063:49:108;18240:331:154;1063:49:108;2550:4:::1;:26:::0;;-1:-1:-1;;;;;;2550:26:108::1;-1:-1:-1::0;;;;;;2550:26:108;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2591:25:::1;::::0;11879:51:154;;;2591:25:108::1;::::0;11867:2:154;11852:18;2591:25:108::1;11733:203:154::0;15294:258:108;15420:12;;:32;;-1:-1:-1;;;15420:32:108;;;;;22695:25:154;;;-1:-1:-1;;;;;;;;;;;15420:12:108;;:20;;22668:18:154;;15420:32:108;22549:177:154;15743:1056:108;15818:15;15836:16;;;:6;:16;;;;;;;;15887:13;:23;;;;;;15925:11;;;;;;15921:872;;;15952:20;;;;;;;-1:-1:-1;15952:20:108;;;;;;;;;;;;;;16015:11;;15991:44;;;23969:25:154;;;24010:18;;;24003:34;;;;24053:18;;24046:34;;;15991:44:108;;23957:2:154;23942:18;15991:44:108;;;;;;;16054:14;;:18;16050:733;;16093:36;16132:179;;;;;;;;16181:8;16132:179;;;;16211:16;16219:7;16211:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:16::i;:::-;16132:179;;16249:12;;16274:11;;16249:44;;;-1:-1:-1;;;16249:44:108;;;;;22899:25:154;;;;-1:-1:-1;22940:18:154;;;22933:50;16249:44:108;16132:179;;;;;-1:-1:-1;;;;;16249:12:108;;;;-1:-1:-1;;22872:18:154;;;;;16249:44:108;;;;;;:12;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16132:179;;16356:8;;:20;;;-1:-1:-1;;;16356:20:108;;;;16093:218;;-1:-1:-1;16330:12:108;;-1:-1:-1;;;;;16356:8:108;;;;-1:-1:-1;;16356:20:108;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16330:47;-1:-1:-1;16415:22:108;16400:11;;;;;;:37;;;;;;;;:::i;:::-;;16396:283;;;16488:9;;16499:7;;;;16461:53;;-1:-1:-1;;;16461:53:108;;;;;23629:25:154;;;;23670:18;;;23663:34;16488:9:108;23713:18:154;;;23706:50;-1:-1:-1;;;;;16461:26:108;;;;;23602:18:154;;16461:53:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16396:283;;;16558:26;16543:11;;;;;;:41;;;;;;;;:::i;:::-;;16539:140;;;16635:9;;16646:7;;;;16608:52;;-1:-1:-1;;;16608:52:108;;;;;23629:25:154;;;;23670:18;;;23663:34;16655:4:108;23713:18:154;;;23706:50;-1:-1:-1;;;;;16608:26:108;;;;;23602:18:154;;16608:52:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16539:140;16704:16;;;;:6;:16;;;;;;;;16697:23;;;;;;;;-1:-1:-1;;16697:23:108;;;;;;;;;;;;;;;;;;;;;;;16745:13;:23;;;;;16738:30;;;:::i;:::-;16074:709;;15807:992;;15743:1056;;:::o;18034:286::-;18094:4;18110:29;18116:5;18123:1;18126:5;:12;18110:5;:29::i;:::-;18183:1;18168:5;:12;:16;;;;:::i;:::-;:21;:145;;18289:5;18311:1;18295:5;:12;:17;;18289:24;;;;;;;;:::i;:::-;;;;;;;18168:145;;;18269:1;18240:5;18262:1;18246:5;:12;:17;;18240:24;;;;;;;;:::i;:::-;;;;;;;;;;;18215:12;;18209:5;;:28;;:::i;:::-;;;;;;;:55;;;;:::i;:::-;18208:62;;18149:164;18034:286;-1:-1:-1;;18034:286:108:o;17430:436::-;17524:3;17515:5;:12;17511:49;;17430:436;;;:::o;17511:49::-;17569:6;17578:5;17569:14;;17593:10;17606:5;17612:1;17606:8;;;;;;;;:::i;:::-;;;;;;;17593:21;;17629:6;17638:5;17646:1;17638:9;;;;:::i;:::-;17629:18;;17624:138;17653:3;17649:1;:7;17624:138;;;17692:5;17681;17687:1;17681:8;;;;;;;;:::i;:::-;;;;;;;:16;17677:75;;;17717:20;17723:5;17730:1;17733:3;;;:::i;:::-;;;;17717:5;:20::i;:::-;17658:3;;;:::i;:::-;;;17624:138;;;;17771:22;17777:5;17784;17791:1;17771:5;:22::i;:::-;17803;17809:5;17816;17823:1;17803:5;:22::i;:::-;17835:24;17841:5;17848;:1;17852;17848:5;:::i;:::-;17855:3;17835:5;:24::i;:::-;17501:365;;17430:436;;;:::o;17064:125::-;17163:5;17169:1;17163:8;;;;;;;;:::i;:::-;;;;;;;17173:5;17179:1;17173:8;;;;;;;;:::i;:::-;;;;;;;17140:5;17146:1;17140:8;;;;;;;;:::i;:::-;;;;;;17150:5;17156:1;17150:8;;;;;;;;:::i;:::-;;;;;;;;;;17139:43;;;;;-1:-1:-1;;;17064:125:108:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:138:154:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:132::-;233:13;;255:28;233:13;255:28;:::i;294:695::-;348:5;401:3;394:4;386:6;382:17;378:27;368:55;;419:1;416;409:12;368:55;442:13;;-1:-1:-1;;;;;467:26:154;;464:52;;;496:18;;:::i;:::-;535:4;563:53;-1:-1:-1;587:13:154;;-1:-1:-1;;583:27:154;579:36;;563:53;:::i;:::-;641:2;632:7;625:19;685:3;680:2;675;667:6;663:15;659:24;656:33;653:53;;;702:1;699;692:12;653:53;724:1;734:134;748:2;745:1;742:9;734:134;;;837:14;;;833:23;;827:30;805:15;;;801:24;;794:64;759:10;;734:134;;;886:2;883:1;880:9;877:81;;;946:1;941:2;936;927:7;923:16;919:25;912:36;877:81;-1:-1:-1;976:7:154;294:695;-1:-1:-1;;;;;294:695:154:o;994:179::-;1072:13;;1125:22;1114:34;;1104:45;;1094:73;;1163:1;1160;1153:12;1178:247;1237:6;1290:2;1278:9;1269:7;1265:23;1261:32;1258:52;;;1306:1;1303;1296:12;1258:52;1345:9;1332:23;1364:31;1389:5;1364:31;:::i;:::-;1414:5;1178:247;-1:-1:-1;;;1178:247:154:o;1430:251::-;1500:6;1553:2;1541:9;1532:7;1528:23;1524:32;1521:52;;;1569:1;1566;1559:12;1521:52;1601:9;1595:16;1620:31;1645:5;1620:31;:::i;1686:529::-;1763:6;1771;1779;1832:2;1820:9;1811:7;1807:23;1803:32;1800:52;;;1848:1;1845;1838:12;1800:52;1887:9;1874:23;1906:31;1931:5;1906:31;:::i;:::-;1956:5;-1:-1:-1;2013:2:154;1998:18;;1985:32;2026:33;1985:32;2026:33;:::i;:::-;2078:7;-1:-1:-1;2137:2:154;2122:18;;2109:32;2150:33;2109:32;2150:33;:::i;:::-;2202:7;2192:17;;;1686:529;;;;;:::o;2220:521::-;2315:6;2323;2331;2339;2347;2400:3;2388:9;2379:7;2375:23;2371:33;2368:53;;;2417:1;2414;2407:12;2368:53;2456:9;2443:23;2475:31;2500:5;2475:31;:::i;:::-;2525:5;2577:2;2562:18;;2549:32;;-1:-1:-1;2628:2:154;2613:18;;2600:32;;2679:2;2664:18;;2651:32;;-1:-1:-1;2730:3:154;2715:19;2702:33;;-1:-1:-1;2220:521:154;-1:-1:-1;;;2220:521:154:o;2746:241::-;2802:6;2855:2;2843:9;2834:7;2830:23;2826:32;2823:52;;;2871:1;2868;2861:12;2823:52;2910:9;2897:23;2929:28;2951:5;2929:28;:::i;2992:245::-;3059:6;3112:2;3100:9;3091:7;3087:23;3083:32;3080:52;;;3128:1;3125;3118:12;3080:52;3160:9;3154:16;3179:28;3201:5;3179:28;:::i;3242:814::-;3368:6;3376;3384;3392;3400;3453:3;3441:9;3432:7;3428:23;3424:33;3421:53;;;3470:1;3467;3460:12;3421:53;3497:16;;-1:-1:-1;;;;;3562:14:154;;;3559:34;;;3589:1;3586;3579:12;3559:34;3612:61;3665:7;3656:6;3645:9;3641:22;3612:61;:::i;:::-;3602:71;;3719:2;3708:9;3704:18;3698:25;3682:41;;3748:2;3738:8;3735:16;3732:36;;;3764:1;3761;3754:12;3732:36;;3787:63;3842:7;3831:8;3820:9;3816:24;3787:63;:::i;:::-;3777:73;;;3890:2;3879:9;3875:18;3869:25;3859:35;;3937:2;3926:9;3922:18;3916:25;3950:31;3975:5;3950:31;:::i;:::-;4000:5;3990:15;;;4045:3;4034:9;4030:19;4024:26;4014:36;;3242:814;;;;;;;;:::o;4061:573::-;4161:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4263:2;4257:9;;;4293:15;;4359:22;;;-1:-1:-1;;;;;4323:34:154;;4320:62;4317:88;;;4385:18;;:::i;:::-;4421:2;4414:22;4460:16;;4445:32;;4520:2;4505:18;;4499:25;4533:31;4499:25;4533:31;:::i;:::-;4592:2;4580:15;;4573:30;4584:6;4061:573;-1:-1:-1;;;4061:573:154:o;4639:559::-;4733:6;4786:2;4774:9;4765:7;4761:23;4757:32;4754:52;;;4802:1;4799;4792:12;4754:52;4835:2;4829:9;4877:2;4865:15;;4931:22;;;-1:-1:-1;;;;;4895:34:154;;4892:62;4889:88;;;4957:18;;:::i;:::-;4997:10;4993:2;4986:22;;5038:9;5032:16;5024:6;5017:32;5103:2;5092:9;5088:18;5082:25;5077:2;5069:6;5065:15;5058:50;5162:2;5151:9;5147:18;5141:25;5136:2;5128:6;5124:15;5117:50;5186:6;5176:16;;;4639:559;;;;:::o;5203:624::-;5310:6;5363:3;5351:9;5342:7;5338:23;5334:33;5331:53;;;5380:1;5377;5370:12;5331:53;5406:22;;:::i;:::-;5458:9;5452:16;5477:33;5502:7;5477:33;:::i;:::-;5533:7;5526:5;5519:22;;5594:2;5583:9;5579:18;5573:25;5568:2;5561:5;5557:14;5550:49;5652:2;5641:9;5637:18;5631:25;5626:2;5619:5;5615:14;5608:49;5702:2;5691:9;5687:18;5681:25;5737:1;5728:7;5725:14;5715:42;;5753:1;5750;5743:12;5715:42;5784:2;5773:14;;5766:31;5777:5;5203:624;-1:-1:-1;;;5203:624:154:o;5832:775::-;5926:6;5979:3;5967:9;5958:7;5954:23;5950:33;5947:53;;;5996:1;5993;5986:12;5947:53;6022:22;;:::i;:::-;6074:9;6068:16;6129:7;6126:1;6115:22;6106:7;6103:35;6093:63;;6152:1;6149;6142:12;6093:63;6165:22;;6232:2;6217:18;;6211:25;-1:-1:-1;;;;;6267:32:154;;6255:45;;6245:73;;6314:1;6311;6304:12;6245:73;6345:2;6334:14;;6327:31;6403:2;6388:18;;6382:25;6449:1;6438:22;;;6426:35;;6416:63;;6475:1;6472;6465:12;6416:63;6506:2;6495:14;;6488:31;6572:2;6557:18;;;6551:25;6535:14;;;6528:49;;;;-1:-1:-1;6499:5:154;5832:775;-1:-1:-1;5832:775:154:o;6612:982::-;6707:6;6760:3;6748:9;6739:7;6735:23;6731:33;6728:53;;;6777:1;6774;6767:12;6728:53;6803:22;;:::i;:::-;6848:40;6878:9;6848:40;:::i;:::-;6841:5;6834:55;6942:2;6931:9;6927:18;6921:25;6916:2;6909:5;6905:14;6898:49;7000:2;6989:9;6985:18;6979:25;6974:2;6967:5;6963:14;6956:49;7058:2;7047:9;7043:18;7037:25;7032:2;7025:5;7021:14;7014:49;7117:3;7106:9;7102:19;7096:26;7090:3;7083:5;7079:15;7072:51;7177:3;7166:9;7162:19;7156:26;7150:3;7143:5;7139:15;7132:51;7216:47;7258:3;7247:9;7243:19;7216:47;:::i;:::-;7210:3;7199:15;;7192:72;7318:3;7303:19;;;7297:26;7280:15;;;7273:51;7343:3;7384:18;;;7378:25;7362:14;;;7355:49;7423:3;7464:18;;;7458:25;7442:14;;;7435:49;7503:3;7544:18;;;7538:25;7522:14;;;7515:49;;;;-1:-1:-1;7203:5:154;6612:982;-1:-1:-1;6612:982:154:o;7599:180::-;7658:6;7711:2;7699:9;7690:7;7686:23;7682:32;7679:52;;;7727:1;7724;7717:12;7679:52;-1:-1:-1;7750:23:154;;7599:180;-1:-1:-1;7599:180:154:o;7784:184::-;7854:6;7907:2;7895:9;7886:7;7882:23;7878:32;7875:52;;;7923:1;7920;7913:12;7875:52;-1:-1:-1;7946:16:154;;7784:184;-1:-1:-1;7784:184:154:o;7973:694::-;8079:6;8087;8095;8148:2;8136:9;8127:7;8123:23;8119:32;8116:52;;;8164:1;8161;8154:12;8116:52;8187:23;;;-1:-1:-1;8261:2:154;8246:18;;8233:32;-1:-1:-1;;;;;8314:14:154;;;8311:34;;;8341:1;8338;8331:12;8311:34;8379:6;8368:9;8364:22;8354:32;;8424:7;8417:4;8413:2;8409:13;8405:27;8395:55;;8446:1;8443;8436:12;8395:55;8486:2;8473:16;8512:2;8504:6;8501:14;8498:34;;;8528:1;8525;8518:12;8498:34;8581:7;8576:2;8566:6;8563:1;8559:14;8555:2;8551:23;8547:32;8544:45;8541:65;;;8602:1;8599;8592:12;8541:65;8633:2;8629;8625:11;8615:21;;8655:6;8645:16;;;;;7973:694;;;;;:::o;8672:340::-;8756:6;8764;8817:2;8805:9;8796:7;8792:23;8788:32;8785:52;;;8833:1;8830;8823:12;8785:52;8869:9;8856:23;8846:33;;8929:2;8918:9;8914:18;8901:32;8962:1;8955:5;8952:12;8942:40;;8978:1;8975;8968:12;8942:40;9001:5;8991:15;;;8672:340;;;;;:::o;9017:352::-;9126:6;9134;9178:9;9169:7;9165:23;9208:3;9204:2;9200:12;9197:32;;;9225:1;9222;9215:12;9197:32;9248:23;;;-1:-1:-1;9305:3:154;-1:-1:-1;;9287:16:154;;9283:26;9280:46;;;9322:1;9319;9312:12;9280:46;;9360:2;9349:9;9345:18;9335:28;;9017:352;;;;;:::o;9374:342::-;9473:6;9481;9525:9;9516:7;9512:23;9555:3;9551:2;9547:12;9544:32;;;9572:1;9569;9562:12;9544:32;9595:23;;;-1:-1:-1;9652:3:154;-1:-1:-1;;9634:16:154;;9630:26;9627:46;;;9669:1;9666;9659:12;9721:248;9789:6;9797;9850:2;9838:9;9829:7;9825:23;9821:32;9818:52;;;9866:1;9863;9856:12;9818:52;-1:-1:-1;;9889:23:154;;;9959:2;9944:18;;;9931:32;;-1:-1:-1;9721:248:154:o;9974:377::-;10048:6;10056;10064;10117:2;10105:9;10096:7;10092:23;10088:32;10085:52;;;10133:1;10130;10123:12;10085:52;10169:9;10156:23;10146:33;;10226:2;10215:9;10211:18;10198:32;10188:42;;10280:2;10269:9;10265:18;10252:32;10293:28;10315:5;10293:28;:::i;10356:473::-;10459:6;10467;10475;10483;10491;10544:3;10532:9;10523:7;10519:23;10515:33;10512:53;;;10561:1;10558;10551:12;10512:53;10584:39;10613:9;10584:39;:::i;:::-;10574:49;;10663:2;10652:9;10648:18;10642:25;10632:35;;10707:2;10696:9;10692:18;10686:25;10676:35;;10751:2;10740:9;10736:18;10730:25;10720:35;;10774:49;10818:3;10807:9;10803:19;10774:49;:::i;:::-;10764:59;;10356:473;;;;;;;;:::o;10834:273::-;10902:6;10955:2;10943:9;10934:7;10930:23;10926:32;10923:52;;;10971:1;10968;10961:12;10923:52;11003:9;10997:16;11053:4;11046:5;11042:16;11035:5;11032:27;11022:55;;11073:1;11070;11063:12;11317:266;11405:6;11400:3;11393:19;11457:6;11450:5;11443:4;11438:3;11434:14;11421:43;-1:-1:-1;11509:1:154;11484:16;;;11502:4;11480:27;;;11473:38;;;;11565:2;11544:15;;;-1:-1:-1;;11540:29:154;11531:39;;;11527:50;;11317:266::o;11588:140::-;11669:1;11662:5;11659:12;11649:46;;11675:18;;:::i;:::-;11704;;11588:140::o;12291:1190::-;12492:2;12544:21;;;12517:18;;;12600:22;;;-1:-1:-1;;12653:2:154;12702:1;12698:14;;;12683:30;;12679:39;;;12638:18;;12741:6;-1:-1:-1;12775:677:154;12789:6;12786:1;12783:13;12775:677;;;12854:22;;;-1:-1:-1;;12850:36:154;12838:49;;12926:20;;13001:14;12997:27;;;-1:-1:-1;;12993:41:154;12969:66;;12959:94;;13049:1;13046;13039:12;12959:94;13079:31;;13137:19;;-1:-1:-1;;;;;13172:30:154;;13169:50;;;13215:1;13212;13205:12;13169:50;13267:6;13251:14;13247:27;13239:6;13235:40;13232:60;;;13288:1;13285;13278:12;13232:60;13315:57;13365:6;13357;13352:2;13345:5;13341:14;13315:57;:::i;:::-;13305:67;-1:-1:-1;;;13430:12:154;;;;13395:15;;;;12811:1;12804:9;12775:677;;;-1:-1:-1;13469:6:154;;12291:1190;-1:-1:-1;;;;;;;12291:1190:154:o;19250:500::-;19465:13;;19447:32;;19526:4;19514:17;;;19508:24;19434:3;19419:19;;;19541:61;;19581:20;;19508:24;19541:61;:::i;:::-;;19658:4;19650:6;19646:17;19640:24;19633:4;19622:9;19618:20;19611:54;19735:4;19727:6;19723:17;19717:24;19710:32;19703:40;19696:4;19685:9;19681:20;19674:70;19250:500;;;;:::o;19755:833::-;20002:13;;-1:-1:-1;;;;;19998:39:154;19980:58;;20094:4;20082:17;;;20076:24;20054:20;;;20047:54;20157:4;20145:17;;;20139:24;20117:20;;;20110:54;20211:4;20199:17;;20193:24;19967:3;19952:19;;;20253:1;20236:19;;20226:53;;20259:18;;:::i;:::-;20317:12;20310:4;20299:9;20295:20;20288:42;;20386:4;20378:6;20374:17;20368:24;20361:4;20350:9;20346:20;20339:54;20449:4;20441:6;20437:17;20431:24;20424:4;20413:9;20409:20;20402:54;20512:4;20504:6;20500:17;20494:24;20487:4;20476:9;20472:20;20465:54;20575:4;20567:6;20563:17;20557:24;20550:4;20539:9;20535:20;20528:54;19755:833;;;;:::o;20593:1346::-;20876:13;;20917:9;;-1:-1:-1;;;;;11178:31:154;11166:44;;20853:3;20838:19;;;20990:4;20986:2;20982:13;20976:20;20969:4;20958:9;20954:20;20947:50;21049:4;21045:2;21041:13;21035:20;21028:4;21017:9;21013:20;21006:50;21108:4;21104:2;21100:13;21094:20;21087:4;21076:9;21072:20;21065:50;21167:4;21163:2;21159:13;21153:20;21146:4;21135:9;21131:20;21124:50;21226:4;21222:2;21218:13;21212:20;21205:4;21194:9;21190:20;21183:50;21276:4;21272:2;21268:13;21262:20;21291:51;21336:4;21325:9;21321:20;21307:12;11291:13;11284:21;11272:34;;11221:91;21291:51;-1:-1:-1;21394:4:154;21386:13;;;21380:20;21358;;;21351:50;21420:6;21468:11;;;21462:18;21442;;;21435:46;21500:6;21548:11;;;21542:18;21522;;;21515:46;21580:6;21628:11;;;21622:18;21602;;;21595:46;21699:4;21687:17;;21681:24;21672:6;21657:22;;21650:56;21764:4;21752:17;;21746:24;21737:6;21722:22;;21715:56;21829:4;21817:17;;;21811:24;21802:6;21787:22;;21780:56;21867:3;21852:19;;21845:35;;;;11291:13;11284:21;21928:3;21913:19;;;11272:34;20593:1346;:::o;22994:434::-;23233:25;;;23220:3;23205:19;;23267:53;23316:2;23301:18;;23293:6;23267:53;:::i;:::-;23356:6;23351:2;23340:9;23336:18;23329:34;23413:6;23406:14;23399:22;23394:2;23383:9;23379:18;23372:50;22994:434;;;;;;;:::o;24497:521::-;24574:4;24580:6;24640:11;24627:25;24734:2;24730:7;24719:8;24703:14;24699:29;24695:43;24675:18;24671:68;24661:96;;24753:1;24750;24743:12;24661:96;24780:33;;24832:20;;;-1:-1:-1;;;;;;24864:30:154;;24861:50;;;24907:1;24904;24897:12;24861:50;24940:4;24928:17;;-1:-1:-1;24971:14:154;24967:27;;;24957:38;;24954:58;;;25008:1;25005;24998:12;24954:58;24497:521;;;;;:::o;25023:252::-;25095:2;25089:9;25137:3;25125:16;;-1:-1:-1;;;;;25156:34:154;;25192:22;;;25153:62;25150:88;;;25218:18;;:::i;:::-;25254:2;25247:22;25023:252;:::o;25280:::-;25352:2;25346:9;25394:3;25382:16;;-1:-1:-1;;;;;25413:34:154;;25449:22;;;25410:62;25407:88;;;25475:18;;:::i;25537:275::-;25608:2;25602:9;-1:-1:-1;25654:13:154;;-1:-1:-1;;25650:27:154;25638:40;;-1:-1:-1;;;;;25693:34:154;;25729:22;;;25690:62;25687:88;;;25755:18;;:::i;:::-;25791:2;25784:22;25537:275;;-1:-1:-1;25537:275:154:o;25817:128::-;25857:3;25888:1;25884:6;25881:1;25878:13;25875:39;;;25894:18;;:::i;:::-;-1:-1:-1;25930:9:154;;25817:128::o;25950:120::-;25990:1;26016;26006:35;;26021:18;;:::i;:::-;-1:-1:-1;26055:9:154;;25950:120::o;26075:422::-;26164:1;26207:5;26164:1;26221:270;26242:7;26232:8;26229:21;26221:270;;;26301:4;26297:1;26293:6;26289:17;26283:4;26280:27;26277:53;;;26310:18;;:::i;:::-;26360:7;26350:8;26346:22;26343:55;;;26380:16;;;;26343:55;26459:22;;;;26419:15;;;;26221:270;;;26225:3;26075:422;;;;;:::o;26502:147::-;26561:5;26590:53;26631:10;26621:8;26617:25;26611:4;26590:53;:::i;26654:140::-;26712:5;26741:47;26782:4;26772:8;26768:19;26762:4;26799:806;26848:5;26878:8;26868:80;;-1:-1:-1;26919:1:154;26933:5;;26868:80;26967:4;26957:76;;-1:-1:-1;27004:1:154;27018:5;;26957:76;27049:4;27067:1;27062:59;;;;27135:1;27130:130;;;;27042:218;;27062:59;27092:1;27083:10;;27106:5;;;27130:130;27167:3;27157:8;27154:17;27151:43;;;27174:18;;:::i;:::-;-1:-1:-1;;27230:1:154;27216:16;;27245:5;;27042:218;;27344:2;27334:8;27331:16;27325:3;27319:4;27316:13;27312:36;27306:2;27296:8;27293:16;27288:2;27282:4;27279:12;27275:35;27272:77;27269:159;;;-1:-1:-1;27381:19:154;;;27413:5;;27269:159;27460:34;27485:8;27479:4;27460:34;:::i;:::-;27530:6;27526:1;27522:6;27518:19;27509:7;27506:32;27503:58;;;27541:18;;:::i;:::-;27579:20;;26799:806;-1:-1:-1;;;26799:806:154:o;27610:168::-;27650:7;27716:1;27712;27708:6;27704:14;27701:1;27698:21;27693:1;27686:9;27679:17;27675:45;27672:71;;;27723:18;;:::i;:::-;-1:-1:-1;27763:9:154;;27610:168::o;27783:125::-;27823:4;27851:1;27848;27845:8;27842:34;;;27856:18;;:::i;:::-;-1:-1:-1;27893:9:154;;27783:125::o;27913:135::-;27952:3;-1:-1:-1;;27973:17:154;;27970:43;;;27993:18;;:::i;:::-;-1:-1:-1;28040:1:154;28029:13;;27913:135::o;28053:112::-;28085:1;28111;28101:35;;28116:18;;:::i;:::-;-1:-1:-1;28150:9:154;;28053:112::o;28170:187::-;28204:3;28251:5;28248:1;28237:20;28285:10;28281:15;28272:7;28269:28;28266:54;;;28300:18;;:::i;:::-;28340:1;28336:15;;28170:187;-1:-1:-1;;28170:187:154:o;28362:127::-;28423:10;28418:3;28414:20;28411:1;28404:31;28454:4;28451:1;28444:15;28478:4;28475:1;28468:15;28494:127;28555:10;28550:3;28546:20;28543:1;28536:31;28586:4;28583:1;28576:15;28610:4;28607:1;28600:15;28626:127;28687:10;28682:3;28678:20;28675:1;28668:31;28718:4;28715:1;28708:15;28742:4;28739:1;28732:15;28758:127;28819:10;28814:3;28810:20;28807:1;28800:31;28850:4;28847:1;28840:15;28874:4;28871:1;28864:15;28890:127;28951:10;28946:3;28942:20;28939:1;28932:31;28982:4;28979:1;28972:15;29006:4;29003:1;28996:15;29222:253;29342:1;29335:5;29332:12;29322:46;;29348:18;;:::i;:::-;29413:3;29409:8;29402:4;29396:11;29392:26;29463:3;29456:5;29452:15;29443:7;29440:28;29434:4;29427:42;;29222:253;;:::o;29480:874::-;29673:5;29660:19;29688:33;29713:7;29688:33;:::i;:::-;29126:11;;-1:-1:-1;;;;;;29122:54:154;-1:-1:-1;;;;;29178:31:154;;;;29119:91;29106:105;;29846:2;29835:14;;29822:28;-1:-1:-1;29808:12:154;;29801:50;29905:2;29894:14;;29881:28;29877:1;29867:12;;;29860:50;;;;29958:2;29947:14;;29934:28;;29981:14;;29971:42;;30009:1;30006;29999:12;29971:42;30022:86;30100:7;30096:1;30090:4;30086:12;30022:86;:::i;:::-;;30162:3;30155:5;30151:15;30138:29;30134:1;30128:4;30124:12;30117:51;30222:3;30215:5;30211:15;30198:29;30194:1;30188:4;30184:12;30177:51;30282:3;30275:5;30271:15;30258:29;30254:1;30248:4;30244:12;30237:51;30342:3;30335:5;30331:15;30318:29;30314:1;30308:4;30304:12;30297:51;29480:874;;:::o;30359:797::-;30532:5;30519:19;30547:33;30572:7;30547:33;:::i;:::-;29126:11;;-1:-1:-1;;;;;;29122:54:154;-1:-1:-1;;;;;29178:31:154;;;;29119:91;29106:105;;30705:2;30694:14;;30681:28;-1:-1:-1;30667:12:154;;30660:50;30764:2;30753:14;;30740:28;30736:1;30726:12;;30719:50;30823:2;30812:14;;30799:28;30795:1;30785:12;;30778:50;30865:1;30855:12;;30915:3;30904:15;;30891:29;30929:30;30891:29;30929:30;:::i;:::-;31010:3;31006:8;30993:10;30987:17;30983:32;31084:3;31073:7;31066:15;31059:23;31055:33;31046:7;31043:46;31031:10;31024:66;;;;31144:3;31137:5;31133:15;31120:29;31116:1;31110:4;31106:12;31099:51;30359:797;;:::o;31161:131::-;-1:-1:-1;;;;;31236:31:154;;31226:42;;31216:70;;31282:1;31279;31272:12;31297:118;31383:5;31376:13;31369:21;31362:5;31359:32;31349:60;;31405:1;31402;31395:12","linkReferences":{}},"methodIdentifiers":{"chainlinkValidityPeriod()":"1e8ff50d","executions()":"b21f4517","forceCloseTradeMarket(address,uint256,uint256,uint256,uint256)":"7251b3e6","fulfill(uint256,bytes[])":"dd2f3c05","getOrder(uint256)":"d09ef241","getPrice(uint256,uint8)":"c0a027f4","initialize(address,address,address)":"c0c53b8b","maxDeviationP(uint256,uint8)":"2b35de75","openFeeP(uint256,uint256,bool)":"3a100f4d","orders(uint256)":"a85c38ef","ordersAnswers(uint256,uint256)":"93d7fe2c","pairsStorage()":"35b03c17","pendingMarginUpdateOrders(uint256)":"d1f6652e","pendingSlOrders(uint256)":"37a3dba3","pyth()":"f98d06f0","setChainlinkValidityPeriod(uint256)":"166a073b","setPyth(address)":"ee22fd6f","storageT()":"16fff074","storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":"cbe91bd9","storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":"b8213bfa","unregisterPendingMarginUpdateOrder(uint256)":"c61904a1","unregisterPendingSlOrder(uint256)":"61417a43","updatePairsStorage(address)":"40e9eda2","useBackUpOracleOnly(bool)":"da74d14a","useBackupOnly()":"67288428"},"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\":\"bool\",\"name\":\"_start\",\"type\":\"bool\"}],\"name\":\"BackUpTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"BackupPriceReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PriceReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"PythUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newPeriod\",\"type\":\"uint256\"}],\"name\":\"chainlinkValidityPeriodSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"chainlinkValidityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executions\",\"outputs\":[{\"internalType\":\"contract IExecute\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"forceCloseTradeMarket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"fulfill\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"job\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"initiated\",\"type\":\"bool\"}],\"internalType\":\"struct IPriceAggregator.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"_orderType\",\"type\":\"uint8\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_executions\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"_type\",\"type\":\"uint8\"}],\"name\":\"maxDeviationP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPositionSize\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"openFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum IPriceAggregator.OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"job\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"initiated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ordersAnswers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsStorage\",\"outputs\":[{\"internalType\":\"contract IPairStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"pendingMarginUpdateOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"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\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingMarginUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"pendingSlOrders\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingSl\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pyth\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newPeriod\",\"type\":\"uint256\"}],\"name\":\"setChainlinkValidityPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pythContract\",\"type\":\"address\"}],\"name\":\"setPyth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"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\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingMarginUpdate\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"storePendingMarginUpdateOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"internalType\":\"struct IPriceAggregator.PendingSl\",\"name\":\"p\",\"type\":\"tuple\"}],\"name\":\"storePendingSlOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingMarginUpdateOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"unregisterPendingSlOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pairsStorage\",\"type\":\"address\"}],\"name\":\"updatePairsStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_start\",\"type\":\"bool\"}],\"name\":\"useBackUpOracleOnly\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useBackupOnly\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"forceCloseTradeMarket(address,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\"}},\"fulfill(uint256,bytes[])\":{\"params\":{\"orderId\":\"The ID of the order to fulfill\",\"priceUpdateData\":\"Data required for updating the price feed\"}},\"getPrice(uint256,uint8)\":{\"params\":{\"_orderType\":\"Type of the order (Market open, Market close etc.)\",\"_pairIndex\":\"Index of the trading pair\"},\"returns\":{\"_0\":\"orderId The ID of the created order\"}},\"initialize(address,address,address)\":{\"params\":{\"_executions\":\"The address of the executions contract\",\"_pairsStorage\":\"The address of the pairs storage contract\",\"_storageT\":\"The address of the storage contract\"}},\"openFeeP(uint256,uint256,bool)\":{\"params\":{\"_buy\":\"Whether the position is a buy or a sell\",\"_leveragedPositionSize\":\"Size of the leveraged position\",\"_pairIndex\":\"Index of the trading pair\"},\"returns\":{\"_0\":\"Fee percentage\"}},\"pendingMarginUpdateOrders(uint256)\":{\"params\":{\"index\":\"The index of the pending margin update order\"},\"returns\":{\"_0\":\"A struct containing the information about the pending margin update order\"}},\"pendingSlOrders(uint256)\":{\"params\":{\"index\":\"The index of the pending SL order\"},\"returns\":{\"_0\":\"A struct containing the information about the pending SL order\"}},\"setChainlinkValidityPeriod(uint256)\":{\"params\":{\"_newPeriod\":\"new validity period\"}},\"setPyth(address)\":{\"params\":{\"pythContract\":\"The address of the Pyth contract\"}},\"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))\":{\"params\":{\"orderId\":\"The ID of the order\",\"p\":\"Data structure containing information about the pending margin update order\"}},\"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))\":{\"params\":{\"orderId\":\"The ID of the order\",\"p\":\"Data structure containing information about the pending SL order\"}},\"unregisterPendingMarginUpdateOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the order to unregister\"}},\"unregisterPendingSlOrder(uint256)\":{\"params\":{\"orderId\":\"The ID of the order to unregister\"}},\"updatePairsStorage(address)\":{\"params\":{\"_pairsStorage\":\"New address for the pairs storage contract\"}},\"useBackUpOracleOnly(bool)\":{\"params\":{\"_start\":\"bool indicating state of oracle usage\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"forceCloseTradeMarket(address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"fulfill(uint256,bytes[])\":{\"notice\":\"Fulfill an order by updating price feeds and invoking corresponding callbacks\"},\"getOrder(uint256)\":{\"notice\":\"Returns order stored\"},\"getPrice(uint256,uint8)\":{\"notice\":\"Creates an order and return the order ID\"},\"initialize(address,address,address)\":{\"notice\":\"Initialize contract\"},\"maxDeviationP(uint256,uint8)\":{\"notice\":\"Helper function to decide on the CI deviation\"},\"openFeeP(uint256,uint256,bool)\":{\"notice\":\"Calculate open fee as a percentage for a trading pair\"},\"pendingMarginUpdateOrders(uint256)\":{\"notice\":\"Retrieves a pending margin update order\"},\"pendingSlOrders(uint256)\":{\"notice\":\"Retrieves pending stop-loss (SL) order\"},\"setChainlinkValidityPeriod(uint256)\":{\"notice\":\"Sets chainlink validity period\"},\"setPyth(address)\":{\"notice\":\"Set the address of the Pyth contract\"},\"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))\":{\"notice\":\"Store information about a pending margin update order\"},\"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))\":{\"notice\":\"Store information about a pending stop-loss (SL) order\"},\"unregisterPendingMarginUpdateOrder(uint256)\":{\"notice\":\"Deletes a pending margin update order\"},\"unregisterPendingSlOrder(uint256)\":{\"notice\":\"Deletes a pending stop-loss (SL) order\"},\"updatePairsStorage(address)\":{\"notice\":\"Update the address of the pairs storage contract\"},\"useBackUpOracleOnly(bool)\":{\"notice\":\"Sets bool indication only backup oracle will be used as main is dysfunctional\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PriceAggregator.sol\":\"PriceAggregator\"},\"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/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7\",\"dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4d7cb071e08e81bb8b113a928f4c2d2b3cdf950ad64c6c7003ea3d874163ca77\",\"dweb:/ipfs/QmRbQchPxRTBMHi7WzLb8XnMGzPDQcWhu7i2u5naUsCRoZ\"]},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b75be4c3643b22305995aba71fc92146dbf51fa82d2f9728c515d7749b32dca3\",\"dweb:/ipfs/QmRby4XA9jJQGhxoJ16BTUDuU7BzLFfadbfTgBiQsDgNyZ\"]},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fb7f4ffe03be7379d3833c5946e38153de26aef4a4da0323a1ec603787de9eb7\",\"dweb:/ipfs/QmW4WkkLPGjDJrLrW4mYfxtFh8e9KAcPhrnNdxPQsfkS6t\"]},\"src/PriceAggregator.sol\":{\"keccak256\":\"0x4358c74a3f68f1c28df37bc6ddaa489a0bae4303786f59c8f5e039d62012b482\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79cba5090c123e737dce06f537b1890640c0eb604d9d585a5d8f4a6bae890c1f\",\"dweb:/ipfs/QmZMW8rBpVBMFJuRMB42x7RQKjvxyeYM89bgjYH7UFDCZ5\"]},\"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/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\"]}},\"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":"bool","name":"_start","type":"bool","indexed":false}],"type":"event","name":"BackUpTriggered","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"BackupPriceReceived","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","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":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"PriceReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"PythUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_newPeriod","type":"uint256","indexed":false}],"type":"event","name":"chainlinkValidityPeriodSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"chainlinkValidityPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"executions","outputs":[{"internalType":"contract IExecute","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"forceCloseTradeMarket"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"fulfill"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOrder","outputs":[{"internalType":"struct IPriceAggregator.Order","name":"","type":"tuple","components":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"orderType","type":"uint8"},{"internalType":"bytes32","name":"job","type":"bytes32"},{"internalType":"bool","name":"initiated","type":"bool"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"_orderType","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairsStorage","type":"address"},{"internalType":"address","name":"_executions","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"_type","type":"uint8"}],"stateMutability":"view","type":"function","name":"maxDeviationP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPositionSize","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"view","type":"function","name":"openFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"enum IPriceAggregator.OrderType","name":"orderType","type":"uint8"},{"internalType":"bytes32","name":"job","type":"bytes32"},{"internalType":"bool","name":"initiated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"ordersAnswers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsStorage","outputs":[{"internalType":"contract IPairStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingMarginUpdateOrders","outputs":[{"internalType":"struct IPriceAggregator.PendingMarginUpdate","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"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":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"marginFees","type":"uint256"},{"internalType":"uint256","name":"oldLeverage","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pendingSlOrders","outputs":[{"internalType":"struct IPriceAggregator.PendingSl","name":"","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"newSl","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pyth","outputs":[{"internalType":"contract IPyth","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_newPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setChainlinkValidityPeriod"},{"inputs":[{"internalType":"address","name":"pythContract","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPyth"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"struct IPriceAggregator.PendingMarginUpdate","name":"p","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"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":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"marginFees","type":"uint256"},{"internalType":"uint256","name":"oldLeverage","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storePendingMarginUpdateOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"struct IPriceAggregator.PendingSl","name":"p","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"newSl","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"storePendingSlOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingMarginUpdateOrder"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unregisterPendingSlOrder"},{"inputs":[{"internalType":"address","name":"_pairsStorage","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updatePairsStorage"},{"inputs":[{"internalType":"bool","name":"_start","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"useBackUpOracleOnly"},{"inputs":[],"stateMutability":"view","type":"function","name":"useBackupOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"forceCloseTradeMarket(address,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"}},"fulfill(uint256,bytes[])":{"params":{"orderId":"The ID of the order to fulfill","priceUpdateData":"Data required for updating the price feed"}},"getPrice(uint256,uint8)":{"params":{"_orderType":"Type of the order (Market open, Market close etc.)","_pairIndex":"Index of the trading pair"},"returns":{"_0":"orderId The ID of the created order"}},"initialize(address,address,address)":{"params":{"_executions":"The address of the executions contract","_pairsStorage":"The address of the pairs storage contract","_storageT":"The address of the storage contract"}},"openFeeP(uint256,uint256,bool)":{"params":{"_buy":"Whether the position is a buy or a sell","_leveragedPositionSize":"Size of the leveraged position","_pairIndex":"Index of the trading pair"},"returns":{"_0":"Fee percentage"}},"pendingMarginUpdateOrders(uint256)":{"params":{"index":"The index of the pending margin update order"},"returns":{"_0":"A struct containing the information about the pending margin update order"}},"pendingSlOrders(uint256)":{"params":{"index":"The index of the pending SL order"},"returns":{"_0":"A struct containing the information about the pending SL order"}},"setChainlinkValidityPeriod(uint256)":{"params":{"_newPeriod":"new validity period"}},"setPyth(address)":{"params":{"pythContract":"The address of the Pyth contract"}},"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":{"params":{"orderId":"The ID of the order","p":"Data structure containing information about the pending margin update order"}},"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":{"params":{"orderId":"The ID of the order","p":"Data structure containing information about the pending SL order"}},"unregisterPendingMarginUpdateOrder(uint256)":{"params":{"orderId":"The ID of the order to unregister"}},"unregisterPendingSlOrder(uint256)":{"params":{"orderId":"The ID of the order to unregister"}},"updatePairsStorage(address)":{"params":{"_pairsStorage":"New address for the pairs storage contract"}},"useBackUpOracleOnly(bool)":{"params":{"_start":"bool indicating state of oracle usage"}}},"version":1},"userdoc":{"kind":"user","methods":{"forceCloseTradeMarket(address,uint256,uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"fulfill(uint256,bytes[])":{"notice":"Fulfill an order by updating price feeds and invoking corresponding callbacks"},"getOrder(uint256)":{"notice":"Returns order stored"},"getPrice(uint256,uint8)":{"notice":"Creates an order and return the order ID"},"initialize(address,address,address)":{"notice":"Initialize contract"},"maxDeviationP(uint256,uint8)":{"notice":"Helper function to decide on the CI deviation"},"openFeeP(uint256,uint256,bool)":{"notice":"Calculate open fee as a percentage for a trading pair"},"pendingMarginUpdateOrders(uint256)":{"notice":"Retrieves a pending margin update order"},"pendingSlOrders(uint256)":{"notice":"Retrieves pending stop-loss (SL) order"},"setChainlinkValidityPeriod(uint256)":{"notice":"Sets chainlink validity period"},"setPyth(address)":{"notice":"Set the address of the Pyth contract"},"storePendingMarginUpdateOrder(uint256,(address,uint256,uint256,uint8,uint256,uint256,uint256,uint256))":{"notice":"Store information about a pending margin update order"},"storePendingSlOrder(uint256,(address,uint256,uint256,uint256,bool,uint256))":{"notice":"Store information about a pending stop-loss (SL) order"},"unregisterPendingMarginUpdateOrder(uint256)":{"notice":"Deletes a pending margin update order"},"unregisterPendingSlOrder(uint256)":{"notice":"Deletes a pending stop-loss (SL) order"},"updatePairsStorage(address)":{"notice":"Update the address of the pairs storage contract"},"useBackUpOracleOnly(bool)":{"notice":"Sets bool indication only backup oracle will be used as main is dysfunctional"}},"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/PriceAggregator.sol":"PriceAggregator"},"evmVersion":"london","libraries":{}},"sources":{"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol":{"keccak256":"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7","urls":["bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465","dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a"],"license":"MIT"},"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol":{"keccak256":"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2","urls":["bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b","dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG"],"license":"MIT"},"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"keccak256":"0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd","urls":["bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7","dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/pyth-sdk-solidity/IPyth.sol":{"keccak256":"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2","urls":["bzz-raw://4d7cb071e08e81bb8b113a928f4c2d2b3cdf950ad64c6c7003ea3d874163ca77","dweb:/ipfs/QmRbQchPxRTBMHi7WzLb8XnMGzPDQcWhu7i2u5naUsCRoZ"],"license":"Apache-2.0"},"lib/pyth-sdk-solidity/IPythEvents.sol":{"keccak256":"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320","urls":["bzz-raw://b75be4c3643b22305995aba71fc92146dbf51fa82d2f9728c515d7749b32dca3","dweb:/ipfs/QmRby4XA9jJQGhxoJ16BTUDuU7BzLFfadbfTgBiQsDgNyZ"],"license":"Apache-2.0"},"lib/pyth-sdk-solidity/PythStructs.sol":{"keccak256":"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65","urls":["bzz-raw://fb7f4ffe03be7379d3833c5946e38153de26aef4a4da0323a1ec603787de9eb7","dweb:/ipfs/QmW4WkkLPGjDJrLrW4mYfxtFh8e9KAcPhrnNdxPQsfkS6t"],"license":"Apache-2.0"},"src/PriceAggregator.sol":{"keccak256":"0x4358c74a3f68f1c28df37bc6ddaa489a0bae4303786f59c8f5e039d62012b482","urls":["bzz-raw://79cba5090c123e737dce06f537b1890640c0eb604d9d585a5d8f4a6bae890c1f","dweb:/ipfs/QmZMW8rBpVBMFJuRMB42x7RQKjvxyeYM89bgjYH7UFDCZ5"],"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/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"}},"version":1},"id":108}