avantis-trader-sdk 0.8.13__py3-none-any.whl → 0.8.14__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,1347 @@
1
- {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_MAX_SLIPPAGE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"__msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarket","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"delegatedAction","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"call_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"delegations","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executeLimitOrder","inputs":[{"name":"_orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"},{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeMarketOrders","inputs":[{"name":"orderId","type":"uint256[]","internalType":"uint256[]"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"limitOrdersTimelock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrade","inputs":[{"name":"t","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"_type","type":"uint8","internalType":"enum IExecute.OpenLimitOrderType"},{"name":"_slippageP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeDelegate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegate","inputs":[{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrdersTimelock","inputs":[{"name":"_blocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketExecFeeReciever","inputs":[{"name":"_reciever","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMargin","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum ITradingStorage.updateType"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_tp","type":"uint256","internalType":"uint256"},{"name":"_sl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_isOperator","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTpAndSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"_newTP","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_type","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.updateType"},{"name":"newTrade","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"marginFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtectionTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitCanceled","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitPlaced","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"openPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executionFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum IExecute.OpenLimitOrderType"},{"name":"slippageP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"isOperator","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlUpdateInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TpUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ef180620000f36000396000f3fe60806040526004361061019c5760003560e01c80636d70f7ae116100ec578063c48a02a21161008a578063ca5eb5e111610064578063ca5eb5e11461047f578063cd90b8a4146104c9578063d1a91ff2146104dc578063d4a1caa7146104f157600080fd5b8063c48a02a214610426578063c5ed6a081461043f578063c641558e1461045f57600080fd5b80639e2033f5116100c65780639e2033f51461039d578063b9b6573a146103bd578063bffe3486146103dd578063c0b4d24d1461041357600080fd5b80636d70f7ae146103385780638456cb59146103685780639a10cc321461037d57600080fd5b806336fb8b1511610159578063485cc95511610133578063485cc955146102b4578063570ca735146102d45780635c975abb146102f45780636d44a3b21461031857600080fd5b806336fb8b151461025d5780633f4ba83a1461028c57806346f6c8f5146102a157600080fd5b80630890d22a146101a15780631346b0ff146101ca57806315b760b11461020257806316fff0741461021757806319cde9a1146102375780632c3cbce41461024a575b600080fd5b3480156101ad57600080fd5b506101b760695481565b6040519081526020015b60405180910390f35b3480156101d657600080fd5b506068546101ea906001600160a01b031681565b6040516001600160a01b0390911681526020016101c1565b6102156102103660046156da565b610511565b005b34801561022357600080fd5b506067546101ea906001600160a01b031681565b6101b761024536600461551a565b61053f565b6101b76102583660046156ae565b61176c565b34801561026957600080fd5b5061021533600090815260656020526040902080546001600160a01b0319169055565b34801561029857600080fd5b506102156121f9565b6102156102af3660046152d1565b6122b9565b3480156102c057600080fd5b506102156102cf36600461513f565b612d34565b3480156102e057600080fd5b50606a546101ea906001600160a01b031681565b34801561030057600080fd5b5060335460ff165b60405190151581526020016101c1565b34801561032457600080fd5b50610215610333366004615178565b612e7c565b34801561034457600080fd5b506103086103533660046150fe565b606b6020526000908152604090205460ff1681565b34801561037457600080fd5b50610215612f95565b61039061038b3660046151a6565b613053565b6040516101c191906158f2565b3480156103a957600080fd5b506102156103b83660046150fe565b61318e565b3480156103c957600080fd5b506102156103d8366004615633565b6132ab565b3480156103e957600080fd5b506101ea6103f83660046150fe565b6065602052600090815260409020546001600160a01b031681565b61021561042136600461522b565b6134e4565b34801561043257600080fd5b506101b764ba43b7400081565b34801561044b57600080fd5b5061021561045a366004615601565b613638565b34801561046b57600080fd5b5061021561047a366004615726565b6136c1565b34801561048b57600080fd5b5061021561049a3660046150fe565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101b76104d7366004615655565b61396c565b3480156104e857600080fd5b506101ea6142e3565b3480156104fd57600080fd5b5061021561050c366004615601565b61430b565b61051961445f565b6105248686856144a5565b801561053757610537868686858561476b565b505050505050565b600061054961445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190615122565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190615122565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061561a565b6067546001600160a01b031663f7b3c6fd6106dc6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610753919061561a565b1061079a5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061561a565b6067546001600160a01b03166397e7995a6108396142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061561a565b6067546001600160a01b0316639c8912f16108d36142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610954919061561a565b6067546001600160a01b0316631c8636b461096d6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061561a565b6109f89190615d65565b610a029190615d65565b10610a455760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610791565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061561a565b610ad2608088013560e0890135614e7a565b1015610b105760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610791565b6101008601351580610b4f5750610b2d60e0870160c08801615297565b610b42578560a0013586610100013510610b4f565b8560a00135866101000135115b610b865760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b6101208601351580610bc55750610ba360e0870160c08801615297565b610bb8578560a0013586610120013511610bc5565b8560a00135866101200135105b610bfc5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b740008410610c435760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6000856003811115610c5757610c57615e36565b14158015610c7757506003856003811115610c7457610c74615e36565b14155b156111305760008660e00135118015610d155750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d919061561a565b8660e0013510155b8015610da65750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061561a565b8660e0013511155b610dc25760405162461bcd60e51b815260040161079190615927565b6067546001600160a01b0316638b83351a610ddb6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610e656142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061561a565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610f116142e3565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610f4960e08c0160c08d01615297565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610fa79190615a0f565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190615122565b6001600160a01b031663ec5706106110606142e3565b8960200135848a6040518563ffffffff1660e01b815260040161108694939291906158bc565b600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506110c06142e3565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361110060e08c0160c08d01615297565b8b60a0013560008c8c8f60800135604051611122989796959493929190615c7f565b60405180910390a2506116c6565b60008660e001351180156111e457506001600160a01b03811663995b76566020880135600388600381111561116757611167615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061561a565b8660e0013510155b801561129057506001600160a01b038116639b2f6cab6020880135600388600381111561121357611213615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061561a565b8660e0013511155b6112ac5760405162461bcd60e51b815260040161079190615927565b60038560038111156112c0576112c0615e36565b141561138557604051631fca5ed960e01b8152602087013560048201526001600160a01b03821690631fca5ed99060240160206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906152b4565b6113855760405162461bcd60e51b815260206004820152601560248201527414139317d3d491115497d393d517d0531313d5d151605a1b6044820152606401610791565b6067546001600160a01b0316638b83351a61139e6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b5060009250611414915050565b85600381111561142657611426615e36565b146114b55760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061145e9060208a013590600690600401615be9565b602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b0919061561a565b61153a565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906114e89060208a013590600090600401615be9565b602060405180830381600087803b15801561150257600080fd5b505af1158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a919061561a565b606754604080516101e081019091529194506001600160a01b03169063d8137fe89080608081018061156a6142e3565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c00160208101906115b49190615297565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b815260040161161b93929190615ac2565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050506116556142e3565b6001600160a01b03167fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee07660208801356001864261169860e08d0160c08e01615297565b6040805195865293151560208601529284019190915260608301521515608082015260a00160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50509050806117625760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b5050509392505050565b600061177661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190615122565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d80600081146118b5576040519150601f19603f3d011682016040523d82523d6000602084013e6118ba565b606091505b50509050806119045760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6119206142e3565b89896040518463ffffffff1660e01b81526004016119409392919061589b565b6101606040518083038186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190615564565b6067549091506000906001600160a01b0316638c8ff1d56119b06142e3565b8a8a6040518463ffffffff1660e01b81526004016119d09392919061589b565b60a06040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906154a2565b6060015190508160600151861115611a675760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610791565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061561a565b6067546001600160a01b031663f7b3c6fd611b066142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d919061561a565b10611bbf5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610791565b8015611c045760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111611c285760405162461bcd60e51b815260040161079190615905565b836001600160a01b031663737113b589611c4f8560e001518a614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b158015611c8b57600080fd5b505afa158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc3919061561a565b610140830151611cd39042615dbe565b1015611d0f5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611d5457600080fd5b505afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc457600080fd5b505afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190615122565b6001600160a01b031663c5f5951a611e126142e3565b8b8b6040518463ffffffff1660e01b8152600401611e329392919061589b565b60206040518083038186803b158015611e4a57600080fd5b505afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8291906152b4565b905080611f9457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed757600080fd5b505afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190615122565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611f3d929190615be9565b602060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061561a565b61209a565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190615122565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401612048929190615be9565b602060405180830381600087803b15801561206257600080fd5b505af1158015612076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209a919061561a565b606754604080516101e081019091529197506001600160a01b03169063d8137fe8908060808101806120ca6142e3565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b815260040161215493929190615ac2565b600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b5050505061218e6142e3565b60c0840151604080518c8152600060208201528082018a90524260608201529115156080830152516001600160a01b0392909216917fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee0769181900360a00190a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615122565b6001600160a01b0316336001600160a01b0316146122af5760405162461bcd60e51b8152600401610791906159ed565b6122b7614e9f565b565b6122c161445f565b336000908152606b602052604090205460ff166122f05760405162461bcd60e51b81526004016107919061597b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a557600080fd5b505afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd9190615122565b905060038760038111156123f3576123f3615e36565b14156124b957606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a9061242d9089908990899060040161589b565b60206040518083038186803b15801561244557600080fd5b505afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906152b4565b6124b45760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610791565b612819565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906124ee908a908a908a9060040161589b565b6101606040518083038186803b15801561250757600080fd5b505afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190615564565b905060008160e00151116125655760405162461bcd60e51b815260040161079190615905565b600188600381111561257957612579615e36565b14158061258b57506000816101200151115b6125bf5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610791565b60028860038111156125d3576125d3615e36565b141561270e576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561266b57600080fd5b505afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a3919061561a565b9050816101200151600014806126d357508160c001516126ca5781610120015181106126d3565b81610120015181115b6127085760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610791565b50612817565b600088600381111561272257612722615e36565b141561281757816001600160a01b031663737113b582602001516127578460e001518560600151614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b15801561279357600080fd5b505afa1580156127a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cb919061561a565b6101408201516127db9042615dbe565b10156128175760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561285e57600080fd5b505afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190615122565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d357600080fd5b505afa1580156128e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290b9190615122565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b600381111561294757612947615e36565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a449190615122565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b8152600401612a739392919061589b565b60206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac391906152b4565b905060006001600160a01b03851663c0a027f48b60038f6003811115612aeb57612aeb615e36565b14612b035784612afc576003612b06565b6008612b06565b60025b6040518363ffffffff1660e01b8152600401612b23929190615be9565b602060405180830381600087803b158015612b3d57600080fd5b505af1158015612b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b75919061561a565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612bbd57612bbd615e36565b815250836040518363ffffffff1660e01b8152600401612bde929190615aa7565b600060405180830381600087803b158015612bf857600080fd5b505af1158015612c0c573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612c286142e3565b6040518363ffffffff1660e01b8152600401612c45929190615b1c565b600060405180830381600087803b158015612c5f57600080fd5b505af1158015612c73573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612cf49085908d908d90600401615b42565b6000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612d545750600054600160ff909116105b80612d6e5750303b158015612d6e575060005460ff166001145b612dd15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610791565b6000805460ff191660011790558015612df4576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612e31614ef1565b8015612e77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190615122565b6001600160a01b0316336001600160a01b031614612f325760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe357600080fd5b505afa158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b9190615122565b6001600160a01b0316336001600160a01b03161461304b5760405162461bcd60e51b8152600401610791906159ed565b6122b7614f20565b6001600160a01b038381166000908152606560205260409020546060911633146130b75760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b6044820152606401610791565b606680546001600160a01b0319166001600160a01b038616179055604051600090819030906130e9908790879061588b565b600060405180830381855af49150503d8060008114613124576040519150601f19603f3d011682016040523d82523d6000602084013e613129565b606091505b5091509150816131755760448151101561314257600080fd5b6004810190508080602001905181019061315c919061534d565b60405162461bcd60e51b815260040161079191906158f2565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132149190615122565b6001600160a01b0316336001600160a01b0316146132445760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0381166132895760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610791565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b6132b361445f565b6067546000906001600160a01b031663b8878a2c6132cf6142e3565b85856040518463ffffffff1660e01b81526004016132ef9392919061589b565b6101806040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334091906153fa565b9050606954816101400151436133569190615dbe565b10156133745760405162461bcd60e51b815260040161079190615953565b6067546001600160a01b0316638b83351a8161338e6142e3565b84610160015185606001516133a39190615d65565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506134256142e3565b85856040518463ffffffff1660e01b81526004016134459392919061589b565b600060405180830381600087803b15801561345f57600080fd5b505af1158015613473573d6000803e3d6000fd5b5050505061347f6142e3565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace09484844285606001516040516134d7949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166135135760405162461bcd60e51b81526004016107919061597b565b60005b8381101561363157606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a49190615122565b6001600160a01b031663dd2f3c05348787858181106135c5576135c5615e4c565b9050602002013586866040518563ffffffff1660e01b81526004016135ec93929190615b42565b6000604051808303818588803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b5050505050808061362990615e05565b915050613516565b5050505050565b336000908152606b602052604090205460ff166136675760405162461bcd60e51b81526004016107919061597b565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156136ad57600080fd5b505af1158015613631573d6000803e3d6000fd5b6136c961445f565b6067546000906001600160a01b031663b8878a2c6136e56142e3565b89896040518463ffffffff1660e01b81526004016137059392919061589b565b6101806040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375691906153fa565b90506069548161014001514361376c9190615dbe565b101561378a5760405162461bcd60e51b815260040161079190615953565b8215806137a7575080608001516137a3578285116137a7565b8285105b6137de5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b8115806137fb575080608001516137f7578185106137fb565b8185115b6138325760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b7400084106138795760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906138c7908490600401615a0f565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b505050506139016142e3565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b600061397661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156139bb57600080fd5b505afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f39190615122565b6067549091506000906001600160a01b031663a3a80ffe613a126142e3565b8b8b6040518463ffffffff1660e01b8152600401613a329392919061589b565b6101606040518083038186803b158015613a4b57600080fd5b505afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190615564565b6067549091506000906001600160a01b0316638c8ff1d5613aa26142e3565b8c8c6040518463ffffffff1660e01b8152600401613ac29392919061589b565b60a06040518083038186803b158015613ada57600080fd5b505afa158015613aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1291906154a2565b9050806060015115613b5d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111613b815760405162461bcd60e51b815260040161079190615905565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613c0657600080fd5b505afa158015613c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3e919061561a565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613c6f908e906004908101615be9565b602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc1919061561a565b9450836001600160a01b031663cbe91bd986604051806101000160405280613ce76142e3565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613d1357613d13615e36565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613d53929190615c0d565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613d9a826000015184606001518b8b85614f5d565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613de957600080fd5b505afa158015613dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e219190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e919190615122565b6001600160a01b031663c5f5951a613ea76142e3565b8e8e6040518463ffffffff1660e01b8152600401613ec79392919061589b565b60206040518083038186803b158015613edf57600080fd5b505afa158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1791906152b4565b9050808015613f37575060018a6001811115613f3557613f35615e36565b145b15613f725760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b6044820152606401610791565b60008460e001511180156140825750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613fba57600080fd5b505afa158015613fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff29190615122565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b15801561404257600080fd5b505afa158015614056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407a919061561a565b8460e0015110155b801561418a5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156140c257600080fd5b505afa1580156140d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fa9190615122565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b15801561414a57600080fd5b505afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614182919061561a565b8460e0015111155b6141a65760405162461bcd60e51b815260040161079190615927565b6141ae6142e3565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516141f69796959493929190615ccd565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061422e908790600401615b0d565b600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c0591503490614292908a908d908d90600401615b42565b6000604051808303818588803b1580156142ab57600080fd5b505af11580156142bf573d6000803e3d6000fd5b50505050506142d48c8c8661010001516144a5565b50505050509695505050505050565b6066546000906001600160a01b03166142fb57503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561435957600080fd5b505afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615122565b6001600160a01b0316336001600160a01b0316146143c15760405162461bcd60e51b8152600401610791906159ed565b600081116143fb5760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610791565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156122b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6144c16142e3565b86866040518463ffffffff1660e01b81526004016144e19392919061589b565b6101606040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615564565b60e001516067549091506000906001600160a01b0316638c8ff1d56145556142e3565b87876040518463ffffffff1660e01b81526004016145759392919061589b565b60a06040518083038186803b15801561458d57600080fd5b505afa1580156145a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c591906154a2565b602001519050600082116145eb5760405162461bcd60e51b815260040161079190615905565b6069546145f88243615dbe565b10156146165760405162461bcd60e51b815260040161079190615953565b6001600160ff1b03831061465b5760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610791565b6067546000906001600160a01b0316637fdb96f36146776142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018990526044810188905260648101879052608401602060405180830381600087803b1580156146cd57600080fd5b505af11580156146e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614705919061561a565b905061470f6142e3565b60408051888152602081018890529081018390524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a2505050505050565b6067546000906001600160a01b031663a3a80ffe6147876142e3565b88886040518463ffffffff1660e01b81526004016147a79392919061589b565b6101606040518083038186803b1580156147c057600080fd5b505afa1580156147d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f89190615564565b6067549091506000906001600160a01b0316638c8ff1d56148176142e3565b89896040518463ffffffff1660e01b81526004016148379392919061589b565b60a06040518083038186803b15801561484f57600080fd5b505afa158015614863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488791906154a2565b60400151905060008260e00151116148b15760405162461bcd60e51b815260040161079190615905565b6001600160ff1b0385106148f65760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610791565b60006149238360e00151606460508660a001516149139190615d9f565b61491d9190615d7d565b90615009565b905085158061496257508260c0015161494e57808360a001516149469190615d65565b861115614962565b808360a0015161495e9190615dbe565b8610155b61499b5760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610791565b6069546149a88343615dbe565b10156149c65760405162461bcd60e51b815260040161079190615953565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015614a0b57600080fd5b505afa158015614a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a439190615122565b9050861580614b3d5750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8657600080fd5b505afa158015614a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abe9190615122565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b8152600401614aeb91815260200190565b60206040518083038186803b158015614b0357600080fd5b505afa158015614b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3b91906152b4565b155b15614c2a576067546001600160a01b031663a3544181614b5b6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b158015614bb157600080fd5b505af1158015614bc5573d6000803e3d6000fd5b50505050614bd16142e3565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614e6f565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614c5c908d90600590600401615be9565b602060405180830381600087803b158015614c7657600080fd5b505af1158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae919061561a565b9050816001600160a01b031663b8213bfa826040518060c00160405280614cd36142e3565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614d74929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614d8e57600080fd5b505af1158015614da2573d6000803e3d6000fd5b50505050614dae6142e3565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614e3b9085908c908c90600401615b42565b6000604051808303818588803b158015614e5457600080fd5b505af1158015614e68573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614e8c8385615d9f565b614e969190615d7d565b90505b92915050565b614ea761501b565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614f185760405162461bcd60e51b8152600401610791906159a2565b6122b7615064565b614f2861445f565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614ed43390565b60008080856001811115614f7357614f73615e36565b1415614fb15782614f848588615d65565b614f8e9190615dbe565b905080614fa06402540be40089615d9f565b614faa9190615d7d565b9150614fff565b6001856001811115614fc557614fc5615e36565b1415614fff5782614fd68588615dbe565b614fe09190615dbe565b905080614ff26402540be40089615d9f565b614ffc9190615d7d565b91505b9550959350505050565b600081614e8c6402540be40085615d9f565b60335460ff166122b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610791565b600054610100900460ff1661508b5760405162461bcd60e51b8152600401610791906159a2565b6033805460ff19169055565b80516150a281615e8b565b919050565b60008083601f8401126150b957600080fd5b50813567ffffffffffffffff8111156150d157600080fd5b6020830191508360208260051b85010111156150ec57600080fd5b9250929050565b80516150a281615ea0565b60006020828403121561511057600080fd5b813561511b81615e8b565b9392505050565b60006020828403121561513457600080fd5b815161511b81615e8b565b6000806040838503121561515257600080fd5b823561515d81615e8b565b9150602083013561516d81615e8b565b809150509250929050565b6000806040838503121561518b57600080fd5b823561519681615e8b565b9150602083013561516d81615ea0565b6000806000604084860312156151bb57600080fd5b83356151c681615e8b565b9250602084013567ffffffffffffffff808211156151e357600080fd5b818601915086601f8301126151f757600080fd5b81358181111561520657600080fd5b87602082850101111561521857600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561524157600080fd5b843567ffffffffffffffff8082111561525957600080fd5b615265888389016150a7565b9096509450602087013591508082111561527e57600080fd5b5061528b878288016150a7565b95989497509550505050565b6000602082840312156152a957600080fd5b813561511b81615ea0565b6000602082840312156152c657600080fd5b815161511b81615ea0565b60008060008060008060a087890312156152ea57600080fd5b86356152f581615eae565b9550602087013561530581615e8b565b94506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b61533b89828a016150a7565b979a9699509497509295939492505050565b60006020828403121561535f57600080fd5b815167ffffffffffffffff8082111561537757600080fd5b818401915084601f83011261538b57600080fd5b81518181111561539d5761539d615e62565b604051601f8201601f19908116603f011681019083821181831017156153c5576153c5615e62565b816040528281528760208487010111156153de57600080fd5b6153ef836020830160208801615dd5565b979650505050505050565b6000610180828403121561540d57600080fd5b615415615d17565b61541e83615097565b815260208301516020820152604083015160408201526060830151606082015261544a608084016150f3565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156154b457600080fd5b60405160a0810181811067ffffffffffffffff821117156154d7576154d7615e62565b8060405250825181526020830151602082015260408301516040820152606083015161550281615ea0565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561553157600080fd5b6101608082121561554157600080fd5b859450840135905061555281615eae565b92959294505050610180919091013590565b6000610160828403121561557757600080fd5b61557f615d41565b61558883615097565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526155c860c084016150f3565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561561357600080fd5b5035919050565b60006020828403121561562c57600080fd5b5051919050565b6000806040838503121561564657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561566e57600080fd5b863595506020870135945060408701356002811061568b57600080fd5b935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b6000806000606084860312156156c357600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156156f357600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b60008060008060008060c0878903121561573f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526157aa816020860160208601615dd5565b601f01601f19169290920160200192915050565b600281106157ce576157ce615e36565b9052565b80516001600160a01b031682526020808201519083015260408082015190830152606081015161580181615e78565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161585e60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016158e383615e78565b82606083015295945050505050565b602081526000614e966020830184615792565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615a52608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a08101615ab582856157d2565b8260808301529392505050565b600061020082019050615ad682865161580c565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614e99828461580c565b60a08101615b2a82856157d2565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615bdb57868503605f190183528135368a9003601e19018112615b9257600080fd5b8901803567ffffffffffffffff811115615bab57600080fd5b8036038b1315615bba57600080fd5b615bc78782888501615769565b965050509183019190830190600101615b6c565b509298975050505050505050565b8281526040810160098310615c0057615c00615e36565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615c4e60808401826157be565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615cae85615e78565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615ce960408301886157be565b615cf6606083018761580c565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60405290565b604051610160810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60008219821115615d7857615d78615e20565b500190565b600082615d9a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615db957615db9615e20565b500290565b600082821015615dd057615dd0615e20565b500390565b60005b83811015615df0578181015183820152602001615dd8565b83811115615dff576000848401525b50505050565b6000600019821415615e1957615e19615e20565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615e8857615e88615e36565b50565b6001600160a01b0381168114615e8857600080fd5b8015158114615e8857600080fd5b60048110615e8857600080fdfea2646970667358221220d6a87a5581708c02ee570024d3069ebe48e5f1e856800b39a156db0836401a9464736f6c63430008070033","sourceMap":"376:23237:73:-:0;;;2914:53;;;;;;;;;-1:-1:-1;2938:22:73;:20;:22::i;:::-;376:23237;;5939:280:18;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:18;;216:2:93;5998:66:18;;;198:21:93;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:93;;;338:37;5998:66:18;;;;;;392:19:93;5998:66:18;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:18;-1:-1:-1;6125:30:18;;;;;;6174:28;;;564:36:93;;;6174:28:18;;;;;;552:2:93;6174:28:18;;;6074:139;5939:280::o;422:184:93:-;376:23237:73;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061019c5760003560e01c80636d70f7ae116100ec578063c48a02a21161008a578063ca5eb5e111610064578063ca5eb5e11461047f578063cd90b8a4146104c9578063d1a91ff2146104dc578063d4a1caa7146104f157600080fd5b8063c48a02a214610426578063c5ed6a081461043f578063c641558e1461045f57600080fd5b80639e2033f5116100c65780639e2033f51461039d578063b9b6573a146103bd578063bffe3486146103dd578063c0b4d24d1461041357600080fd5b80636d70f7ae146103385780638456cb59146103685780639a10cc321461037d57600080fd5b806336fb8b1511610159578063485cc95511610133578063485cc955146102b4578063570ca735146102d45780635c975abb146102f45780636d44a3b21461031857600080fd5b806336fb8b151461025d5780633f4ba83a1461028c57806346f6c8f5146102a157600080fd5b80630890d22a146101a15780631346b0ff146101ca57806315b760b11461020257806316fff0741461021757806319cde9a1146102375780632c3cbce41461024a575b600080fd5b3480156101ad57600080fd5b506101b760695481565b6040519081526020015b60405180910390f35b3480156101d657600080fd5b506068546101ea906001600160a01b031681565b6040516001600160a01b0390911681526020016101c1565b6102156102103660046156da565b610511565b005b34801561022357600080fd5b506067546101ea906001600160a01b031681565b6101b761024536600461551a565b61053f565b6101b76102583660046156ae565b61176c565b34801561026957600080fd5b5061021533600090815260656020526040902080546001600160a01b0319169055565b34801561029857600080fd5b506102156121f9565b6102156102af3660046152d1565b6122b9565b3480156102c057600080fd5b506102156102cf36600461513f565b612d34565b3480156102e057600080fd5b50606a546101ea906001600160a01b031681565b34801561030057600080fd5b5060335460ff165b60405190151581526020016101c1565b34801561032457600080fd5b50610215610333366004615178565b612e7c565b34801561034457600080fd5b506103086103533660046150fe565b606b6020526000908152604090205460ff1681565b34801561037457600080fd5b50610215612f95565b61039061038b3660046151a6565b613053565b6040516101c191906158f2565b3480156103a957600080fd5b506102156103b83660046150fe565b61318e565b3480156103c957600080fd5b506102156103d8366004615633565b6132ab565b3480156103e957600080fd5b506101ea6103f83660046150fe565b6065602052600090815260409020546001600160a01b031681565b61021561042136600461522b565b6134e4565b34801561043257600080fd5b506101b764ba43b7400081565b34801561044b57600080fd5b5061021561045a366004615601565b613638565b34801561046b57600080fd5b5061021561047a366004615726565b6136c1565b34801561048b57600080fd5b5061021561049a3660046150fe565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101b76104d7366004615655565b61396c565b3480156104e857600080fd5b506101ea6142e3565b3480156104fd57600080fd5b5061021561050c366004615601565b61430b565b61051961445f565b6105248686856144a5565b801561053757610537868686858561476b565b505050505050565b600061054961445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190615122565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190615122565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061561a565b6067546001600160a01b031663f7b3c6fd6106dc6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610753919061561a565b1061079a5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061561a565b6067546001600160a01b03166397e7995a6108396142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061561a565b6067546001600160a01b0316639c8912f16108d36142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610954919061561a565b6067546001600160a01b0316631c8636b461096d6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061561a565b6109f89190615d65565b610a029190615d65565b10610a455760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610791565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061561a565b610ad2608088013560e0890135614e7a565b1015610b105760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610791565b6101008601351580610b4f5750610b2d60e0870160c08801615297565b610b42578560a0013586610100013510610b4f565b8560a00135866101000135115b610b865760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b6101208601351580610bc55750610ba360e0870160c08801615297565b610bb8578560a0013586610120013511610bc5565b8560a00135866101200135105b610bfc5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b740008410610c435760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6000856003811115610c5757610c57615e36565b14158015610c7757506003856003811115610c7457610c74615e36565b14155b156111305760008660e00135118015610d155750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d919061561a565b8660e0013510155b8015610da65750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061561a565b8660e0013511155b610dc25760405162461bcd60e51b815260040161079190615927565b6067546001600160a01b0316638b83351a610ddb6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610e656142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061561a565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610f116142e3565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610f4960e08c0160c08d01615297565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610fa79190615a0f565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190615122565b6001600160a01b031663ec5706106110606142e3565b8960200135848a6040518563ffffffff1660e01b815260040161108694939291906158bc565b600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506110c06142e3565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361110060e08c0160c08d01615297565b8b60a0013560008c8c8f60800135604051611122989796959493929190615c7f565b60405180910390a2506116c6565b60008660e001351180156111e457506001600160a01b03811663995b76566020880135600388600381111561116757611167615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061561a565b8660e0013510155b801561129057506001600160a01b038116639b2f6cab6020880135600388600381111561121357611213615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061561a565b8660e0013511155b6112ac5760405162461bcd60e51b815260040161079190615927565b60038560038111156112c0576112c0615e36565b141561138557604051631fca5ed960e01b8152602087013560048201526001600160a01b03821690631fca5ed99060240160206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906152b4565b6113855760405162461bcd60e51b815260206004820152601560248201527414139317d3d491115497d393d517d0531313d5d151605a1b6044820152606401610791565b6067546001600160a01b0316638b83351a61139e6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b5060009250611414915050565b85600381111561142657611426615e36565b146114b55760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061145e9060208a013590600690600401615be9565b602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b0919061561a565b61153a565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906114e89060208a013590600090600401615be9565b602060405180830381600087803b15801561150257600080fd5b505af1158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a919061561a565b606754604080516101e081019091529194506001600160a01b03169063d8137fe89080608081018061156a6142e3565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c00160208101906115b49190615297565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b815260040161161b93929190615ac2565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050506116556142e3565b6001600160a01b03167fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee07660208801356001864261169860e08d0160c08e01615297565b6040805195865293151560208601529284019190915260608301521515608082015260a00160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50509050806117625760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b5050509392505050565b600061177661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190615122565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d80600081146118b5576040519150601f19603f3d011682016040523d82523d6000602084013e6118ba565b606091505b50509050806119045760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6119206142e3565b89896040518463ffffffff1660e01b81526004016119409392919061589b565b6101606040518083038186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190615564565b6067549091506000906001600160a01b0316638c8ff1d56119b06142e3565b8a8a6040518463ffffffff1660e01b81526004016119d09392919061589b565b60a06040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906154a2565b6060015190508160600151861115611a675760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610791565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061561a565b6067546001600160a01b031663f7b3c6fd611b066142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d919061561a565b10611bbf5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610791565b8015611c045760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111611c285760405162461bcd60e51b815260040161079190615905565b836001600160a01b031663737113b589611c4f8560e001518a614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b158015611c8b57600080fd5b505afa158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc3919061561a565b610140830151611cd39042615dbe565b1015611d0f5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611d5457600080fd5b505afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc457600080fd5b505afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190615122565b6001600160a01b031663c5f5951a611e126142e3565b8b8b6040518463ffffffff1660e01b8152600401611e329392919061589b565b60206040518083038186803b158015611e4a57600080fd5b505afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8291906152b4565b905080611f9457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed757600080fd5b505afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190615122565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611f3d929190615be9565b602060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061561a565b61209a565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190615122565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401612048929190615be9565b602060405180830381600087803b15801561206257600080fd5b505af1158015612076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209a919061561a565b606754604080516101e081019091529197506001600160a01b03169063d8137fe8908060808101806120ca6142e3565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b815260040161215493929190615ac2565b600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b5050505061218e6142e3565b60c0840151604080518c8152600060208201528082018a90524260608201529115156080830152516001600160a01b0392909216917fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee0769181900360a00190a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615122565b6001600160a01b0316336001600160a01b0316146122af5760405162461bcd60e51b8152600401610791906159ed565b6122b7614e9f565b565b6122c161445f565b336000908152606b602052604090205460ff166122f05760405162461bcd60e51b81526004016107919061597b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a557600080fd5b505afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd9190615122565b905060038760038111156123f3576123f3615e36565b14156124b957606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a9061242d9089908990899060040161589b565b60206040518083038186803b15801561244557600080fd5b505afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906152b4565b6124b45760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610791565b612819565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906124ee908a908a908a9060040161589b565b6101606040518083038186803b15801561250757600080fd5b505afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190615564565b905060008160e00151116125655760405162461bcd60e51b815260040161079190615905565b600188600381111561257957612579615e36565b14158061258b57506000816101200151115b6125bf5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610791565b60028860038111156125d3576125d3615e36565b141561270e576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561266b57600080fd5b505afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a3919061561a565b9050816101200151600014806126d357508160c001516126ca5781610120015181106126d3565b81610120015181115b6127085760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610791565b50612817565b600088600381111561272257612722615e36565b141561281757816001600160a01b031663737113b582602001516127578460e001518560600151614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b15801561279357600080fd5b505afa1580156127a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cb919061561a565b6101408201516127db9042615dbe565b10156128175760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561285e57600080fd5b505afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190615122565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d357600080fd5b505afa1580156128e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290b9190615122565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b600381111561294757612947615e36565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a449190615122565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b8152600401612a739392919061589b565b60206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac391906152b4565b905060006001600160a01b03851663c0a027f48b60038f6003811115612aeb57612aeb615e36565b14612b035784612afc576003612b06565b6008612b06565b60025b6040518363ffffffff1660e01b8152600401612b23929190615be9565b602060405180830381600087803b158015612b3d57600080fd5b505af1158015612b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b75919061561a565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612bbd57612bbd615e36565b815250836040518363ffffffff1660e01b8152600401612bde929190615aa7565b600060405180830381600087803b158015612bf857600080fd5b505af1158015612c0c573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612c286142e3565b6040518363ffffffff1660e01b8152600401612c45929190615b1c565b600060405180830381600087803b158015612c5f57600080fd5b505af1158015612c73573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612cf49085908d908d90600401615b42565b6000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612d545750600054600160ff909116105b80612d6e5750303b158015612d6e575060005460ff166001145b612dd15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610791565b6000805460ff191660011790558015612df4576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612e31614ef1565b8015612e77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190615122565b6001600160a01b0316336001600160a01b031614612f325760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe357600080fd5b505afa158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b9190615122565b6001600160a01b0316336001600160a01b03161461304b5760405162461bcd60e51b8152600401610791906159ed565b6122b7614f20565b6001600160a01b038381166000908152606560205260409020546060911633146130b75760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b6044820152606401610791565b606680546001600160a01b0319166001600160a01b038616179055604051600090819030906130e9908790879061588b565b600060405180830381855af49150503d8060008114613124576040519150601f19603f3d011682016040523d82523d6000602084013e613129565b606091505b5091509150816131755760448151101561314257600080fd5b6004810190508080602001905181019061315c919061534d565b60405162461bcd60e51b815260040161079191906158f2565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132149190615122565b6001600160a01b0316336001600160a01b0316146132445760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0381166132895760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610791565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b6132b361445f565b6067546000906001600160a01b031663b8878a2c6132cf6142e3565b85856040518463ffffffff1660e01b81526004016132ef9392919061589b565b6101806040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334091906153fa565b9050606954816101400151436133569190615dbe565b10156133745760405162461bcd60e51b815260040161079190615953565b6067546001600160a01b0316638b83351a8161338e6142e3565b84610160015185606001516133a39190615d65565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506134256142e3565b85856040518463ffffffff1660e01b81526004016134459392919061589b565b600060405180830381600087803b15801561345f57600080fd5b505af1158015613473573d6000803e3d6000fd5b5050505061347f6142e3565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace09484844285606001516040516134d7949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166135135760405162461bcd60e51b81526004016107919061597b565b60005b8381101561363157606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a49190615122565b6001600160a01b031663dd2f3c05348787858181106135c5576135c5615e4c565b9050602002013586866040518563ffffffff1660e01b81526004016135ec93929190615b42565b6000604051808303818588803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b5050505050808061362990615e05565b915050613516565b5050505050565b336000908152606b602052604090205460ff166136675760405162461bcd60e51b81526004016107919061597b565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156136ad57600080fd5b505af1158015613631573d6000803e3d6000fd5b6136c961445f565b6067546000906001600160a01b031663b8878a2c6136e56142e3565b89896040518463ffffffff1660e01b81526004016137059392919061589b565b6101806040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375691906153fa565b90506069548161014001514361376c9190615dbe565b101561378a5760405162461bcd60e51b815260040161079190615953565b8215806137a7575080608001516137a3578285116137a7565b8285105b6137de5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b8115806137fb575080608001516137f7578185106137fb565b8185115b6138325760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b7400084106138795760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906138c7908490600401615a0f565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b505050506139016142e3565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b600061397661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156139bb57600080fd5b505afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f39190615122565b6067549091506000906001600160a01b031663a3a80ffe613a126142e3565b8b8b6040518463ffffffff1660e01b8152600401613a329392919061589b565b6101606040518083038186803b158015613a4b57600080fd5b505afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190615564565b6067549091506000906001600160a01b0316638c8ff1d5613aa26142e3565b8c8c6040518463ffffffff1660e01b8152600401613ac29392919061589b565b60a06040518083038186803b158015613ada57600080fd5b505afa158015613aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1291906154a2565b9050806060015115613b5d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111613b815760405162461bcd60e51b815260040161079190615905565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613c0657600080fd5b505afa158015613c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3e919061561a565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613c6f908e906004908101615be9565b602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc1919061561a565b9450836001600160a01b031663cbe91bd986604051806101000160405280613ce76142e3565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613d1357613d13615e36565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613d53929190615c0d565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613d9a826000015184606001518b8b85614f5d565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613de957600080fd5b505afa158015613dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e219190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e919190615122565b6001600160a01b031663c5f5951a613ea76142e3565b8e8e6040518463ffffffff1660e01b8152600401613ec79392919061589b565b60206040518083038186803b158015613edf57600080fd5b505afa158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1791906152b4565b9050808015613f37575060018a6001811115613f3557613f35615e36565b145b15613f725760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b6044820152606401610791565b60008460e001511180156140825750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613fba57600080fd5b505afa158015613fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff29190615122565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b15801561404257600080fd5b505afa158015614056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407a919061561a565b8460e0015110155b801561418a5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156140c257600080fd5b505afa1580156140d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fa9190615122565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b15801561414a57600080fd5b505afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614182919061561a565b8460e0015111155b6141a65760405162461bcd60e51b815260040161079190615927565b6141ae6142e3565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516141f69796959493929190615ccd565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061422e908790600401615b0d565b600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c0591503490614292908a908d908d90600401615b42565b6000604051808303818588803b1580156142ab57600080fd5b505af11580156142bf573d6000803e3d6000fd5b50505050506142d48c8c8661010001516144a5565b50505050509695505050505050565b6066546000906001600160a01b03166142fb57503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561435957600080fd5b505afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615122565b6001600160a01b0316336001600160a01b0316146143c15760405162461bcd60e51b8152600401610791906159ed565b600081116143fb5760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610791565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156122b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6144c16142e3565b86866040518463ffffffff1660e01b81526004016144e19392919061589b565b6101606040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615564565b60e001516067549091506000906001600160a01b0316638c8ff1d56145556142e3565b87876040518463ffffffff1660e01b81526004016145759392919061589b565b60a06040518083038186803b15801561458d57600080fd5b505afa1580156145a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c591906154a2565b602001519050600082116145eb5760405162461bcd60e51b815260040161079190615905565b6069546145f88243615dbe565b10156146165760405162461bcd60e51b815260040161079190615953565b6001600160ff1b03831061465b5760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610791565b6067546000906001600160a01b0316637fdb96f36146776142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018990526044810188905260648101879052608401602060405180830381600087803b1580156146cd57600080fd5b505af11580156146e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614705919061561a565b905061470f6142e3565b60408051888152602081018890529081018390524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a2505050505050565b6067546000906001600160a01b031663a3a80ffe6147876142e3565b88886040518463ffffffff1660e01b81526004016147a79392919061589b565b6101606040518083038186803b1580156147c057600080fd5b505afa1580156147d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f89190615564565b6067549091506000906001600160a01b0316638c8ff1d56148176142e3565b89896040518463ffffffff1660e01b81526004016148379392919061589b565b60a06040518083038186803b15801561484f57600080fd5b505afa158015614863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488791906154a2565b60400151905060008260e00151116148b15760405162461bcd60e51b815260040161079190615905565b6001600160ff1b0385106148f65760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610791565b60006149238360e00151606460508660a001516149139190615d9f565b61491d9190615d7d565b90615009565b905085158061496257508260c0015161494e57808360a001516149469190615d65565b861115614962565b808360a0015161495e9190615dbe565b8610155b61499b5760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610791565b6069546149a88343615dbe565b10156149c65760405162461bcd60e51b815260040161079190615953565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015614a0b57600080fd5b505afa158015614a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a439190615122565b9050861580614b3d5750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8657600080fd5b505afa158015614a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abe9190615122565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b8152600401614aeb91815260200190565b60206040518083038186803b158015614b0357600080fd5b505afa158015614b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3b91906152b4565b155b15614c2a576067546001600160a01b031663a3544181614b5b6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b158015614bb157600080fd5b505af1158015614bc5573d6000803e3d6000fd5b50505050614bd16142e3565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614e6f565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614c5c908d90600590600401615be9565b602060405180830381600087803b158015614c7657600080fd5b505af1158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae919061561a565b9050816001600160a01b031663b8213bfa826040518060c00160405280614cd36142e3565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614d74929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614d8e57600080fd5b505af1158015614da2573d6000803e3d6000fd5b50505050614dae6142e3565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614e3b9085908c908c90600401615b42565b6000604051808303818588803b158015614e5457600080fd5b505af1158015614e68573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614e8c8385615d9f565b614e969190615d7d565b90505b92915050565b614ea761501b565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614f185760405162461bcd60e51b8152600401610791906159a2565b6122b7615064565b614f2861445f565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614ed43390565b60008080856001811115614f7357614f73615e36565b1415614fb15782614f848588615d65565b614f8e9190615dbe565b905080614fa06402540be40089615d9f565b614faa9190615d7d565b9150614fff565b6001856001811115614fc557614fc5615e36565b1415614fff5782614fd68588615dbe565b614fe09190615dbe565b905080614ff26402540be40089615d9f565b614ffc9190615d7d565b91505b9550959350505050565b600081614e8c6402540be40085615d9f565b60335460ff166122b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610791565b600054610100900460ff1661508b5760405162461bcd60e51b8152600401610791906159a2565b6033805460ff19169055565b80516150a281615e8b565b919050565b60008083601f8401126150b957600080fd5b50813567ffffffffffffffff8111156150d157600080fd5b6020830191508360208260051b85010111156150ec57600080fd5b9250929050565b80516150a281615ea0565b60006020828403121561511057600080fd5b813561511b81615e8b565b9392505050565b60006020828403121561513457600080fd5b815161511b81615e8b565b6000806040838503121561515257600080fd5b823561515d81615e8b565b9150602083013561516d81615e8b565b809150509250929050565b6000806040838503121561518b57600080fd5b823561519681615e8b565b9150602083013561516d81615ea0565b6000806000604084860312156151bb57600080fd5b83356151c681615e8b565b9250602084013567ffffffffffffffff808211156151e357600080fd5b818601915086601f8301126151f757600080fd5b81358181111561520657600080fd5b87602082850101111561521857600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561524157600080fd5b843567ffffffffffffffff8082111561525957600080fd5b615265888389016150a7565b9096509450602087013591508082111561527e57600080fd5b5061528b878288016150a7565b95989497509550505050565b6000602082840312156152a957600080fd5b813561511b81615ea0565b6000602082840312156152c657600080fd5b815161511b81615ea0565b60008060008060008060a087890312156152ea57600080fd5b86356152f581615eae565b9550602087013561530581615e8b565b94506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b61533b89828a016150a7565b979a9699509497509295939492505050565b60006020828403121561535f57600080fd5b815167ffffffffffffffff8082111561537757600080fd5b818401915084601f83011261538b57600080fd5b81518181111561539d5761539d615e62565b604051601f8201601f19908116603f011681019083821181831017156153c5576153c5615e62565b816040528281528760208487010111156153de57600080fd5b6153ef836020830160208801615dd5565b979650505050505050565b6000610180828403121561540d57600080fd5b615415615d17565b61541e83615097565b815260208301516020820152604083015160408201526060830151606082015261544a608084016150f3565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156154b457600080fd5b60405160a0810181811067ffffffffffffffff821117156154d7576154d7615e62565b8060405250825181526020830151602082015260408301516040820152606083015161550281615ea0565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561553157600080fd5b6101608082121561554157600080fd5b859450840135905061555281615eae565b92959294505050610180919091013590565b6000610160828403121561557757600080fd5b61557f615d41565b61558883615097565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526155c860c084016150f3565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561561357600080fd5b5035919050565b60006020828403121561562c57600080fd5b5051919050565b6000806040838503121561564657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561566e57600080fd5b863595506020870135945060408701356002811061568b57600080fd5b935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b6000806000606084860312156156c357600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156156f357600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b60008060008060008060c0878903121561573f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526157aa816020860160208601615dd5565b601f01601f19169290920160200192915050565b600281106157ce576157ce615e36565b9052565b80516001600160a01b031682526020808201519083015260408082015190830152606081015161580181615e78565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161585e60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016158e383615e78565b82606083015295945050505050565b602081526000614e966020830184615792565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615a52608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a08101615ab582856157d2565b8260808301529392505050565b600061020082019050615ad682865161580c565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614e99828461580c565b60a08101615b2a82856157d2565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615bdb57868503605f190183528135368a9003601e19018112615b9257600080fd5b8901803567ffffffffffffffff811115615bab57600080fd5b8036038b1315615bba57600080fd5b615bc78782888501615769565b965050509183019190830190600101615b6c565b509298975050505050505050565b8281526040810160098310615c0057615c00615e36565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615c4e60808401826157be565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615cae85615e78565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615ce960408301886157be565b615cf6606083018761580c565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60405290565b604051610160810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60008219821115615d7857615d78615e20565b500190565b600082615d9a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615db957615db9615e20565b500290565b600082821015615dd057615dd0615e20565b500390565b60005b83811015615df0578181015183820152602001615dd8565b83811115615dff576000848401525b50505050565b6000600019821415615e1957615e19615e20565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615e8857615e88615e36565b50565b6001600160a01b0381168114615e8857600080fd5b8015158114615e8857600080fd5b60048110615e8857600080fdfea2646970667358221220d6a87a5581708c02ee570024d3069ebe48e5f1e856800b39a156db0836401a9464736f6c63430008070033","sourceMap":"376:23237:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:31;;;;;;;;;;;;;;;;;;;34140:25:93;;;34128:2;34113:18;695:31:73;;;;;;;;661:27;;;;;;;;;;-1:-1:-1;661:27:73;;;;-1:-1:-1;;;;;661:27:73;;;;;;-1:-1:-1;;;;;15686:32:93;;;;15668:51;;15656:2;15641:18;661:27:73;15522:203:93;16149:340:73;;;;;;:::i;:::-;;:::i;:::-;;624:31;;;;;;;;;;-1:-1:-1;624:31:73;;;;-1:-1:-1;;;;;624:31:73;;;7129:4255;;;;;;:::i;:::-;;:::i;11618:1825::-;;;;;;:::i;:::-;;:::i;513:88:67:-;;;;;;;;;;-1:-1:-1;570:10:67;592:1;558:23;;;:11;:23;;;;;:36;;-1:-1:-1;;;;;;558:36:67;;;16149:340:73;3917:63;;;;;;;;;;;;;:::i;16871:2738::-;;;;;;:::i;:::-;;:::i;3155:238::-;;;;;;;;;;-1:-1:-1;3155:238:73;;;;;:::i;:::-;;:::i;732:23::-;;;;;;;;;;-1:-1:-1;732:23:73;;;;-1:-1:-1;;;;;732:23:73;;;1858:84:19;;;;;;;;;;-1:-1:-1;1928:7:19;;;;1858:84;;;19332:14:93;;19325:22;19307:41;;19295:2;19280:18;1858:84:19;19167:187:93;3986:183:73;;;;;;;;;;-1:-1:-1;3986:183:73;;;;;:::i;:::-;;:::i;762:42::-;;;;;;;;;;-1:-1:-1;762:42:73;;;;;:::i;:::-;;;;;;;;;;;;;;;;3799:59;;;;;;;;;;;;;:::i;607:695:67:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4175:164:73:-;;;;;;;;;;-1:-1:-1;4175:164:73;;;;;:::i;:::-;;:::i;15250:563::-;;;;;;;;;;-1:-1:-1;15250:563:73;;;;;:::i;:::-;;:::i;174:46:67:-;;;;;;;;;;-1:-1:-1;174:46:67;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;174:46:67;;;13638:287:73;;;;;;:::i;:::-;;:::i;568:49::-;;;;;;;;;;;;605:12;568:49;;19705:132;;;;;;;;;;-1:-1:-1;19705:132:73;;;;;:::i;:::-;;:::i;14224:862::-;;;;;;;;;;-1:-1:-1;14224:862:73;;;;;:::i;:::-;;:::i;263:244:67:-;;;;;;;;;;-1:-1:-1;263:244:67;;;;;:::i;:::-;478:10;466:23;;;;:11;:23;;;;;:34;;-1:-1:-1;;;;;;466:34:67;-1:-1:-1;;;;;466:34:67;;;;;;;;;;263:244;4685:2228:73;;;;;;:::i;:::-;;:::i;1308:197:67:-;;;;;;;;;;;;;:::i;3532:210:73:-;;;;;;;;;;-1:-1:-1;3532:210:73;;;;;:::i;:::-;;:::i;16149:340::-;1482:19:19;:17;:19::i;:::-;16349:37:73::1;16359:10;16371:6;16379;16349:9;:37::i;:::-;16399:27:::0;;16396:86:::1;;16428:54;16438:10;16450:6;16458;16466:15;;16428:9;:54::i;:::-;16149:340:::0;;;;;;:::o;7129:4255::-;7303:12;1482:19:19;:17;:19::i;:::-;7358:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;7358:26:73;;;;7328:27:::1;::::0;-1:-1:-1;;;;;7358:8:73::1;::::0;-1:-1:-1;;7358:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7328:56;;7394:24;7421:10;-1:-1:-1::0;;;;;7421:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7512:8;::::0;:33:::1;::::0;;-1:-1:-1;;;7512:33:73;;;;7394:52;;-1:-1:-1;;;;;;7512:8:73;;::::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7465:8;::::0;-1:-1:-1;;;;;7465:8:73::1;:29;7495:13;:11;:13::i;:::-;7465:44;::::0;;-1:-1:-1;7465:44:73;;;-1:-1:-1;;;;;;7465:44:73;;;-1:-1:-1;;;;;15686:32:93;;;;7465:44:73::1;::::0;::::1;15668:51:93::0;7465:44:73;15641:18:93;;;;;7465:44:73::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;7457:111;;;::::0;-1:-1:-1;;;7457:111:73;;27330:2:93;7457:111:73::1;::::0;::::1;27312:21:93::0;27369:2;27349:18;;;27342:30;-1:-1:-1;;;27388:18:93;;;27381:48;27446:18;;7457:111:73::1;;;;;;;;;7833:8;::::0;:27:::1;::::0;;-1:-1:-1;;;7833:27:73;;;;-1:-1:-1;;;;;7833:8:73;;::::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7757:8;::::0;-1:-1:-1;;;;;7757:8:73::1;:29;7787:13;:11;:13::i;:::-;7757:57;::::0;;-1:-1:-1;7757:57:73;;;-1:-1:-1;;;;;;7757:57:73;;;-1:-1:-1;;;;;16591:32:93;;;;7757:57:73::1;::::0;::::1;16573:51:93::0;7802:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7757:57:73;;16546:18:93;;;;;7757:57:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7679:8;::::0;-1:-1:-1;;;;;7679:8:73::1;:31;7711:13;:11;:13::i;:::-;7679:59;::::0;;-1:-1:-1;7679:59:73;;;-1:-1:-1;;;;;;7679:59:73;;;-1:-1:-1;;;;;16591:32:93;;;;7679:59:73::1;::::0;::::1;16573:51:93::0;7726:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7679:59:73;;16546:18:93;;;;;7679:59:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7608:8;::::0;-1:-1:-1;;;;;7608:8:73::1;:24;7633:13;:11;:13::i;:::-;7608:52;::::0;;-1:-1:-1;7608:52:73;;;-1:-1:-1;;;;;;7608:52:73;;;-1:-1:-1;;;;;16591:32:93;;;;7608:52:73::1;::::0;::::1;16573:51:93::0;7648:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7608:52:73;;16546:18:93;;;;;7608:52:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:130;;;;:::i;:::-;:206;;;;:::i;:::-;:252;7587:318;;;::::0;-1:-1:-1;;;7587:318:73;;25876:2:93;7587:318:73::1;::::0;::::1;25858:21:93::0;25915:2;25895:18;;;25888:30;-1:-1:-1;;;25934:18:93;;;25927:49;25993:18;;7587:318:73::1;25674:343:93::0;7587:318:73::1;7962:42;::::0;-1:-1:-1;;;7962:42:73;;7992:11:::1;::::0;::::1;;7962:42;::::0;::::1;34140:25:93::0;-1:-1:-1;;;;;7962:29:73;::::1;::::0;::::1;::::0;34113:18:93;;7962:42:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7924:34;:18;::::0;::::1;;7947:10;::::0;::::1;;7924:22;:34::i;:::-;:80;;7916:106;;;::::0;-1:-1:-1;;;7916:106:73;;22047:2:93;7916:106:73::1;::::0;::::1;22029:21:93::0;22086:2;22066:18;;;22059:30;-1:-1:-1;;;22105:18:93;;;22098:43;22158:18;;7916:106:73::1;21845:337:93::0;7916:106:73::1;8042:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8056:5:73::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8092:1;:11;;;8085:1;:4;;;:18;8056:47;;;8071:1;:11;;;8064:1;:4;;;:18;8056:47;8034:83;;;::::0;-1:-1:-1;;;8034:83:73;;24870:2:93;8034:83:73::1;::::0;::::1;24852:21:93::0;24909:1;24889:18;;;24882:29;-1:-1:-1;;;24927:18:93;;;24920:38;24975:18;;8034:83:73::1;24668:331:93::0;8034:83:73::1;8135:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8149:5:73::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8185:1;:11;;;8178:1;:4;;;:18;8149:47;;;8164:1;:11;;;8157:1;:4;;;:18;8149:47;8127:83;;;::::0;-1:-1:-1;;;8127:83:73;;25540:2:93;8127:83:73::1;::::0;::::1;25522:21:93::0;25579:1;25559:18;;;25552:29;-1:-1:-1;;;25597:18:93;;;25590:38;25645:18;;8127:83:73::1;25338:331:93::0;8127:83:73::1;605:12;8228:10;:26;8220:55;;;::::0;-1:-1:-1;;;8220:55:73;;21016:2:93;8220:55:73::1;::::0;::::1;20998:21:93::0;21055:2;21035:18;;;21028:30;-1:-1:-1;;;21074:18:93;;;21067:46;21130:18;;8220:55:73::1;20814:340:93::0;8220:55:73::1;8299:34;8290:5;:43;;;;;;;;:::i;:::-;;;:94;;;;-1:-1:-1::0;8346:38:73::1;8337:5;:47;;;;;;;;:::i;:::-;;;8290:94;8286:2972;;;8440:1;8427;:10;;;:14;:99;;;;-1:-1:-1::0;8479:47:73::1;::::0;-1:-1:-1;;;8479:47:73;;8507:11:::1;::::0;::::1;;8479:47;::::0;::::1;35610:25:93::0;8520:5:73::1;35651:18:93::0;;;35644:50;-1:-1:-1;;;;;8479:27:73;::::1;::::0;::::1;::::0;35583:18:93;;8479:47:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8465:1;:10;;;:61;;8427:99;:184;;;;-1:-1:-1::0;8564:47:73::1;::::0;-1:-1:-1;;;8564:47:73;;8592:11:::1;::::0;::::1;;8564:47;::::0;::::1;35610:25:93::0;8605:5:73::1;35651:18:93::0;;;35644:50;-1:-1:-1;;;;;8564:27:73;::::1;::::0;::::1;::::0;35583:18:93;;8564:47:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8550:1;:10;;;:61;;8427:184;8402:261;;;::::0;-1:-1:-1;;;8402:261:73;;22389:2:93;8402:261:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;8402:261:73::1;22187:342:93::0;8402:261:73::1;8678:8;::::0;-1:-1:-1;;;;;8678:8:73::1;:21;8700:13;:11;:13::i;:::-;8723:8;::::0;8678:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8678:75:73;;;-1:-1:-1;;;;;15988:15:93;;;8678:75:73::1;::::0;::::1;15970:34:93::0;8723:8:73;::::1;16020:18:93::0;;;16013:43;8734:18:73::1;::::0;::::1;;16072::93::0;;;16065:34;15905:18;;8678:75:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8780:8:73::1;::::0;8767:10:::1;::::0;-1:-1:-1;;;;;;8780:8:73::1;::::0;-1:-1:-1;8780:33:73::1;8814:13;:11;:13::i;:::-;8780:61;::::0;;-1:-1:-1;8780:61:73;;;-1:-1:-1;;;;;;8780:61:73;;;-1:-1:-1;;;;;16591:32:93;;;;8780:61:73::1;::::0;::::1;16573:51:93::0;8829:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;8780:61:73;;16546:18:93;;;;;8780:61:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8856:8;::::0;8902:416:::1;::::0;;::::1;::::0;::::1;::::0;;;8767:74;;-1:-1:-1;;;;;;8856:8:73::1;::::0;:28:::1;::::0;8902:416;8954:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;8902:416:73::1;::::0;;::::1;8989:11:::0;;::::1;;8902:416:::0;;::::1;::::0;;;;;;;9049:18:::1;::::0;;::::1;;8902:416:::0;;;;;9089:5:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;8902:416;;;;;;9116:1;:10;;;8902:416;;;;9148:1;:4;;;8902:416;;;;9174:1;:4;;;8902:416;;;;9200:1;:11;;;8902:416;;;;9233:10;8902:416;;;;9265:12;8902:416;;;;9299:1;8902:416;;::::0;8856:476:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9347:10;-1:-1:-1::0;;;;;9347:21:73::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9347:45:73::1;;9393:13;:11;:13::i;:::-;9408:1;:11;;;9421:5;9428;9347:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9470:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;9454:112:73::1;;9485:11;::::0;::::1;;9498:5:::0;9505::::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;9512:1;:11;;;9525:1;9528:5;9535:10;9547:1;:18;;;9454:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;8387:1190;8286:2972;;;9636:1;9623;:10;;;:14;:142;;;;-1:-1:-1::0;;;;;;9675:27:73;::::1;;9703:11;::::0;::::1;;9726:38;9717:5:::0;:47;;::::1;;;;;;:::i;:::-;9675:90;::::0;-1:-1:-1;;;;;;9675:90:73::1;::::0;;;;;;::::1;::::0;::::1;35610:25:93::0;;;;9717:47:73::1;35651:18:93::0;;;35644:50;35583:18;;9675:90:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9661:1;:10;;;:104;;9623:142;:270;;;;-1:-1:-1::0;;;;;;9803:27:73;::::1;;9831:11;::::0;::::1;;9854:38;9845:5:::0;:47;;::::1;;;;;;:::i;:::-;9803:90;::::0;-1:-1:-1;;;;;;9803:90:73::1;::::0;;;;;;::::1;::::0;::::1;35610:25:93::0;;;;9845:47:73::1;35651:18:93::0;;;35644:50;35583:18;;9803:90:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9789:1;:10;;;:104;;9623:270;9598:347;;;::::0;-1:-1:-1;;;9598:347:73;;22389:2:93;9598:347:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;9598:347:73::1;22187:342:93::0;9598:347:73::1;9972:38;9963:5;:47;;;;;;;;:::i;:::-;;9960:132;;;10020:46;::::0;-1:-1:-1;;;10020:46:73;;10054:11:::1;::::0;::::1;;10020:46;::::0;::::1;34140:25:93::0;-1:-1:-1;;;;;10020:33:73;::::1;::::0;::::1;::::0;34113:18:93;;10020:46:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10012:80;;;::::0;-1:-1:-1;;;10012:80:73;;22736:2:93;10012:80:73::1;::::0;::::1;22718:21:93::0;22775:2;22755:18;;;22748:30;-1:-1:-1;;;22794:18:93;;;22787:51;22855:18;;10012:80:73::1;22534:345:93::0;10012:80:73::1;10107:8;::::0;-1:-1:-1;;;;;10107:8:73::1;:21;10129:13;:11;:13::i;:::-;10152:8;::::0;10107:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10107:75:73;;;-1:-1:-1;;;;;15988:15:93;;;10107:75:73::1;::::0;::::1;15970:34:93::0;10152:8:73;::::1;16020:18:93::0;;;16013:43;10163:18:73::1;::::0;::::1;;16072::93::0;;;16065:34;15905:18;;10107:75:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10216:34:73::1;::::0;-1:-1:-1;10207:43:73::1;::::0;-1:-1:-1;;10207:43:73;::::1;:5;:43;;;;;;;;:::i;:::-;;:246;;10377:76;::::0;-1:-1:-1;;;10377:76:73;;-1:-1:-1;;;;;10377:19:73;::::1;::::0;::::1;::::0;:76:::1;::::0;10397:11:::1;::::0;::::1;;::::0;10410:42:::1;::::0;10377:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10207:246;;;10278:72;::::0;-1:-1:-1;;;10278:72:73;;-1:-1:-1;;;;;10278:19:73;::::1;::::0;::::1;::::0;:72:::1;::::0;10298:11:::1;::::0;::::1;;::::0;10311:38:::1;::::0;10278:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10469:8;::::0;10519:560:::1;::::0;;10575:398;;;;;;10197:256;;-1:-1:-1;;;;;;10469:8:73::1;::::0;:32:::1;::::0;10519:560;::::1;::::0;::::1;::::0;10622:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;10575:398:73::1;;;;;10661:1;:11;;;10575:398;;;;10698:1;10575:398;;;;10725:1;10575:398;;;;10752:1;:18;;;10575:398;;;;10796:1;10575:398;;;;10823:1;:5;;;;;;;;;;:::i;:::-;10575:398;;;;;;10854:1;:10;;;10575:398;;;;10890:1;:4;;;10575:398;;;;10920:1;:4;;;10575:398;;;;10950:1;10575:398;;::::0;10519:560:::1;;;;10995:1;10519:560;;;;11018:1;:11;;;10519:560;;;;11051:10;10519:560;;::::0;11097:7:::1;11122:4;10469:671;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11181:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;11160:87:73::1;;11196:11;::::0;::::1;;-1:-1:-1::0;11215:7:73;11224:15:::1;11241:5;::::0;;;::::1;::::0;::::1;;:::i;:::-;11160:87;::::0;;35952:25:93;;;36020:14;;36013:22;36008:2;35993:18;;35986:50;36052:18;;;36045:34;;;;36110:2;36095:18;;36088:34;36166:14;36159:22;36153:3;36138:19;;36131:51;35939:3;35924:19;11160:87:73::1;;;;;;;8286:2972;11292:8;::::0;11284:44:::1;::::0;11269:9:::1;::::0;-1:-1:-1;;;;;11292:8:73::1;::::0;11314:9:::1;::::0;11269;11284:44;11269:9;11284:44;11314:9;11292:8;11284:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11268:60;;;11346:4;11338:39;;;::::0;-1:-1:-1;;;11338:39:73;;26224:2:93;11338:39:73::1;::::0;::::1;26206:21:93::0;26263:2;26243:18;;;26236:30;-1:-1:-1;;;26282:18:93;;;26275:52;26344:18;;11338:39:73::1;26022:346:93::0;11338:39:73::1;7317:4067;;;7129:4255:::0;;;;;:::o;11618:1825::-;11784:12;1482:19:19;:17;:19::i;:::-;11852:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;11852:26:73;;;;11808:24:::1;::::0;-1:-1:-1;;;;;11852:8:73::1;::::0;-1:-1:-1;;11852:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11835:57:73::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11928:8;::::0;11920:44:::1;::::0;11808:86;;-1:-1:-1;11905:9:73::1;::::0;-1:-1:-1;;;;;11928:8:73;;::::1;::::0;11950:9:::1;::::0;11905;11920:44;11905:9;11920:44;11950:9;11928:8;11920:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:60;;;11982:4;11974:39;;;::::0;-1:-1:-1;;;11974:39:73;;26224:2:93;11974:39:73::1;::::0;::::1;26206:21:93::0;26263:2;26243:18;;;26236:30;-1:-1:-1;;;26282:18:93;;;26275:52;26344:18;;11974:39:73::1;26022:346:93::0;11974:39:73::1;12057:8;::::0;12024:30:::1;::::0;-1:-1:-1;;;;;12057:8:73::1;:19;12077:13;:11;:13::i;:::-;12057:54;::::0;-1:-1:-1;;;;;;12057:54:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12057:54:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12057:54:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12146:8;::::0;12024:87;;-1:-1:-1;12121:22:73::1;::::0;-1:-1:-1;;;;;12146:8:73::1;:23;12170:13;:11;:13::i;:::-;12146:58;::::0;-1:-1:-1;;;;;;12146:58:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12146:58:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12146:58:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;;;12121:101;;12252:1;:17;;;12241:7;:28;;12233:51;;;::::0;-1:-1:-1;;;12233:51:73;;30132:2:93;12233:51:73::1;::::0;::::1;30114:21:93::0;30171:2;30151:18;;;30144:30;-1:-1:-1;;;30190:18:93;;;30183:40;30240:18;;12233:51:73::1;29930:334:93::0;12233:51:73::1;12349:8;::::0;:33:::1;::::0;;-1:-1:-1;;;12349:33:73;;;;-1:-1:-1;;;;;12349:8:73;;::::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12302:8;::::0;-1:-1:-1;;;;;12302:8:73::1;:29;12332:13;:11;:13::i;:::-;12302:44;::::0;;-1:-1:-1;12302:44:73;;;-1:-1:-1;;;;;;12302:44:73;;;-1:-1:-1;;;;;15686:32:93;;;;12302:44:73::1;::::0;::::1;15668:51:93::0;12302:44:73;15641:18:93;;;;;12302:44:73::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12294:111;;;::::0;-1:-1:-1;;;12294:111:73;;27330:2:93;12294:111:73::1;::::0;::::1;27312:21:93::0;27369:2;27349:18;;;27342:30;-1:-1:-1;;;27388:18:93;;;27381:48;27446:18;;12294:111:73::1;27128:342:93::0;12294:111:73::1;12424:17;12423:18;12415:51;;;::::0;-1:-1:-1;;;12415:51:73;;29106:2:93;12415:51:73::1;::::0;::::1;29088:21:93::0;29145:2;29125:18;;;29118:30;-1:-1:-1;;;29164:18:93;;;29157:50;29224:18;;12415:51:73::1;28904:344:93::0;12415:51:73::1;12497:1;12484;:10;;;:14;12476:35;;;::::0;-1:-1:-1;;;12476:35:73;;21361:2:93;12476:35:73::1;::::0;::::1;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;12476:35:73::1;21159:331:93::0;12476:35:73::1;12617:10;::::0;::::1;::::0;-1:-1:-1;;;;;12562:30:73;::::1;::::0;::::1;::::0;12593:10;;12605:23:::1;::::0;:7;;:11:::1;:23::i;:::-;12562:67;::::0;-1:-1:-1;;;;;;12562:67:73::1;::::0;;;;;;::::1;::::0;::::1;38194:25:93::0;;;;38235:18;;;38228:34;38167:18;;12562:67:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12547:11;::::0;::::1;::::0;12529:29:::1;::::0;:15:::1;:29;:::i;:::-;:100;;12521:124;;;::::0;-1:-1:-1;;;12521:124:73;;30471:2:93;12521:124:73::1;::::0;::::1;30453:21:93::0;30510:2;30490:18;;;30483:30;-1:-1:-1;;;30529:18:93;;;30522:41;30580:18;;12521:124:73::1;30269:335:93::0;12521:124:73::1;12669:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12669:26:73;;;;12656:10:::1;::::0;-1:-1:-1;;;;;12669:8:73::1;::::0;-1:-1:-1;;12669:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12669:39:73::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12669:52:73::1;;12722:13;:11;:13::i;:::-;12669:87;::::0;-1:-1:-1;;;;;;12669:87:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12669:87:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12669:87:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12656:100;;12777:5;:228;;12917:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12917:26:73;;;;-1:-1:-1;;;;;12917:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;::::0;-1:-1:-1;;;12917:88:73;;-1:-1:-1;;;;;12917:35:73;;;::::1;::::0;::::1;::::0;:88:::1;::::0;12953:10;;-1:-1:-1;;12917:88:73::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12777:228;;;12804:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12804:26:73;;;;-1:-1:-1;;;;;12804:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:92;::::0;-1:-1:-1;;;12804:92:73;;-1:-1:-1;;;;;12804:35:73;;;::::1;::::0;::::1;::::0;:92:::1;::::0;12840:10;;12852:43:::1;::::0;12804:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13016:8;::::0;13062:213:::1;::::0;;13114:90;;;;;;12767:238;;-1:-1:-1;;;;;;13016:8:73::1;::::0;:32:::1;::::0;13062:213;::::1;::::0;::::1;::::0;13136:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;13114:90:73::1;;;;;13151:10;13114:90;;;;13163:6;13114:90;;;;13171:7;13114:90;;;;13180:1;13114:90;;;;13183:1;13114:90;;;;13186:5;13114:90;;;;;;13193:1;13114:90;;;;13196:1;13114:90;;;;13199:1;13114:90;;;;13202:1;13114:90;;::::0;13062:213:::1;;;;13222:1;13062:213;;;;13241:1;13062:213;;;;13260:1;13062:213;;::::0;13289:7:::1;13310:5;13016:309;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13370:13;:11;:13::i;:::-;13430:5;::::0;::::1;::::0;13349:87:::1;::::0;;35952:25:93;;;13397:5:73::1;36008:2:93::0;35993:18;;35986:50;36052:18;;;36045:34;;;13413:15:73::1;36110:2:93::0;36095:18;;36088:34;36166:14;;36159:22;36153:3;36138:19;;36131:51;13349:87:73;-1:-1:-1;;;;;13349:87:73;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;13349:87:73;;::::1;11797:1646;;;;;11618:1825:::0;;;;;:::o;3917:63::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3963:10:::1;:8;:10::i;:::-;3917:63::o:0;16871:2738::-;1482:19:19;:17;:19::i;:::-;2861:10:73::1;2850:22;::::0;;;:10:::1;:22;::::0;;;;;::::1;;2842:48;;;::::0;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73::1;::::0;::::1;27995:21:93::0;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73::1;27811:337:93::0;2842:48:73::1;17163:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;17163:26:73;;;;17119:24:::2;::::0;-1:-1:-1;;;;;17163:8:73::2;::::0;-1:-1:-1;;17163:26:73::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17146:57:73::2;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17119:86:::0;-1:-1:-1;17233:31:73::2;17219:10;:45;;;;;;;;:::i;:::-;;17215:1242;;;17297:8;::::0;:55:::2;::::0;-1:-1:-1;;;17297:55:73;;-1:-1:-1;;;;;16898:32:93;;;17297:55:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;17297:8:73;;::::2;::::0;:26:::2;::::0;16853:18:93;;17297:55:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17289:76;;;::::0;-1:-1:-1;;;17289:76:73;;27677:2:93;17289:76:73::2;::::0;::::2;27659:21:93::0;27716:1;27696:18;;;27689:29;-1:-1:-1;;;27734:18:93;;;27727:38;27782:18;;17289:76:73::2;27475:331:93::0;17289:76:73::2;17215:1242;;;17430:8;::::0;:48:::2;::::0;-1:-1:-1;;;17430:48:73;;-1:-1:-1;;;;;16898:32:93;;;17430:48:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;17397:30:73::2;::::0;17430:8:::2;::::0;:19:::2;::::0;16853:18:93;;17430:48:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17397:81;;17514:1;17501;:10;;;:14;17493:35;;;::::0;-1:-1:-1;;;17493:35:73;;21361:2:93;17493:35:73::2;::::0;::::2;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;17493:35:73::2;21159:331:93::0;17493:35:73::2;17564:29;17550:10;:43;;;;;;;;:::i;:::-;;;:55;;;;17604:1;17597;:4;;;:8;17550:55;17542:73;;;::::0;-1:-1:-1;;;17542:73:73;;26997:2:93;17542:73:73::2;::::0;::::2;26979:21:93::0;27036:1;27016:18;;;27009:29;-1:-1:-1;;;27054:18:93;;;27047:35;27099:18;;17542:73:73::2;26795:328:93::0;17542:73:73::2;17648:30;17634:10;:44;;;;;;;;:::i;:::-;;17630:817;;;17715:9;::::0;17787:8;;17833:11:::2;::::0;::::2;::::0;17882:7:::2;::::0;;::::2;::::0;17927:11:::2;::::0;::::2;::::0;17976:5:::2;::::0;::::2;::::0;18019:17:::2;::::0;::::2;::::0;18074:10:::2;::::0;::::2;::::0;17715:403;;-1:-1:-1;;;17715:403:73;;-1:-1:-1;;;;;18846:32:93;;;17715:403:73::2;::::0;::::2;18828:51:93::0;18895:18;;;18888:34;;;;18938:18;;;18931:34;;;;18981:18;;;18974:34;;;;19052:14;19045:22;19024:19;;;19017:51;19084:19;;;19077:35;19128:19;;;19121:35;17698:13:73::2;::::0;17715:9;;;::::2;::::0;:34:::2;::::0;18800:19:93;;17715:403:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17698:420;;18144:1;:4;;;18152:1;18144:9;:56;;;;18158:1;:5;;;:41;;18195:1;:4;;;18184:8;:15;18158:41;;;18177:1;:4;;;18166:8;:15;18158:41;18136:75;;;::::0;-1:-1:-1;;;18136:75:73;;25206:2:93;18136:75:73::2;::::0;::::2;25188:21:93::0;25245:1;25225:18;;;25218:29;-1:-1:-1;;;25263:18:93;;;25256:36;25309:18;;18136:75:73::2;25004:329:93::0;18136:75:73::2;17680:546;17630:817;;;18249:29;18235:10;:43;;;;;;;;:::i;:::-;;18231:216;;;18369:11;::::0;::::2;::::0;18404:10:::2;::::0;::::2;::::0;18382:17:::2;::::0;::::2;::::0;-1:-1:-1;;;;;18338:30:73;::::2;::::0;::::2;::::0;18369:11;;18382:33:::2;::::0;:21:::2;:33::i;:::-;18338:78;::::0;-1:-1:-1;;;;;;18338:78:73::2;::::0;;;;;;::::2;::::0;::::2;38194:25:93::0;;;;38235:18;;;38228:34;38167:18;;18338:78:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18323:11;::::0;::::2;::::0;18305:29:::2;::::0;:15:::2;:29;:::i;:::-;:111;;18297:135;;;::::0;-1:-1:-1;;;18297:135:73;;30471:2:93;18297:135:73::2;::::0;::::2;30453:21:93::0;30510:2;30490:18;;;30483:30;-1:-1:-1;;;30529:18:93;;;30522:41;30580:18;;18297:135:73::2;30269:335:93::0;18297:135:73::2;17383:1074;17215:1242;18497:8;::::0;:26:::2;::::0;;-1:-1:-1;;;18497:26:73;;;;18467:27:::2;::::0;-1:-1:-1;;;;;18497:8:73::2;::::0;-1:-1:-1;;18497:26:73::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18467:56;;18533:17;18553:10;-1:-1:-1::0;;;;;18553:21:73::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18533:43;;18587:49;18639:124;;;;;;;;18678:7;-1:-1:-1::0;;;;;18639:124:73::2;;;;;18699:10;18639:124;;;;18723:6;18639:124;;;;18743:10;18639:124;;;;;;;;:::i;:::-;::::0;;18787:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;18787:26:73;;;;18587:176;;-1:-1:-1;18774:10:73::2;::::0;-1:-1:-1;;;;;18787:8:73;;::::2;::::0;:24:::2;::::0;:26:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18787:39:73::2;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:81;::::0;-1:-1:-1;;;18787:81:73;;-1:-1:-1;;;;;16898:32:93;;;18787:81:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;18787:52:73;;;::::2;::::0;::::2;::::0;16853:18:93;;18787:81:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18774:94:::0;-1:-1:-1;18879:12:73::2;-1:-1:-1::0;;;;;18894:19:73;::::2;;18927:10:::0;18965:31:::2;18951:10:::0;:45;;::::2;;;;;;:::i;:::-;;:254;;19071:5;:134;;19167:38;18951:254;;19071:134;19100:42;18951:254;;;19015:37;18951:254;18894:321;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19226:8;::::0;19271:74:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;19271:74:73;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;18879:336;;-1:-1:-1;19226:8:73::2;::::0;:31:::2;::::0;19271:74;;;19334:10;19271:74:::2;::::0;::::2;;;;;;:::i;:::-;;;::::0;19359:7:::2;19226:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;;;;;;19387:28:73;::::2;::::0;-1:-1:-1;19387:28:73::2;19416:16:::0;19434:13:::2;:11;:13::i;:::-;19387:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19463:66:73::2;::::0;;39959:25:93;;;40015:2;40000:18;;39993:34;;;19513:15:73::2;40043:18:93::0;;;40036:34;19463:66:73;;-1:-1:-1;;;;;19463:66:73;::::2;::::0;-1:-1:-1;19463:66:73::2;::::0;-1:-1:-1;19463:66:73;;;;39947:2:93;19463:66:73;;::::2;19540:62;::::0;-1:-1:-1;;;19540:62:73;;-1:-1:-1;;;;;19540:18:73;::::2;::::0;-1:-1:-1;;19566:9:73::2;::::0;19540:62:::2;::::0;19577:7;;19586:15;;;;19540:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;17108:2501;;;;;;16871:2738:::0;;;;;;:::o;3155:238::-;3279:19:18;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:18;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:18;1713:19:31;:23;;;3387:66:18;;-1:-1:-1;3436:12:18;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:18;;24455:2:93;3325:201:18;;;24437:21:93;24494:2;24474:18;;;24467:30;24533:34;24513:18;;;24506:62;-1:-1:-1;;;24584:18:93;;;24577:44;24638:19;;3325:201:18;24253:410:93;3325:201:18;3536:12;:16;;-1:-1:-1;;3536:16:18;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:18;;;;;3562:65;3245:8:73::1;:37:::0;;-1:-1:-1;;;;;3245:37:73;;::::1;-1:-1:-1::0;;;;;;3245:37:73;;::::1;;::::0;;;3292:9:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3358:1:::1;3336:19;:23:::0;3369:17:::1;:15;:17::i;:::-;3651:14:18::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:18;;;3721:14;;-1:-1:-1;20194:36:93;;3721:14:18;;20182:2:93;20167:18;3721:14:18;;;;;;;3647:99;3269:483;3155:238:73;;:::o;3986:183::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;-1:-1:-1;;;;;4073:21:73;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;:35;;-1:-1:-1;;4073:35:73::1;::::0;::::1;;::::0;;::::1;::::0;;;4123:39;;16278:51:93;;;16345:18;;;16338:50;4123:39:73;;::::1;::::0;;;;;;;;::::1;3986:183:::0;;:::o;3799:59::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3843:8:::1;:6;:8::i;607:695:67:-:0;-1:-1:-1;;;;;732:19:67;;;;;;;:11;:19;;;;;;700:12;;732:19;755:10;732:33;724:67;;;;-1:-1:-1;;;724:67:67;;21697:2:93;724:67:67;;;21679:21:93;21736:2;21716:18;;;21709:30;-1:-1:-1;;;21755:18:93;;;21748:51;21816:18;;724:67:67;21495:345:93;724:67:67;802:14;:23;;-1:-1:-1;;;;;;802:23:67;-1:-1:-1;;;;;802:23:67;;;;;873:37;;-1:-1:-1;;;;881:4:67;;873:37;;900:9;;;;873:37;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:75;;;;925:7;920:314;;1080:2;1064:6;:13;:18;1060:32;;;1084:8;;;1060:32;1155:4;1147:6;1143:17;1133:27;;1205:6;1194:28;;;;;;;;;;;;:::i;:::-;1187:36;;-1:-1:-1;;;1187:36:67;;;;;;;;:::i;920:314::-;1244:14;:27;;-1:-1:-1;;;;;;1244:27:67;;;1289:6;;-1:-1:-1;;;;;607:695:67:o;4175:164:73:-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;-1:-1:-1;;;;;4262:23:73;::::1;4254:48;;;::::0;-1:-1:-1;;;4254:48:73;;24114:2:93;4254:48:73::1;::::0;::::1;24096:21:93::0;24153:2;24133:18;;;24126:30;-1:-1:-1;;;24172:18:93;;;24165:42;24224:18;;4254:48:73::1;23912:336:93::0;4254:48:73::1;4312:8;:20:::0;;-1:-1:-1;;;;;;4312:20:73::1;-1:-1:-1::0;;;;;4312:20:73;;;::::1;::::0;;;::::1;::::0;;4175:164::o;15250:563::-;1482:19:19;:17;:19::i;:::-;15385:8:73::1;::::0;15343:39:::1;::::0;-1:-1:-1;;;;;15385:8:73::1;:26;15412:13;:11;:13::i;:::-;15385:61;::::0;-1:-1:-1;;;;;;15385:61:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;15385:61:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;15385:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15343:103;;15490:19;;15479:1;:7;;;15464:12;:22;;;;:::i;:::-;:45;;15456:72;;;::::0;-1:-1:-1;;;15456:72:73;;23086:2:93;15456:72:73::1;::::0;::::1;23068:21:93::0;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;15456:72:73::1;22884:338:93::0;15456:72:73::1;15539:8;::::0;-1:-1:-1;;;;;15539:8:73::1;:21;:8:::0;15580:13:::1;:11;:13::i;:::-;15612:1;:14;;;15595:1;:14;;;:31;;;;:::i;:::-;15539:88;::::0;;-1:-1:-1;15539:88:73;;;-1:-1:-1;;;;;;15539:88:73;;;-1:-1:-1;;;;;15988:15:93;;;15539:88:73::1;::::0;::::1;15970:34:93::0;16040:15;;;;16020:18;;;16013:43;16072:18;;;16065:34;15539:88:73;;15905:18:93;;;;;-1:-1:-1;;15539:88:73;;;;;;;-1:-1:-1;15539:88:73;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15637:8:73::1;::::0;-1:-1:-1;;;;;15637:8:73::1;::::0;-1:-1:-1;15637:33:73::1;::::0;-1:-1:-1;15671:13:73::1;:11;:13::i;:::-;15637:68;::::0;-1:-1:-1;;;;;;15637:68:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;15637:68:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;15637:68:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15739:13;:11;:13::i;:::-;15791:14;::::0;;::::1;::::0;15721:85:::1;::::0;;40312:25:93;;;40368:2;40353:18;;40346:34;;;15774:15:73::1;40396:18:93::0;;;40389:34;40439:18;;;40432:34;;;;15721:85:73;-1:-1:-1;;;;;15721:85:73;;;::::1;::::0;::::1;::::0;;;;40299:3:93;15721:85:73;;::::1;15333:480;15250:563:::0;;:::o;13638:287::-;2861:10;2850:22;;;;:10;:22;;;;;;;;2842:48;;;;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73;;;27995:21:93;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73;27811:337:93;2842:48:73;13778:6:::1;13774:145;13790:17:::0;;::::1;13774:145;;;13827:8;::::0;:26:::1;::::0;;-1:-1:-1;;;13827:26:73;;;;-1:-1:-1;;;;;13827:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13827:34:73::1;;13869:9;13880:7:::0;;13888:1;13880:10;;::::1;;;;;:::i;:::-;;;;;;;13892:15;;13827:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13809:3;;;;;:::i;:::-;;;;13774:145;;;;13638:287:::0;;;;:::o;19705:132::-;2861:10;2850:22;;;;:10;:22;;;;;;;;2842:48;;;;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73;;;27995:21:93;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73;27811:337:93;2842:48:73;19783:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;19783:47:73;;::::1;::::0;::::1;34140:25:93::0;;;-1:-1:-1;;;;;19783:8:73;;::::1;::::0;:42:::1;::::0;34113:18:93;;19783:47:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14224:862:::0;1482:19:19;:17;:19::i;:::-;14464:8:73::1;::::0;14422:39:::1;::::0;-1:-1:-1;;;;;14464:8:73::1;:26;14491:13;:11;:13::i;:::-;14464:61;::::0;-1:-1:-1;;;;;;14464:61:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;14464:61:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;14464:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14422:103;;14569:19;;14558:1;:7;;;14543:12;:22;;;;:::i;:::-;:45;;14535:72;;;::::0;-1:-1:-1;;;14535:72:73;;23086:2:93;14535:72:73::1;::::0;::::1;23068:21:93::0;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;14535:72:73::1;22884:338:93::0;14535:72:73::1;14626:8:::0;;;:49:::1;;;14639:1;:5;;;:35;;14671:3;14662:6;:12;14639:35;;;14656:3;14647:6;:12;14639:35;14618:70;;;::::0;-1:-1:-1;;;14618:70:73;;24870:2:93;14618:70:73::1;::::0;::::1;24852:21:93::0;24909:1;24889:18;;;24882:29;-1:-1:-1;;;24927:18:93;;;24920:38;24975:18;;14618:70:73::1;24668:331:93::0;14618:70:73::1;14706:8:::0;;;:49:::1;;;14719:1;:5;;;:35;;14751:3;14742:6;:12;14719:35;;;14736:3;14727:6;:12;14719:35;14698:70;;;::::0;-1:-1:-1;;;14698:70:73;;25540:2:93;14698:70:73::1;::::0;::::1;25522:21:93::0;25579:1;25559:18;;;25552:29;-1:-1:-1;;;25597:18:93;;;25590:38;25645:18;;14698:70:73::1;25338:331:93::0;14698:70:73::1;605:12;14786:10;:26;14778:55;;;::::0;-1:-1:-1;;;14778:55:73;;21016:2:93;14778:55:73::1;::::0;::::1;20998:21:93::0;21055:2;21035:18;;;21028:30;-1:-1:-1;;;21074:18:93;;;21067:46;21130:18;;14778:55:73::1;20814:340:93::0;14778:55:73::1;14844:7;::::0;::::1;:16:::0;;;14870:11:::1;::::0;::::1;:24:::0;;;14904:4:::1;::::0;::::1;:10:::0;;;14924:4:::1;::::0;::::1;:10:::0;;;14945:8:::1;::::0;-1:-1:-1;14945:32:73;-1:-1:-1;;;14945:32:73;;-1:-1:-1;;;;;14945:8:73;;::::1;::::0;:29:::1;::::0;:32:::1;::::0;14844:7;;14945:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15010:13;:11;:13::i;:::-;14993:86;::::0;;41232:25:93;;;41288:2;41273:18;;41266:34;;;41316:18;;;41309:34;;;41374:2;41359:18;;41352:34;;;41417:3;41402:19;;41395:35;;;15063:15:73::1;41461:3:93::0;41446:19;;41439:35;14993:86:73;;-1:-1:-1;;;;;14993:86:73;;;::::1;::::0;::::1;::::0;;;;41219:3:93;14993:86:73;;::::1;14412:674;14224:862:::0;;;;;;:::o;4685:2228::-;4904:12;1482:19:19;:17;:19::i;:::-;4957:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;4957:26:73;;;;4927:27:::1;::::0;-1:-1:-1;;;;;4957:8:73::1;::::0;-1:-1:-1;;4957:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5027:8;::::0;4927:56;;-1:-1:-1;4994:30:73::1;::::0;-1:-1:-1;;;;;5027:8:73::1;:19;5047:13;:11;:13::i;:::-;5027:54;::::0;-1:-1:-1;;;;;;5027:54:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;5027:54:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;5027:54:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5128:8;::::0;4994:87;;-1:-1:-1;5091:34:73::1;::::0;-1:-1:-1;;;;;5128:8:73::1;:23;5152:13;:11;:13::i;:::-;5128:58;::::0;-1:-1:-1;;;;;;5128:58:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;5128:58:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;5128:58:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5091:95;;5206:1;:19;;;5205:20;5197:53;;;::::0;-1:-1:-1;;;5197:53:73;;29106:2:93;5197:53:73::1;::::0;::::1;29088:21:93::0;29145:2;29125:18;;;29118:30;-1:-1:-1;;;29164:18:93;;;29157:50;29224:18;;5197:53:73::1;28904:344:93::0;5197:53:73::1;5281:1;5268;:10;;;:14;5260:35;;;::::0;-1:-1:-1;;;5260:35:73;;21361:2:93;5260:35:73::1;::::0;::::1;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;5260:35:73::1;21159:331:93::0;5260:35:73::1;5324:9;::::0;5367:8;;5389:11:::1;::::0;::::1;::::0;5414:7:::1;::::0;;::::1;::::0;5435:5:::1;::::0;::::1;::::0;5454:17:::1;::::0;::::1;::::0;5485:10:::1;::::0;::::1;::::0;5324:181;;-1:-1:-1;;;5324:181:73;;-1:-1:-1;;;;;17327:32:93;;;5324:181:73::1;::::0;::::1;17309:51:93::0;17376:18;;;17369:34;;;;17419:18;;;17412:34;;;;17489:14;17482:22;17462:18;;;17455:50;17521:19;;;17514:35;17565:19;;;17558:35;5306:15:73::1;::::0;5324:9;;;::::1;::::0;:29:::1;::::0;17281:19:93;;5324:181:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5526:73;::::0;-1:-1:-1;;;5526:73:73;;5306:199;;-1:-1:-1;;;;;;5526:19:73;::::1;::::0;::::1;::::0;:73:::1;::::0;5546:10;;5558:40:::1;::::0;5526:73;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5516:83;;5609:10;-1:-1:-1::0;;;;;5609:40:73::1;;5663:7;5684:129;;;;;;;;5721:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;5684:129:73::1;;;;;5736:10;5684:129;;;;5748:6;5684:129;;;;5756:5;5684:129;;;;;;;;:::i;:::-;;;;;5763:7;5684:129;;;;5772:1;:16;;;5684:129;;;;5790:10;5684:129;;;;5802:1;:10;;;5684:129;;::::0;5609:214:::1;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5868:158;5903:1;:18;;;5935:1;:17;;;5966:5;5985:7;6006:10;5868:21;:158::i;:::-;5847:17;::::0;::::1;5834:192:::0;5835:10:::1;::::0;::::1;5834:192:::0;6050:8:::1;::::0;:26:::1;::::0;;-1:-1:-1;;;6050:26:73;;;;-1:-1:-1;;;;;;;6050:8:73::1;::::0;-1:-1:-1;;6050:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6050:39:73::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6050:52:73::1;;6103:13;:11;:13::i;:::-;6050:87;::::0;-1:-1:-1;;;;;;6050:87:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;6050:87:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;6050:87:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6037:100;;6151:5;:55;;;;-1:-1:-1::0;6170:35:73::1;6161:5;:44;;;;;;;;:::i;:::-;;6151:55;6148:81;;;6208:21;::::0;-1:-1:-1;;;6208:21:73;;23774:2:93;6208:21:73::1;::::0;::::1;23756::93::0;23813:2;23793:18;;;23786:30;-1:-1:-1;;;23832:18:93;;;23825:41;23883:18;;6208:21:73::1;23572:335:93::0;6148:81:73::1;6273:1;6260;:10;;;:14;:109;;;;;6308:10;-1:-1:-1::0;;;;;6308:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6350:11;::::0;::::1;::::0;6308:61:::1;::::0;-1:-1:-1;;;6308:61:73;;::::1;::::0;::::1;35610:25:93::0;;;;35678:14;;35671:22;35651:18;;;35644:50;-1:-1:-1;;;;;6308:41:73;;;::::1;::::0;::::1;::::0;35583:18:93;;6308:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6294:1;:10;;;:75;;6260:109;:204;;;;;6403:10;-1:-1:-1::0;;;;;6403:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6445:11;::::0;::::1;::::0;6403:61:::1;::::0;-1:-1:-1;;;6403:61:73;;::::1;::::0;::::1;35610:25:93::0;;;;35678:14;;35671:22;35651:18;;;35644:50;-1:-1:-1;;;;;6403:41:73;;;::::1;::::0;::::1;::::0;35583:18:93;;6403:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6389:1;:10;;;:75;;6260:204;6239:269;;;::::0;-1:-1:-1;;;6239:269:73;;22389:2:93;6239:269:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;6239:269:73::1;22187:342:93::0;6239:269:73::1;6551:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6524:218:73::1;;6579:10;6604:6;6625:5;6645:1;6661:10;6686:1;:16;;;6717:15;6524:218;;;;;;;;;;;;:::i;:::-;;;;;;;;6765:8;::::0;:23:::1;::::0;-1:-1:-1;;;6765:23:73;;-1:-1:-1;;;;;6765:8:73;;::::1;::::0;-1:-1:-1;;6765:23:73::1;::::0;6786:1;;6765:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6798:62:73::1;::::0;-1:-1:-1;;;6798:62:73;;-1:-1:-1;;;;;6798:18:73;::::1;::::0;-1:-1:-1;;;;6824:9:73::1;::::0;6798:62:::1;::::0;6835:7;;6844:15;;;;6798:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;6871:35;6881:10;6893:6;6901:1;:4;;;6871:9;:35::i;:::-;4917:1996;;;;;4685:2228:::0;;;;;;;;:::o;1308:197:67:-;1375:14;;1352:7;;-1:-1:-1;;;;;1375:14:67;1371:128;;-1:-1:-1;1426:10:67;;1308:197::o;1371:128::-;-1:-1:-1;1474:14:67;;-1:-1:-1;;;;;1474:14:67;;1308:197::o;3532:210:73:-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3623:1:::1;3613:7;:11;3605:31;;;::::0;-1:-1:-1;;;3605:31:73;;31152:2:93;3605:31:73::1;::::0;::::1;31134:21:93::0;31191:1;31171:18;;;31164:29;-1:-1:-1;;;31209:18:93;;;31202:37;31256:18;;3605:31:73::1;30950:330:93::0;3605:31:73::1;3646:19;:29:::0;;;3690:45:::1;::::0;;26585:21:93;;;26642:2;26622:18;;;26615:30;-1:-1:-1;;;26676:2:93;26661:18;;26654:49;26770:4;26755:20;;26748:36;;;3690:45:73;;::::1;::::0;;;;26735:3:93;3690:45:73;;::::1;3532:210:::0;:::o;2010:106:19:-;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:19;;23429:2:93;2071:38:19;;;23411:21:93;23468:2;23448:18;;;23441:30;-1:-1:-1;;;23487:18:93;;;23480:46;23543:18;;2071:38:19;23227:340:93;20071:648:73;20168:8;;20152:13;;-1:-1:-1;;;;;20168:8:73;:19;20188:13;:11;:13::i;:::-;20168:54;;-1:-1:-1;;;;;;20168:54:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;20168:54:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;20168:54:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;20262:8;;20168:63;;-1:-1:-1;20241:18:73;;-1:-1:-1;;;;;20262:8:73;:23;20286:13;:11;:13::i;:::-;20262:58;;-1:-1:-1;;;;;;20262:58:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;20262:58:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;20262:58:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;20241:93;;20364:1;20353:8;:12;20345:33;;;;-1:-1:-1;;;20345:33:73;;21361:2:93;20345:33:73;;;21343:21:93;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;20345:33:73;21159:331:93;20345:33:73;20428:19;;20396:28;20411:13;20396:12;:28;:::i;:::-;:51;;20388:78;;;;-1:-1:-1;;;20388:78:73;;23086:2:93;20388:78:73;;;23068:21:93;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;20388:78:73;22884:338:93;20388:78:73;-1:-1:-1;;;;;20484:31:73;;20476:56;;;;-1:-1:-1;;;20476:56:73;;30811:2:93;20476:56:73;;;30793:21:93;30850:2;30830:18;;;30823:30;-1:-1:-1;;;30869:18:93;;;30862:42;30921:18;;20476:56:73;30609:336:93;20476:56:73;20562:8;;20543:16;;-1:-1:-1;;;;;20562:8:73;:17;20580:13;:11;:13::i;:::-;20562:60;;;-1:-1:-1;20562:60:73;;;-1:-1:-1;;;;;;20562:60:73;;;-1:-1:-1;;;;;18346:32:93;;;;20562:60:73;;;18328:51:93;18395:18;;;18388:34;;;18438:18;;;18431:34;;;18481:18;;;18474:34;;;20562:60:73;18300:19:93;;;;;20562:60:73;;;;;;;;;-1:-1:-1;20562:60:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20543:79;;20648:13;:11;:13::i;:::-;20638:74;;;40312:25:93;;;40368:2;40353:18;;40346:34;;;40396:18;;;40389:34;;;20696:15:73;40454:2:93;40439:18;;40432:34;20638:74:73;;-1:-1:-1;;;;;20638:74:73;;;;;;;;;;40299:3:93;20638:74:73;;;20142:577;;;20071:648;;;:::o;20992:1581::-;21140:8;;21107:30;;-1:-1:-1;;;;;21140:8:73;:19;21160:13;:11;:13::i;:::-;21140:54;;-1:-1:-1;;;;;;21140:54:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;21140:54:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;21140:54:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21225:8;;21107:87;;-1:-1:-1;21204:18:73;;-1:-1:-1;;;;;21225:8:73;:23;21249:13;:11;:13::i;:::-;21225:58;;-1:-1:-1;;;;;;21225:58:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;21225:58:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;21225:58:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;21204:93;;21329:1;21316;:10;;;:14;21308:35;;;;-1:-1:-1;;;21308:35:73;;21361:2:93;21308:35:73;;;21343:21:93;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;21308:35:73;21159:331:93;21308:35:73;-1:-1:-1;;;;;21361:31:73;;21353:56;;;;-1:-1:-1;;;21353:56:73;;29791:2:93;21353:56:73;;;29773:21:93;29830:2;29810:18;;;29803:30;-1:-1:-1;;;29849:18:93;;;29842:42;29901:18;;21353:56:73;29589:336:93;21353:56:73;21420:14;21437:49;21475:1;:10;;;21466:3;548:2;21439:1;:11;;;:23;;;;:::i;:::-;21438:31;;;;:::i;:::-;21437:37;;:49::i;:::-;21420:66;-1:-1:-1;21517:11:73;;;:94;;;21533:1;:5;;;:77;;21601:9;21587:1;:11;;;:23;;;;:::i;:::-;21577:6;:33;;21533:77;;;21565:9;21551:1;:11;;;:23;;;;:::i;:::-;21541:6;:33;;21533:77;21496:151;;;;-1:-1:-1;;;21496:151:73;;28767:2:93;21496:151:73;;;28749:21:93;28806:2;28786:18;;;28779:30;-1:-1:-1;;;28825:18:93;;;28818:40;28875:18;;21496:151:73;28565:334:93;21496:151:73;21698:19;;21666:28;21681:13;21666:12;:28;:::i;:::-;:51;;21658:78;;;;-1:-1:-1;;;21658:78:73;;23086:2:93;21658:78:73;;;23068:21:93;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;21658:78:73;22884:338:93;21658:78:73;21777:8;;:26;;;-1:-1:-1;;;21777:26:73;;;;21747:27;;-1:-1:-1;;;;;21777:8:73;;-1:-1:-1;;21777:26:73;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21747:56;-1:-1:-1;21818:11:73;;;:73;;;21834:10;-1:-1:-1;;;;;21834:23:73;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;-1:-1:-1;;;21834:57:73;;;;;34140:25:93;;;-1:-1:-1;;;;;21834:45:73;;;;;;;34113:18:93;;21834:57:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21833:58;21818:73;21814:753;;;21907:8;;-1:-1:-1;;;;;21907:8:73;:17;21925:13;:11;:13::i;:::-;21907:60;;;-1:-1:-1;21907:60:73;;;-1:-1:-1;;;;;;21907:60:73;;;-1:-1:-1;;;;;18346:32:93;;;;21907:60:73;;;18328:51:93;18395:18;;;18388:34;;;18438:18;;;18431:34;;;18481:18;;;18474:34;;;21907:60:73;18300:19:93;;;;;-1:-1:-1;;21907:60:73;;;;;;;-1:-1:-1;21907:60:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21996:13;:11;:13::i;:::-;21986:69;;;40312:25:93;;;40368:2;40353:18;;40346:34;;;40396:18;;;40389:34;;;22039:15:73;40454:2:93;40439:18;;40432:34;21986:69:73;;-1:-1:-1;;;;;21986:69:73;;;;;;;;;;40299:3:93;21986:69:73;;;21814:753;;;22114:69;;-1:-1:-1;;;22114:69:73;;22099:12;;-1:-1:-1;;;;;22114:19:73;;;;;:69;;22134:10;;22146:36;;22114:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22099:84;;22197:10;-1:-1:-1;;;;;22197:30:73;;22245:7;22270:89;;;;;;;;22297:13;:11;:13::i;:::-;-1:-1:-1;;;;;22270:89:73;;;;;22312:10;22270:89;;;;22324:6;22270:89;;;;22332:1;:11;;;22270:89;;;;22345:1;:5;;;22270:89;;;;;;22352:6;22270:89;;;22197:176;;;;;;;;;;;;;;;37537:4:93;37579:3;37568:9;37564:19;37556:27;;37610:6;37599:9;37592:25;37689:1;37685;37680:3;37676:11;37672:19;37663:6;37657:13;37653:39;37648:2;37637:9;37633:18;37626:67;37747:2;37739:6;37735:15;37729:22;37724:2;37713:9;37709:18;37702:50;37806:2;37798:6;37794:15;37788:22;37783:2;37772:9;37768:18;37761:50;37866:2;37858:6;37854:15;37848:22;37842:3;37831:9;37827:19;37820:51;37940:3;37932:6;37928:16;37922:23;37915:31;37908:39;37902:3;37891:9;37887:19;37880:68;38003:3;37995:6;37991:16;37985:23;37979:3;37968:9;37964:19;37957:52;37361:654;;;;;;22197:176:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22411:13;:11;:13::i;:::-;22393:86;;;40736:25:93;;;40792:2;40777:18;;40770:34;;;40820:18;;;40813:34;;;40878:2;40863:18;;40856:34;;;22463:15:73;40921:3:93;40906:19;;40899:35;22393:86:73;;-1:-1:-1;;;;;22393:86:73;;;;;;;;;;-1:-1:-1;22393:86:73;;;22494:62;;-1:-1:-1;;;22494:62:73;;-1:-1:-1;;;;;22494:18:73;;;-1:-1:-1;;22520:9:73;;22494:62;;22531:7;;22540:15;;;;22494:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22072:495;21814:753;21097:1476;;;;20992:1581;;;;;:::o;130:127:90:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;2676:117:19:-;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:19::1;::::0;;2764:22:::1;929:10:32::0;2773:12:19::1;2764:22;::::0;;-1:-1:-1;;;;;15686:32:93;;;;15668:51;;2764:22:19;;;;;15656:2:93;2764:22:19;;::::1;2676:117::o:0;1063:97::-;5374:13:18;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:18;;;;;;;:::i;:::-;1126:27:19::1;:25;:27::i;2429:115::-:0;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:19::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:32::0;;850:96;22943:667:73;23155:16;;;23203:5;:43;;;;;;;;:::i;:::-;;23199:405;;;23308:5;23274:31;23295:10;23274:18;:31;:::i;:::-;:39;;;;:::i;:::-;23262:51;-1:-1:-1;23262:51:73;23342:30;504:4;23342:17;:30;:::i;:::-;23341:46;;;;:::i;:::-;23327:60;;23199:405;;;23417:35;23408:5;:44;;;;;;;;:::i;:::-;;23404:200;;;23514:5;23480:31;23501:10;23480:18;:31;:::i;:::-;:39;;;;:::i;:::-;23468:51;-1:-1:-1;23468:51:73;23548:30;504:4;23548:17;:30;:::i;:::-;23547:46;;;;:::i;:::-;23533:60;;23404:200;22943:667;;;;;;;;:::o;263:127:90:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;2188:106:19:-;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:19;;20667:2:93;2246:41:19;;;20649:21:93;20706:2;20686:18;;;20679:30;-1:-1:-1;;;20725:18:93;;;20718:50;20785:18;;2246:41:19;20465:344:93;1166:95:19;5374:13:18;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:18;;;;;;;:::i;:::-;1239:7:19::1;:15:::0;;-1:-1:-1;;1239:15:19::1;::::0;;1166:95::o;14:138:93:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:374::-;227:8;237:6;291:3;284:4;276:6;272:17;268:27;258:55;;309:1;306;299:12;258:55;-1:-1:-1;332:20:93;;375:18;364:30;;361:50;;;407:1;404;397:12;361:50;444:4;436:6;432:17;420:29;;504:3;497:4;487:6;484:1;480:14;472:6;468:27;464:38;461:47;458:67;;;521:1;518;511:12;458:67;157:374;;;;;:::o;536:132::-;612:13;;634:28;612:13;634:28;:::i;673:247::-;732:6;785:2;773:9;764:7;760:23;756:32;753:52;;;801:1;798;791:12;753:52;840:9;827:23;859:31;884:5;859:31;:::i;:::-;909:5;673:247;-1:-1:-1;;;673:247:93:o;925:251::-;995:6;1048:2;1036:9;1027:7;1023:23;1019:32;1016:52;;;1064:1;1061;1054:12;1016:52;1096:9;1090:16;1115:31;1140:5;1115:31;:::i;1181:388::-;1249:6;1257;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;1365:9;1352:23;1384:31;1409:5;1384:31;:::i;:::-;1434:5;-1:-1:-1;1491:2:93;1476:18;;1463:32;1504:33;1463:32;1504:33;:::i;:::-;1556:7;1546:17;;;1181:388;;;;;:::o;1574:382::-;1639:6;1647;1700:2;1688:9;1679:7;1675:23;1671:32;1668:52;;;1716:1;1713;1706:12;1668:52;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:93;1866:18;;1853:32;1894:30;1853:32;1894:30;:::i;1961:726::-;2040:6;2048;2056;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;2164:9;2151:23;2183:31;2208:5;2183:31;:::i;:::-;2233:5;-1:-1:-1;2289:2:93;2274:18;;2261:32;2312:18;2342:14;;;2339:34;;;2369:1;2366;2359:12;2339:34;2407:6;2396:9;2392:22;2382:32;;2452:7;2445:4;2441:2;2437:13;2433:27;2423:55;;2474:1;2471;2464:12;2423:55;2514:2;2501:16;2540:2;2532:6;2529:14;2526:34;;;2556:1;2553;2546:12;2526:34;2601:7;2596:2;2587:6;2583:2;2579:15;2575:24;2572:37;2569:57;;;2622:1;2619;2612:12;2569:57;2653:2;2649;2645:11;2635:21;;2675:6;2665:16;;;;;1961:726;;;;;:::o;2692:798::-;2825:6;2833;2841;2849;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2958:9;2945:23;2987:18;3028:2;3020:6;3017:14;3014:34;;;3044:1;3041;3034:12;3014:34;3083:77;3152:7;3143:6;3132:9;3128:22;3083:77;:::i;:::-;3179:8;;-1:-1:-1;3057:103:93;-1:-1:-1;3267:2:93;3252:18;;3239:32;;-1:-1:-1;3283:16:93;;;3280:36;;;3312:1;3309;3302:12;3280:36;;3351:79;3422:7;3411:8;3400:9;3396:24;3351:79;:::i;:::-;2692:798;;;;-1:-1:-1;3449:8:93;-1:-1:-1;;;;2692:798:93:o;3495:241::-;3551:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3659:9;3646:23;3678:28;3700:5;3678:28;:::i;3741:245::-;3808:6;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3909:9;3903:16;3928:28;3950:5;3928:28;:::i;4825:893::-;4974:6;4982;4990;4998;5006;5014;5067:3;5055:9;5046:7;5042:23;5038:33;5035:53;;;5084:1;5081;5074:12;5035:53;5123:9;5110:23;5142:39;5175:5;5142:39;:::i;:::-;5200:5;-1:-1:-1;5257:2:93;5242:18;;5229:32;5270:33;5229:32;5270:33;:::i;:::-;5322:7;-1:-1:-1;5376:2:93;5361:18;;5348:32;;-1:-1:-1;5427:2:93;5412:18;;5399:32;;-1:-1:-1;5482:3:93;5467:19;;5454:33;5510:18;5499:30;;5496:50;;;5542:1;5539;5532:12;5496:50;5581:77;5650:7;5641:6;5630:9;5626:22;5581:77;:::i;:::-;4825:893;;;;-1:-1:-1;4825:893:93;;-1:-1:-1;4825:893:93;;5677:8;;4825:893;-1:-1:-1;;;4825:893:93:o;5723:884::-;5803:6;5856:2;5844:9;5835:7;5831:23;5827:32;5824:52;;;5872:1;5869;5862:12;5824:52;5905:9;5899:16;5934:18;5975:2;5967:6;5964:14;5961:34;;;5991:1;5988;5981:12;5961:34;6029:6;6018:9;6014:22;6004:32;;6074:7;6067:4;6063:2;6059:13;6055:27;6045:55;;6096:1;6093;6086:12;6045:55;6125:2;6119:9;6147:2;6143;6140:10;6137:36;;;6153:18;;:::i;:::-;6228:2;6222:9;6196:2;6282:13;;-1:-1:-1;;6278:22:93;;;6302:2;6274:31;6270:40;6258:53;;;6326:18;;;6346:22;;;6323:46;6320:72;;;6372:18;;:::i;:::-;6412:10;6408:2;6401:22;6447:2;6439:6;6432:18;6487:7;6482:2;6477;6473;6469:11;6465:20;6462:33;6459:53;;;6508:1;6505;6498:12;6459:53;6521:55;6573:2;6568;6560:6;6556:15;6551:2;6547;6543:11;6521:55;:::i;:::-;6595:6;5723:884;-1:-1:-1;;;;;;;5723:884:93:o;6612:1065::-;6715:6;6768:3;6756:9;6747:7;6743:23;6739:33;6736:53;;;6785:1;6782;6775:12;6736:53;6811:17;;:::i;:::-;6851:40;6881:9;6851:40;:::i;:::-;6844:5;6837:55;6945:2;6934:9;6930:18;6924:25;6919:2;6912:5;6908:14;6901:49;7003:2;6992:9;6988:18;6982:25;6977:2;6970:5;6966:14;6959:49;7061:2;7050:9;7046:18;7040:25;7035:2;7028:5;7024:14;7017:49;7099:47;7141:3;7130:9;7126:19;7099:47;:::i;:::-;7093:3;7082:15;;7075:72;7201:3;7186:19;;;7180:26;7163:15;;;7156:51;7261:3;7246:19;;;7240:26;7223:15;;;7216:51;7321:3;7306:19;;;7300:26;7283:15;;;7276:51;7346:3;7387:18;;;7381:25;7365:14;;;7358:49;7426:3;7467:18;;;7461:25;7445:14;;;7438:49;7506:3;7547:18;;;7541:25;7525:14;;;7518:49;7586:3;7627:18;;;7621:25;7605:14;;;7598:49;;;;-1:-1:-1;7086:5:93;6612:1065;-1:-1:-1;6612:1065:93:o;7682:749::-;7780:6;7833:3;7821:9;7812:7;7808:23;7804:33;7801:53;;;7850:1;7847;7840:12;7801:53;7883:2;7877:9;7925:3;7917:6;7913:16;7995:6;7983:10;7980:22;7959:18;7947:10;7944:34;7941:62;7938:88;;;8006:18;;:::i;:::-;8046:10;8042:2;8035:22;;8087:9;8081:16;8073:6;8066:32;8152:2;8141:9;8137:18;8131:25;8126:2;8118:6;8114:15;8107:50;8211:2;8200:9;8196:18;8190:25;8185:2;8177:6;8173:15;8166:50;8259:2;8248:9;8244:18;8238:25;8272:28;8294:5;8272:28;:::i;:::-;8328:2;8316:15;;8309:30;8394:3;8379:19;;;8373:26;8355:16;;;8348:52;;;;-1:-1:-1;8320:6:93;7682:749;-1:-1:-1;7682:749:93:o;8436:512::-;8563:6;8571;8579;8623:9;8614:7;8610:23;8653:3;8649:2;8645:12;8642:32;;;8670:1;8667;8660:12;8642:32;8693:3;8716:2;8712;8708:11;8705:31;;;8732:1;8729;8722:12;8705:31;8755:9;;-1:-1:-1;8799:18:93;;8786:32;;-1:-1:-1;8827:39:93;8786:32;8827:39;:::i;:::-;8436:512;;8885:5;;-1:-1:-1;;;8937:3:93;8922:19;;;;8909:33;;8436:512::o;8953:981::-;9047:6;9100:3;9088:9;9079:7;9075:23;9071:33;9068:53;;;9117:1;9114;9107:12;9068:53;9143:22;;:::i;:::-;9188:40;9218:9;9188:40;:::i;:::-;9181:5;9174:55;9282:2;9271:9;9267:18;9261:25;9256:2;9249:5;9245:14;9238:49;9340:2;9329:9;9325:18;9319:25;9314:2;9307:5;9303:14;9296:49;9398:2;9387:9;9383:18;9377:25;9372:2;9365:5;9361:14;9354:49;9457:3;9446:9;9442:19;9436:26;9430:3;9423:5;9419:15;9412:51;9517:3;9506:9;9502:19;9496:26;9490:3;9483:5;9479:15;9472:51;9556:47;9598:3;9587:9;9583:19;9556:47;:::i;:::-;9550:3;9539:15;;9532:72;9658:3;9643:19;;;9637:26;9620:15;;;9613:51;9683:3;9724:18;;;9718:25;9702:14;;;9695:49;9763:3;9804:18;;;9798:25;9782:14;;;9775:49;9843:3;9884:18;;;9878:25;9862:14;;;9855:49;;;;-1:-1:-1;9543:5:93;8953:981;-1:-1:-1;8953:981:93:o;9939:180::-;9998:6;10051:2;10039:9;10030:7;10026:23;10022:32;10019:52;;;10067:1;10064;10057:12;10019:52;-1:-1:-1;10090:23:93;;9939:180;-1:-1:-1;9939:180:93:o;10124:184::-;10194:6;10247:2;10235:9;10226:7;10222:23;10218:32;10215:52;;;10263:1;10260;10253:12;10215:52;-1:-1:-1;10286:16:93;;10124:184;-1:-1:-1;10124:184:93:o;10313:248::-;10381:6;10389;10442:2;10430:9;10421:7;10417:23;10413:32;10410:52;;;10458:1;10455;10448:12;10410:52;-1:-1:-1;;10481:23:93;;;10551:2;10536:18;;;10523:32;;-1:-1:-1;10313:248:93:o;10566:821::-;10715:6;10723;10731;10739;10747;10755;10808:3;10796:9;10787:7;10783:23;10779:33;10776:53;;;10825:1;10822;10815:12;10776:53;10861:9;10848:23;10838:33;;10918:2;10907:9;10903:18;10890:32;10880:42;;10972:2;10961:9;10957:18;10944:32;11005:1;10998:5;10995:12;10985:40;;11021:1;11018;11011:12;10985:40;11044:5;-1:-1:-1;11096:2:93;11081:18;;11068:32;;-1:-1:-1;11151:3:93;11136:19;;11123:33;11179:18;11168:30;;11165:50;;;11211:1;11208;11201:12;11392:316;11469:6;11477;11485;11538:2;11526:9;11517:7;11513:23;11509:32;11506:52;;;11554:1;11551;11544:12;11506:52;-1:-1:-1;;11577:23:93;;;11647:2;11632:18;;11619:32;;-1:-1:-1;11698:2:93;11683:18;;;11670:32;;11392:316;-1:-1:-1;11392:316:93:o;11713:729::-;11846:6;11854;11862;11870;11878;11886;11939:3;11927:9;11918:7;11914:23;11910:33;11907:53;;;11956:1;11953;11946:12;11907:53;11992:9;11979:23;11969:33;;12049:2;12038:9;12034:18;12021:32;12011:42;;12100:2;12089:9;12085:18;12072:32;12062:42;;12151:2;12140:9;12136:18;12123:32;12113:42;;12206:3;12195:9;12191:19;12178:33;12234:18;12226:6;12223:30;12220:50;;;12266:1;12263;12256:12;12447:523;12551:6;12559;12567;12575;12583;12591;12644:3;12632:9;12623:7;12619:23;12615:33;12612:53;;;12661:1;12658;12651:12;12612:53;-1:-1:-1;;12684:23:93;;;12754:2;12739:18;;12726:32;;-1:-1:-1;12805:2:93;12790:18;;12777:32;;12856:2;12841:18;;12828:32;;-1:-1:-1;12907:3:93;12892:19;;12879:33;;-1:-1:-1;12959:3:93;12944:19;12931:33;;-1:-1:-1;12447:523:93;-1:-1:-1;12447:523:93:o;13180:266::-;13268:6;13263:3;13256:19;13320:6;13313:5;13306:4;13301:3;13297:14;13284:43;-1:-1:-1;13372:1:93;13347:16;;;13365:4;13343:27;;;13336:38;;;;13428:2;13407:15;;;-1:-1:-1;;13403:29:93;13394:39;;;13390:50;;13180:266::o;13451:257::-;13492:3;13530:5;13524:12;13557:6;13552:3;13545:19;13573:63;13629:6;13622:4;13617:3;13613:14;13606:4;13599:5;13595:16;13573:63;:::i;:::-;13690:2;13669:15;-1:-1:-1;;13665:29:93;13656:39;;;;13697:4;13652:50;;13451:257;-1:-1:-1;;13451:257:93:o;13713:141::-;13795:1;13788:5;13785:12;13775:46;;13801:18;;:::i;:::-;13830;;13713:141::o;13859:392::-;13946:12;;-1:-1:-1;;;;;13942:38:93;13930:51;;14030:4;14019:16;;;14013:23;13997:14;;;13990:47;14086:4;14075:16;;;14069:23;14053:14;;;14046:47;14139:4;14128:16;;14122:23;14154:46;14122:23;14154:46;:::i;:::-;14232:12;14225:4;14220:3;14216:14;14209:36;;13859:392;;:::o;14256:775::-;14334:12;;-1:-1:-1;;;;;13041:31:93;13029:44;;14401:4;14394:5;14390:16;14384:23;14377:4;14372:3;14368:14;14361:47;14457:4;14450:5;14446:16;14440:23;14433:4;14428:3;14424:14;14417:47;14513:4;14506:5;14502:16;14496:23;14489:4;14484:3;14480:14;14473:47;14569:4;14562:5;14558:16;14552:23;14545:4;14540:3;14536:14;14529:47;14625:4;14618:5;14614:16;14608:23;14601:4;14596:3;14592:14;14585:47;14678:4;14671:5;14667:16;14661:23;14693:45;14732:4;14727:3;14723:14;14709:12;13154:13;13147:21;13135:34;;13084:91;14693:45;-1:-1:-1;14787:4:93;14776:16;;;14770:23;14754:14;;;14747:47;14813:6;14855:14;;;14849:21;14835:12;;;14828:43;14890:6;14932:14;;;14926:21;14912:12;;;14905:43;14967:6;15009:14;;;15003:21;14989:12;;14982:43;14256:775::o;15036:271::-;15219:6;15211;15206:3;15193:33;15175:3;15245:16;;15270:13;;;15245:16;15036:271;-1:-1:-1;15036:271:93:o;17604:488::-;-1:-1:-1;;;;;17875:32:93;;17857:51;;17939:2;17924:18;;17917:34;;;17982:2;17967:18;;17960:34;;;17844:3;17829:19;;18003:40;18036:6;18003:40;:::i;:::-;18079:6;18074:2;18063:9;18059:18;18052:34;17604:488;;;;;;;:::o;19359:217::-;19506:2;19495:9;19488:21;19469:4;19526:44;19566:2;19555:9;19551:18;19543:6;19526:44;:::i;28153:407::-;28355:2;28337:21;;;28394:2;28374:18;;;28367:30;28433:34;28428:2;28413:18;;28406:62;-1:-1:-1;;;28499:2:93;28484:18;;28477:41;28550:3;28535:19;;28153:407::o;31285:1090::-;31517:13;;-1:-1:-1;;;;;13041:31:93;13029:44;;31485:3;31470:19;;31598:4;31590:6;31586:17;31580:24;31573:4;31562:9;31558:20;31551:54;31661:4;31653:6;31649:17;31643:24;31636:4;31625:9;31621:20;31614:54;31724:4;31716:6;31712:17;31706:24;31699:4;31688:9;31684:20;31677:54;31778:4;31770:6;31766:17;31760:24;31793:51;31838:4;31827:9;31823:20;31809:12;13154:13;13147:21;13135:34;;13084:91;31793:51;;31900:4;31892:6;31888:17;31882:24;31875:4;31864:9;31860:20;31853:54;31963:4;31955:6;31951:17;31945:24;31938:4;31927:9;31923:20;31916:54;32026:4;32018:6;32014:17;32008:24;32001:4;31990:9;31986:20;31979:54;32052:6;32112:2;32104:6;32100:15;32094:22;32089:2;32078:9;32074:18;32067:50;;32136:6;32196:2;32188:6;32184:15;32178:22;32173:2;32162:9;32158:18;32151:50;;32220:6;32280:2;32272:6;32268:15;32262:22;32257:2;32246:9;32242:18;32235:50;;32304:6;32364:2;32356:6;32352:15;32346:22;32341:2;32330:9;32326:18;32319:50;;31285:1090;;;;:::o;32380:351::-;32614:3;32599:19;;32627:54;32603:9;32663:6;32627:54;:::i;:::-;32718:6;32712:3;32701:9;32697:19;32690:35;32380:351;;;;;:::o;32736:625::-;32952:4;32994:3;32983:9;32979:19;32971:27;;33007:49;33046:9;33037:6;33031:13;33007:49;:::i;:::-;33114:4;33102:17;;33096:24;33087:6;33072:22;;33065:56;33179:4;33167:17;;33161:24;33152:6;33137:22;;33130:56;33244:4;33232:17;;;33226:24;33217:6;33202:22;;33195:56;33282:3;33267:19;;33260:35;;;;33339:14;33332:22;33326:3;33311:19;;;33304:51;32736:625;:::o;33366:243::-;33548:3;33533:19;;33561:42;33537:9;33585:6;33561:42;:::i;33614:375::-;33846:3;33831:19;;33859:54;33835:9;33895:6;33859:54;:::i;:::-;-1:-1:-1;;;;;33950:32:93;;;;33944:3;33929:19;;;;33922:61;33950:32;33614:375;-1:-1:-1;33614:375:93:o;34176:1261::-;34376:4;34424:2;34413:9;34409:18;34454:6;34443:9;34436:25;34480:2;34518;34513;34502:9;34498:18;34491:30;34541:6;34571;34563;34556:22;34609:2;34598:9;34594:18;34587:25;;34671:2;34661:6;34658:1;34654:14;34643:9;34639:30;34635:39;34621:53;;34697:6;34721:1;34731:677;34745:6;34742:1;34739:13;34731:677;;;-1:-1:-1;;34810:22:93;;;34806:36;34794:49;;34882:20;;-1:-1:-1;;34957:14:93;34953:27;;;34949:41;34925:66;;34915:94;;35005:1;35002;34995:12;34915:94;35035:31;;35093:19;;35139:18;35128:30;;35125:50;;;35171:1;35168;35161:12;35125:50;35223:6;35207:14;35203:27;35195:6;35191:40;35188:60;;;35244:1;35241;35234:12;35188:60;35271:57;35321:6;35313;35308:2;35301:5;35297:14;35271:57;:::i;:::-;35261:67;-1:-1:-1;;;35386:12:93;;;;35351:15;;;;34767:1;34760:9;34731:677;;;-1:-1:-1;35425:6:93;;34176:1261;-1:-1:-1;;;;;;;;34176:1261:93:o;36193:317::-;36380:25;;;36368:2;36353:18;;36435:1;36424:13;;36414:47;;36441:18;;:::i;:::-;36497:6;36492:2;36481:9;36477:18;36470:34;36193:317;;;;;:::o;36515:841::-;36711:4;36753:3;36742:9;36738:19;36730:27;;36784:6;36773:9;36766:25;36863:1;36859;36854:3;36850:11;36846:19;36837:6;36831:13;36827:39;36822:2;36811:9;36807:18;36800:67;36921:2;36913:6;36909:15;36903:22;36898:2;36887:9;36883:18;36876:50;36980:2;36972:6;36968:15;36962:22;36957:2;36946:9;36942:18;36935:50;37032:2;37024:6;37020:15;37014:22;37045:61;37101:3;37090:9;37086:19;37072:12;37045:61;:::i;:::-;;37161:3;37153:6;37149:16;37143:23;37137:3;37126:9;37122:19;37115:52;37222:3;37214:6;37210:16;37204:23;37198:3;37187:9;37183:19;37176:52;37283:3;37275:6;37271:16;37265:23;37259:3;37248:9;37244:19;37237:52;37344:3;37336:6;37332:16;37326:23;37320:3;37309:9;37305:19;37298:52;36515:841;;;;;:::o;38273:768::-;38585:4;38627:3;38616:9;38612:19;38604:27;;38658:6;38647:9;38640:25;38701:6;38696:2;38685:9;38681:18;38674:34;38758:6;38751:14;38744:22;38739:2;38728:9;38724:18;38717:50;38803:6;38798:2;38787:9;38783:18;38776:34;38847:6;38841:3;38830:9;38826:19;38819:35;38863:40;38896:6;38863:40;:::i;:::-;38940:6;38934:3;38923:9;38919:19;38912:35;38984:6;38978:3;38967:9;38963:19;38956:35;39028:6;39022:3;39011:9;39007:19;39000:35;38273:768;;;;;;;;;;;:::o;39046:706::-;39423:25;;;39479:2;39464:18;;39457:34;;;39410:3;39395:19;;39500:54;39550:2;39535:18;;39527:6;39500:54;:::i;:::-;39563:51;39610:2;39599:9;39595:18;39587:6;39563:51;:::i;:::-;39651:6;39645:3;39634:9;39630:19;39623:35;39695:6;39689:3;39678:9;39674:19;39667:35;39739:6;39733:3;39722:9;39718:19;39711:35;39046:706;;;;;;;;;;:::o;41485:247::-;41552:2;41546:9;41594:3;41582:16;;41628:18;41613:34;;41649:22;;;41610:62;41607:88;;;41675:18;;:::i;:::-;41711:2;41704:22;41485:247;:::o;41737:252::-;41809:2;41803:9;41851:3;41839:16;;41885:18;41870:34;;41906:22;;;41867:62;41864:88;;;41932:18;;:::i;41994:128::-;42034:3;42065:1;42061:6;42058:1;42055:13;42052:39;;;42071:18;;:::i;:::-;-1:-1:-1;42107:9:93;;41994:128::o;42127:217::-;42167:1;42193;42183:132;;42237:10;42232:3;42228:20;42225:1;42218:31;42272:4;42269:1;42262:15;42300:4;42297:1;42290:15;42183:132;-1:-1:-1;42329:9:93;;42127:217::o;42349:168::-;42389:7;42455:1;42451;42447:6;42443:14;42440:1;42437:21;42432:1;42425:9;42418:17;42414:45;42411:71;;;42462:18;;:::i;:::-;-1:-1:-1;42502:9:93;;42349:168::o;42522:125::-;42562:4;42590:1;42587;42584:8;42581:34;;;42595:18;;:::i;:::-;-1:-1:-1;42632:9:93;;42522:125::o;42652:258::-;42724:1;42734:113;42748:6;42745:1;42742:13;42734:113;;;42824:11;;;42818:18;42805:11;;;42798:39;42770:2;42763:10;42734:113;;;42865:6;42862:1;42859:13;42856:48;;;42900:1;42891:6;42886:3;42882:16;42875:27;42856:48;;42652:258;;;:::o;42915:135::-;42954:3;-1:-1:-1;;42975:17:93;;42972:43;;;42995:18;;:::i;:::-;-1:-1:-1;43042:1:93;43031:13;;42915:135::o;43055:127::-;43116:10;43111:3;43107:20;43104:1;43097:31;43147:4;43144:1;43137:15;43171:4;43168:1;43161:15;43187:127;43248:10;43243:3;43239:20;43236:1;43229:31;43279:4;43276:1;43269:15;43303:4;43300:1;43293:15;43319:127;43380:10;43375:3;43371:20;43368:1;43361:31;43411:4;43408:1;43401:15;43435:4;43432:1;43425:15;43451:127;43512:10;43507:3;43503:20;43500:1;43493:31;43543:4;43540:1;43533:15;43567:4;43564:1;43557:15;43583:115;43666:1;43659:5;43656:12;43646:46;;43672:18;;:::i;:::-;43583:115;:::o;43703:131::-;-1:-1:-1;;;;;43778:31:93;;43768:42;;43758:70;;43824:1;43821;43814:12;43839:118;43925:5;43918:13;43911:21;43904:5;43901:32;43891:60;;43947:1;43944;43937:12;43962:109;44045:1;44038:5;44035:12;44025:40;;44061:1;44058;44051:12","linkReferences":{}},"methodIdentifiers":{"_MAX_SLIPPAGE()":"c48a02a2","__msgSender()":"d1a91ff2","cancelOpenLimitOrder(uint256,uint256)":"b9b6573a","cancelPendingMarketOrder(uint256)":"c5ed6a08","closeTradeMarket(uint256,uint256,uint256)":"2c3cbce4","delegatedAction(address,bytes)":"9a10cc32","delegations(address)":"bffe3486","executeLimitOrder(uint8,address,uint256,uint256,bytes[])":"46f6c8f5","executeMarketOrders(uint256[],bytes[])":"c0b4d24d","initialize(address,address)":"485cc955","isOperator(address)":"6d70f7ae","limitOrdersTimelock()":"0890d22a","openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":"19cde9a1","operator()":"570ca735","pairInfos()":"1346b0ff","pause()":"8456cb59","paused()":"5c975abb","removeDelegate()":"36fb8b15","setDelegate(address)":"ca5eb5e1","setLimitOrdersTimelock(uint256)":"d4a1caa7","setMarketExecFeeReciever(address)":"9e2033f5","storageT()":"16fff074","unpause()":"3f4ba83a","updateMargin(uint256,uint256,uint8,uint256,bytes[])":"cd90b8a4","updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":"c641558e","updateOperator(address,bool)":"6d44a3b2","updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":"15b760b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"newTrade\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtectionTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"MarketOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdateInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_MAX_SLIPPAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"__msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"cancelOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"cancelPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"call_data\",\"type\":\"bytes\"}],\"name\":\"delegatedAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"_orderType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeLimitOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"orderId\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeMarketOrders\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitOrdersTimelock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"}],\"name\":\"openTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blocks\",\"type\":\"uint256\"}],\"name\":\"setLimitOrdersTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reciever\",\"type\":\"address\"}],\"name\":\"setMarketExecFeeReciever\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_sl\",\"type\":\"uint256\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isOperator\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTP\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateTpAndSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\"}},\"closeTradeMarket(uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"The amount of collateral being closed\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\"}},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_orderType\":\"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\",\"_pairIndex\":\"The index of the trading pair\",\"_trader\":\"The address of the trader\",\"priceUpdateData\":\"Pyth price update data\"}},\"executeMarketOrders(uint256[],bytes[])\":{\"params\":{\"orderId\":\"The array of orderIDs\",\"priceUpdateData\":\"Pyth price update calldata\"}},\"initialize(address,address)\":{\"params\":{\"_pairInfos\":\"The address of the pair information contract\",\"_storageT\":\"The address of the storage contract\"}},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"params\":{\"_slippageP\":\"The slippage percentage\",\"_type\":\"Market or Limit or Stop Limit\",\"t\":\"The details of the trade to open\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"setLimitOrdersTimelock(uint256)\":{\"params\":{\"_blocks\":\"The new time-lock duration in blocks\"}},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"params\":{\"_amount\":\"The Collateral by which to update the margin\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\",\"_type\":\"Withdraw or Deposit\",\"priceUpdateData\":\"Pyth price update\"}},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\",\"_price\":\"The price level to set (_PRECISION)\",\"_sl\":\"The stop-loss price\",\"_tp\":\"The take-profit price\"}},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss price\",\"_newTP\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"notice\":\"Cancels an open limit order\"},\"cancelPendingMarketOrder(uint256)\":{\"notice\":\"FallBack method in case unregister is not working directly\"},\"closeTradeMarket(uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"notice\":\"Executes a limit order (either open or close). Callable by Operators\"},\"executeMarketOrders(uint256[],bytes[])\":{\"notice\":\"Operator intiated method to close pending market orders\"},\"initialize(address,address)\":{\"notice\":\"Initializes the proxy\"},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"notice\":\"Opens a new Market/Limit trade\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"setLimitOrdersTimelock(uint256)\":{\"notice\":\"Sets the time-lock for limit order updates\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"notice\":\"Updates(Deposit/Withdraw) the margin for an open trade\"},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Updates an open limit order\"},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the take-profit and stop-loss for a open Trade\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Trading.sol\":\"Trading\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/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-upgradeable/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/Delegatable.sol\":{\"keccak256\":\"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92\",\"dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu\"]},\"src/Trading.sol\":{\"keccak256\":\"0x055834c4b63922e05a572d875d440e569e24c315c8f9c99853b3bf6c463ed2e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66d74091b96c49192088b7439bcc923f4aed6e8c8dbd96427a2d2d19d87d3349\",\"dweb:/ipfs/QmPY1iQi89HmGbPafomQejuAn1hJowDbEFUfBcZ8Fn6aku\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x75f9d949112eb110d5a55ba4e6910ab3e094da8ff4decab3abd87d1e8dfe10c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2a3c7d7162b089643afd6923844284b5afff043009bb32c8bcab74f6990ea33\",\"dweb:/ipfs/QmSjbdEWJgzMcWC7jt2xW7Lg7SQ3cb5kEgR5qPCTKaVBH1\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a\",\"dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xb40cfb4b84674006b8d81737b304c84937c7a904b7ce847542258046ac6b35e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://906b01ce05d85dfae5728ced06d722da2f463fb29e63a8dff1ffa5c51deca8d3\",\"dweb:/ipfs/Qme5id3GWqjYEyboRqUTVN9afUjwckcbGcVdjbPZ6Q19BG\"]},\"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\":\"0xffb3e1f124ac66a6e3155eb5df38e4aa32a7756f13a165a9e13b730e90645b34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c1a5dff3972fdf6ffdd63bf348ae63e971a86695d46f66c7d4b04ccb42728f23\",\"dweb:/ipfs/QmSEDxJLhoUuoVL2VoCGwb7dz2ue26dEg3iCWXSVN4JDeL\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0x9b426519dd97fbd0861685bd6d668a1efdf30da680dacc3eca6f84960222b1c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be92c83448c444b53e040d1dc1c17fc6af7567cda448e1e8a32272dec6319dde\",\"dweb:/ipfs/QmcHQbxaw1XVtBwghs1f3qHBKmBDTrhdYWBm7tyNgFWxSz\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"newTrade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"uint256","name":"marginFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtectionTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false}],"type":"event","name":"MarketOrderInitiated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitCanceled","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false},{"internalType":"uint256","name":"openPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"executionFee","type":"uint256","indexed":false},{"internalType":"enum IExecute.OpenLimitOrderType","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"slippageP","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bool","name":"isOperator","type":"bool","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdateInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"TpUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"_MAX_SLIPPAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"__msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelPendingMarketOrder"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"closeTradeMarket","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"bytes","name":"call_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"delegatedAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegations","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum ITradingStorage.LimitOrder","name":"_orderType","type":"uint8"},{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeLimitOrder"},{"inputs":[{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeMarketOrders"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"limitOrdersTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"enum IExecute.OpenLimitOrderType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_slippageP","type":"uint256"}],"stateMutability":"payable","type":"function","name":"openTrade","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"removeDelegate"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegate"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrdersTimelock"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketExecFeeReciever"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateMargin","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_tp","type":"uint256"},{"internalType":"uint256","name":"_sl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_isOperator","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateOperator"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"uint256","name":"_newTP","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateTpAndSl"}],"devdoc":{"kind":"dev","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair"}},"closeTradeMarket(uint256,uint256,uint256)":{"params":{"_amount":"The amount of collateral being closed","_index":"The index of the trade","_pairIndex":"The index of the trading pair"}},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_orderType":"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)","_pairIndex":"The index of the trading pair","_trader":"The address of the trader","priceUpdateData":"Pyth price update data"}},"executeMarketOrders(uint256[],bytes[])":{"params":{"orderId":"The array of orderIDs","priceUpdateData":"Pyth price update calldata"}},"initialize(address,address)":{"params":{"_pairInfos":"The address of the pair information contract","_storageT":"The address of the storage contract"}},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"params":{"_slippageP":"The slippage percentage","_type":"Market or Limit or Stop Limit","t":"The details of the trade to open"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"setLimitOrdersTimelock(uint256)":{"params":{"_blocks":"The new time-lock duration in blocks"}},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"params":{"_amount":"The Collateral by which to update the margin","_index":"The index of the trade","_pairIndex":"The index of the trading pair","_type":"Withdraw or Deposit","priceUpdateData":"Pyth price update"}},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair","_price":"The price level to set (_PRECISION)","_sl":"The stop-loss price","_tp":"The take-profit price"}},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss price","_newTP":"The new take-profit price","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"notice":"Cancels an open limit order"},"cancelPendingMarketOrder(uint256)":{"notice":"FallBack method in case unregister is not working directly"},"closeTradeMarket(uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"notice":"Executes a limit order (either open or close). Callable by Operators"},"executeMarketOrders(uint256[],bytes[])":{"notice":"Operator intiated method to close pending market orders"},"initialize(address,address)":{"notice":"Initializes the proxy"},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"notice":"Opens a new Market/Limit trade"},"pause()":{"notice":"Pauses the contract"},"setLimitOrdersTimelock(uint256)":{"notice":"Sets the time-lock for limit order updates"},"unpause()":{"notice":"Unpauses the contract"},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"notice":"Updates(Deposit/Withdraw) the margin for an open trade"},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"notice":"Updates an open limit order"},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"notice":"Updates the take-profit and stop-loss for a open Trade"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/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-upgradeable/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Trading.sol":"Trading"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/Delegatable.sol":{"keccak256":"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8","urls":["bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92","dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu"],"license":"MIT"},"src/Trading.sol":{"keccak256":"0x055834c4b63922e05a572d875d440e569e24c315c8f9c99853b3bf6c463ed2e2","urls":["bzz-raw://66d74091b96c49192088b7439bcc923f4aed6e8c8dbd96427a2d2d19d87d3349","dweb:/ipfs/QmPY1iQi89HmGbPafomQejuAn1hJowDbEFUfBcZ8Fn6aku"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x75f9d949112eb110d5a55ba4e6910ab3e094da8ff4decab3abd87d1e8dfe10c9","urls":["bzz-raw://a2a3c7d7162b089643afd6923844284b5afff043009bb32c8bcab74f6990ea33","dweb:/ipfs/QmSjbdEWJgzMcWC7jt2xW7Lg7SQ3cb5kEgR5qPCTKaVBH1"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98","urls":["bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a","dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xb40cfb4b84674006b8d81737b304c84937c7a904b7ce847542258046ac6b35e6","urls":["bzz-raw://906b01ce05d85dfae5728ced06d722da2f463fb29e63a8dff1ffa5c51deca8d3","dweb:/ipfs/Qme5id3GWqjYEyboRqUTVN9afUjwckcbGcVdjbPZ6Q19BG"],"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":"0xffb3e1f124ac66a6e3155eb5df38e4aa32a7756f13a165a9e13b730e90645b34","urls":["bzz-raw://c1a5dff3972fdf6ffdd63bf348ae63e971a86695d46f66c7d4b04ccb42728f23","dweb:/ipfs/QmSEDxJLhoUuoVL2VoCGwb7dz2ue26dEg3iCWXSVN4JDeL"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0x9b426519dd97fbd0861685bd6d668a1efdf30da680dacc3eca6f84960222b1c8","urls":["bzz-raw://be92c83448c444b53e040d1dc1c17fc6af7567cda448e1e8a32272dec6319dde","dweb:/ipfs/QmcHQbxaw1XVtBwghs1f3qHBKmBDTrhdYWBm7tyNgFWxSz"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"id":73}
1
+ {
2
+ "abi": [
3
+ {
4
+ "inputs": [],
5
+ "stateMutability": "nonpayable",
6
+ "type": "constructor"
7
+ },
8
+ {
9
+ "anonymous": false,
10
+ "inputs": [
11
+ {
12
+ "indexed": false,
13
+ "internalType": "address",
14
+ "name": "aggregator",
15
+ "type": "address"
16
+ }
17
+ ],
18
+ "name": "AggregatorUpdated",
19
+ "type": "event"
20
+ },
21
+ {
22
+ "anonymous": false,
23
+ "inputs": [
24
+ {
25
+ "indexed": false,
26
+ "internalType": "uint8",
27
+ "name": "version",
28
+ "type": "uint8"
29
+ }
30
+ ],
31
+ "name": "Initialized",
32
+ "type": "event"
33
+ },
34
+ {
35
+ "anonymous": false,
36
+ "inputs": [
37
+ {
38
+ "indexed": true,
39
+ "internalType": "address",
40
+ "name": "trader",
41
+ "type": "address"
42
+ },
43
+ {
44
+ "indexed": false,
45
+ "internalType": "uint256",
46
+ "name": "pairIndex",
47
+ "type": "uint256"
48
+ },
49
+ {
50
+ "indexed": false,
51
+ "internalType": "uint256",
52
+ "name": "orderId",
53
+ "type": "uint256"
54
+ },
55
+ {
56
+ "indexed": false,
57
+ "internalType": "uint256",
58
+ "name": "timestamp",
59
+ "type": "uint256"
60
+ }
61
+ ],
62
+ "name": "LimitOrderInitiated",
63
+ "type": "event"
64
+ },
65
+ {
66
+ "anonymous": false,
67
+ "inputs": [
68
+ {
69
+ "indexed": true,
70
+ "internalType": "address",
71
+ "name": "trader",
72
+ "type": "address"
73
+ },
74
+ {
75
+ "indexed": false,
76
+ "internalType": "uint256",
77
+ "name": "pairIndex",
78
+ "type": "uint256"
79
+ },
80
+ {
81
+ "indexed": false,
82
+ "internalType": "uint256",
83
+ "name": "index",
84
+ "type": "uint256"
85
+ },
86
+ {
87
+ "indexed": false,
88
+ "internalType": "enum ITradingStorage.updateType",
89
+ "name": "_type",
90
+ "type": "uint8"
91
+ },
92
+ {
93
+ "components": [
94
+ {
95
+ "internalType": "address",
96
+ "name": "trader",
97
+ "type": "address"
98
+ },
99
+ {
100
+ "internalType": "uint256",
101
+ "name": "pairIndex",
102
+ "type": "uint256"
103
+ },
104
+ {
105
+ "internalType": "uint256",
106
+ "name": "index",
107
+ "type": "uint256"
108
+ },
109
+ {
110
+ "internalType": "uint256",
111
+ "name": "initialPosToken",
112
+ "type": "uint256"
113
+ },
114
+ {
115
+ "internalType": "uint256",
116
+ "name": "positionSizeUSDC",
117
+ "type": "uint256"
118
+ },
119
+ {
120
+ "internalType": "uint256",
121
+ "name": "openPrice",
122
+ "type": "uint256"
123
+ },
124
+ {
125
+ "internalType": "bool",
126
+ "name": "buy",
127
+ "type": "bool"
128
+ },
129
+ {
130
+ "internalType": "uint256",
131
+ "name": "leverage",
132
+ "type": "uint256"
133
+ },
134
+ {
135
+ "internalType": "uint256",
136
+ "name": "tp",
137
+ "type": "uint256"
138
+ },
139
+ {
140
+ "internalType": "uint256",
141
+ "name": "sl",
142
+ "type": "uint256"
143
+ },
144
+ {
145
+ "internalType": "uint256",
146
+ "name": "timestamp",
147
+ "type": "uint256"
148
+ }
149
+ ],
150
+ "indexed": false,
151
+ "internalType": "struct ITradingStorage.Trade",
152
+ "name": "newTrade",
153
+ "type": "tuple"
154
+ },
155
+ {
156
+ "indexed": false,
157
+ "internalType": "uint256",
158
+ "name": "marginFees",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "indexed": false,
163
+ "internalType": "uint256",
164
+ "name": "lossProtectionTier",
165
+ "type": "uint256"
166
+ },
167
+ {
168
+ "indexed": false,
169
+ "internalType": "uint256",
170
+ "name": "timestamp",
171
+ "type": "uint256"
172
+ }
173
+ ],
174
+ "name": "MarginUpdated",
175
+ "type": "event"
176
+ },
177
+ {
178
+ "anonymous": false,
179
+ "inputs": [
180
+ {
181
+ "indexed": true,
182
+ "internalType": "address",
183
+ "name": "trader",
184
+ "type": "address"
185
+ },
186
+ {
187
+ "indexed": false,
188
+ "internalType": "uint256",
189
+ "name": "pairIndex",
190
+ "type": "uint256"
191
+ },
192
+ {
193
+ "indexed": false,
194
+ "internalType": "bool",
195
+ "name": "open",
196
+ "type": "bool"
197
+ },
198
+ {
199
+ "indexed": false,
200
+ "internalType": "uint256",
201
+ "name": "orderId",
202
+ "type": "uint256"
203
+ },
204
+ {
205
+ "indexed": false,
206
+ "internalType": "uint256",
207
+ "name": "timestamp",
208
+ "type": "uint256"
209
+ },
210
+ {
211
+ "indexed": false,
212
+ "internalType": "bool",
213
+ "name": "isBuy",
214
+ "type": "bool"
215
+ },
216
+ {
217
+ "indexed": false,
218
+ "internalType": "bool",
219
+ "name": "isPnl",
220
+ "type": "bool"
221
+ },
222
+ {
223
+ "indexed": false,
224
+ "internalType": "uint256",
225
+ "name": "initialPosToken",
226
+ "type": "uint256"
227
+ },
228
+ {
229
+ "indexed": false,
230
+ "internalType": "uint256",
231
+ "name": "leverage",
232
+ "type": "uint256"
233
+ }
234
+ ],
235
+ "name": "MarketOrderInitiated",
236
+ "type": "event"
237
+ },
238
+ {
239
+ "anonymous": false,
240
+ "inputs": [
241
+ {
242
+ "indexed": false,
243
+ "internalType": "string",
244
+ "name": "name",
245
+ "type": "string"
246
+ },
247
+ {
248
+ "indexed": false,
249
+ "internalType": "uint256",
250
+ "name": "value",
251
+ "type": "uint256"
252
+ }
253
+ ],
254
+ "name": "NumberUpdated",
255
+ "type": "event"
256
+ },
257
+ {
258
+ "anonymous": false,
259
+ "inputs": [
260
+ {
261
+ "indexed": true,
262
+ "internalType": "address",
263
+ "name": "trader",
264
+ "type": "address"
265
+ },
266
+ {
267
+ "indexed": false,
268
+ "internalType": "uint256",
269
+ "name": "pairIndex",
270
+ "type": "uint256"
271
+ },
272
+ {
273
+ "indexed": false,
274
+ "internalType": "uint256",
275
+ "name": "index",
276
+ "type": "uint256"
277
+ },
278
+ {
279
+ "indexed": false,
280
+ "internalType": "uint256",
281
+ "name": "timestamp",
282
+ "type": "uint256"
283
+ },
284
+ {
285
+ "indexed": false,
286
+ "internalType": "uint256",
287
+ "name": "collateral",
288
+ "type": "uint256"
289
+ }
290
+ ],
291
+ "name": "OpenLimitCanceled",
292
+ "type": "event"
293
+ },
294
+ {
295
+ "anonymous": false,
296
+ "inputs": [
297
+ {
298
+ "indexed": true,
299
+ "internalType": "address",
300
+ "name": "trader",
301
+ "type": "address"
302
+ },
303
+ {
304
+ "indexed": false,
305
+ "internalType": "uint256",
306
+ "name": "pairIndex",
307
+ "type": "uint256"
308
+ },
309
+ {
310
+ "indexed": false,
311
+ "internalType": "uint256",
312
+ "name": "index",
313
+ "type": "uint256"
314
+ },
315
+ {
316
+ "indexed": false,
317
+ "internalType": "bool",
318
+ "name": "isBuy",
319
+ "type": "bool"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "uint256",
324
+ "name": "openPrice",
325
+ "type": "uint256"
326
+ },
327
+ {
328
+ "indexed": false,
329
+ "internalType": "uint256",
330
+ "name": "executionFee",
331
+ "type": "uint256"
332
+ },
333
+ {
334
+ "indexed": false,
335
+ "internalType": "enum IExecute.OpenLimitOrderType",
336
+ "name": "orderType",
337
+ "type": "uint8"
338
+ },
339
+ {
340
+ "indexed": false,
341
+ "internalType": "uint256",
342
+ "name": "slippageP",
343
+ "type": "uint256"
344
+ },
345
+ {
346
+ "indexed": false,
347
+ "internalType": "uint256",
348
+ "name": "collateral",
349
+ "type": "uint256"
350
+ }
351
+ ],
352
+ "name": "OpenLimitPlaced",
353
+ "type": "event"
354
+ },
355
+ {
356
+ "anonymous": false,
357
+ "inputs": [
358
+ {
359
+ "indexed": true,
360
+ "internalType": "address",
361
+ "name": "trader",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "indexed": false,
366
+ "internalType": "uint256",
367
+ "name": "pairIndex",
368
+ "type": "uint256"
369
+ },
370
+ {
371
+ "indexed": false,
372
+ "internalType": "uint256",
373
+ "name": "index",
374
+ "type": "uint256"
375
+ },
376
+ {
377
+ "indexed": false,
378
+ "internalType": "uint256",
379
+ "name": "newPrice",
380
+ "type": "uint256"
381
+ },
382
+ {
383
+ "indexed": false,
384
+ "internalType": "uint256",
385
+ "name": "newTp",
386
+ "type": "uint256"
387
+ },
388
+ {
389
+ "indexed": false,
390
+ "internalType": "uint256",
391
+ "name": "newSl",
392
+ "type": "uint256"
393
+ },
394
+ {
395
+ "indexed": false,
396
+ "internalType": "uint256",
397
+ "name": "timestamp",
398
+ "type": "uint256"
399
+ }
400
+ ],
401
+ "name": "OpenLimitUpdated",
402
+ "type": "event"
403
+ },
404
+ {
405
+ "anonymous": false,
406
+ "inputs": [
407
+ {
408
+ "indexed": false,
409
+ "internalType": "address",
410
+ "name": "operator",
411
+ "type": "address"
412
+ },
413
+ {
414
+ "indexed": false,
415
+ "internalType": "bool",
416
+ "name": "isOperator",
417
+ "type": "bool"
418
+ }
419
+ ],
420
+ "name": "OperatorUpdated",
421
+ "type": "event"
422
+ },
423
+ {
424
+ "anonymous": false,
425
+ "inputs": [
426
+ {
427
+ "indexed": false,
428
+ "internalType": "address",
429
+ "name": "account",
430
+ "type": "address"
431
+ }
432
+ ],
433
+ "name": "Paused",
434
+ "type": "event"
435
+ },
436
+ {
437
+ "anonymous": false,
438
+ "inputs": [
439
+ {
440
+ "indexed": true,
441
+ "internalType": "address",
442
+ "name": "trader",
443
+ "type": "address"
444
+ },
445
+ {
446
+ "indexed": false,
447
+ "internalType": "uint256",
448
+ "name": "pairIndex",
449
+ "type": "uint256"
450
+ },
451
+ {
452
+ "indexed": false,
453
+ "internalType": "uint256",
454
+ "name": "index",
455
+ "type": "uint256"
456
+ },
457
+ {
458
+ "indexed": false,
459
+ "internalType": "uint256",
460
+ "name": "newSl",
461
+ "type": "uint256"
462
+ },
463
+ {
464
+ "indexed": false,
465
+ "internalType": "uint256",
466
+ "name": "orderId",
467
+ "type": "uint256"
468
+ },
469
+ {
470
+ "indexed": false,
471
+ "internalType": "uint256",
472
+ "name": "timestamp",
473
+ "type": "uint256"
474
+ }
475
+ ],
476
+ "name": "SlUpdateInitiated",
477
+ "type": "event"
478
+ },
479
+ {
480
+ "anonymous": false,
481
+ "inputs": [
482
+ {
483
+ "indexed": true,
484
+ "internalType": "address",
485
+ "name": "trader",
486
+ "type": "address"
487
+ },
488
+ {
489
+ "indexed": false,
490
+ "internalType": "uint256",
491
+ "name": "pairIndex",
492
+ "type": "uint256"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "uint256",
497
+ "name": "index",
498
+ "type": "uint256"
499
+ },
500
+ {
501
+ "indexed": false,
502
+ "internalType": "uint256",
503
+ "name": "newSl",
504
+ "type": "uint256"
505
+ },
506
+ {
507
+ "indexed": false,
508
+ "internalType": "uint256",
509
+ "name": "timestamp",
510
+ "type": "uint256"
511
+ }
512
+ ],
513
+ "name": "SlUpdated",
514
+ "type": "event"
515
+ },
516
+ {
517
+ "anonymous": false,
518
+ "inputs": [
519
+ {
520
+ "indexed": true,
521
+ "internalType": "address",
522
+ "name": "trader",
523
+ "type": "address"
524
+ },
525
+ {
526
+ "indexed": false,
527
+ "internalType": "uint256",
528
+ "name": "pairIndex",
529
+ "type": "uint256"
530
+ },
531
+ {
532
+ "indexed": false,
533
+ "internalType": "uint256",
534
+ "name": "index",
535
+ "type": "uint256"
536
+ },
537
+ {
538
+ "indexed": false,
539
+ "internalType": "uint256",
540
+ "name": "newTp",
541
+ "type": "uint256"
542
+ },
543
+ {
544
+ "indexed": false,
545
+ "internalType": "uint256",
546
+ "name": "timestamp",
547
+ "type": "uint256"
548
+ }
549
+ ],
550
+ "name": "TpUpdated",
551
+ "type": "event"
552
+ },
553
+ {
554
+ "anonymous": false,
555
+ "inputs": [
556
+ {
557
+ "indexed": false,
558
+ "internalType": "address",
559
+ "name": "account",
560
+ "type": "address"
561
+ }
562
+ ],
563
+ "name": "Unpaused",
564
+ "type": "event"
565
+ },
566
+ {
567
+ "inputs": [],
568
+ "name": "_MAX_SLIPPAGE",
569
+ "outputs": [
570
+ {
571
+ "internalType": "uint256",
572
+ "name": "",
573
+ "type": "uint256"
574
+ }
575
+ ],
576
+ "stateMutability": "view",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [],
581
+ "name": "__msgSender",
582
+ "outputs": [
583
+ {
584
+ "internalType": "address",
585
+ "name": "",
586
+ "type": "address"
587
+ }
588
+ ],
589
+ "stateMutability": "view",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [
594
+ {
595
+ "internalType": "uint256",
596
+ "name": "_pairIndex",
597
+ "type": "uint256"
598
+ },
599
+ {
600
+ "internalType": "uint256",
601
+ "name": "_index",
602
+ "type": "uint256"
603
+ }
604
+ ],
605
+ "name": "cancelOpenLimitOrder",
606
+ "outputs": [],
607
+ "stateMutability": "nonpayable",
608
+ "type": "function"
609
+ },
610
+ {
611
+ "inputs": [
612
+ {
613
+ "internalType": "uint256",
614
+ "name": "_id",
615
+ "type": "uint256"
616
+ }
617
+ ],
618
+ "name": "cancelPendingMarketOrder",
619
+ "outputs": [],
620
+ "stateMutability": "nonpayable",
621
+ "type": "function"
622
+ },
623
+ {
624
+ "inputs": [
625
+ {
626
+ "internalType": "uint256",
627
+ "name": "_pairIndex",
628
+ "type": "uint256"
629
+ },
630
+ {
631
+ "internalType": "uint256",
632
+ "name": "_index",
633
+ "type": "uint256"
634
+ },
635
+ {
636
+ "internalType": "uint256",
637
+ "name": "_amount",
638
+ "type": "uint256"
639
+ }
640
+ ],
641
+ "name": "closeTradeMarket",
642
+ "outputs": [
643
+ {
644
+ "internalType": "uint256",
645
+ "name": "orderId",
646
+ "type": "uint256"
647
+ }
648
+ ],
649
+ "stateMutability": "payable",
650
+ "type": "function"
651
+ },
652
+ {
653
+ "inputs": [
654
+ {
655
+ "internalType": "address",
656
+ "name": "trader",
657
+ "type": "address"
658
+ },
659
+ {
660
+ "internalType": "bytes",
661
+ "name": "call_data",
662
+ "type": "bytes"
663
+ }
664
+ ],
665
+ "name": "delegatedAction",
666
+ "outputs": [
667
+ {
668
+ "internalType": "bytes",
669
+ "name": "",
670
+ "type": "bytes"
671
+ }
672
+ ],
673
+ "stateMutability": "payable",
674
+ "type": "function"
675
+ },
676
+ {
677
+ "inputs": [
678
+ {
679
+ "internalType": "address",
680
+ "name": "",
681
+ "type": "address"
682
+ }
683
+ ],
684
+ "name": "delegations",
685
+ "outputs": [
686
+ {
687
+ "internalType": "address",
688
+ "name": "",
689
+ "type": "address"
690
+ }
691
+ ],
692
+ "stateMutability": "view",
693
+ "type": "function"
694
+ },
695
+ {
696
+ "inputs": [
697
+ {
698
+ "internalType": "enum ITradingStorage.LimitOrder",
699
+ "name": "_orderType",
700
+ "type": "uint8"
701
+ },
702
+ {
703
+ "internalType": "address",
704
+ "name": "_trader",
705
+ "type": "address"
706
+ },
707
+ {
708
+ "internalType": "uint256",
709
+ "name": "_pairIndex",
710
+ "type": "uint256"
711
+ },
712
+ {
713
+ "internalType": "uint256",
714
+ "name": "_index",
715
+ "type": "uint256"
716
+ },
717
+ {
718
+ "internalType": "bytes[]",
719
+ "name": "priceUpdateData",
720
+ "type": "bytes[]"
721
+ },
722
+ {
723
+ "internalType": "enum IPriceAggregator.PriceSourcing",
724
+ "name": "_priceSourcing",
725
+ "type": "uint8"
726
+ }
727
+ ],
728
+ "name": "executeLimitOrder",
729
+ "outputs": [],
730
+ "stateMutability": "payable",
731
+ "type": "function"
732
+ },
733
+ {
734
+ "inputs": [
735
+ {
736
+ "internalType": "enum ITradingStorage.LimitOrder",
737
+ "name": "_orderType",
738
+ "type": "uint8"
739
+ },
740
+ {
741
+ "internalType": "address",
742
+ "name": "_trader",
743
+ "type": "address"
744
+ },
745
+ {
746
+ "internalType": "uint256",
747
+ "name": "_pairIndex",
748
+ "type": "uint256"
749
+ },
750
+ {
751
+ "internalType": "uint256",
752
+ "name": "_index",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "bytes[]",
757
+ "name": "priceUpdateData",
758
+ "type": "bytes[]"
759
+ },
760
+ {
761
+ "internalType": "enum IPriceAggregator.PriceSourcing",
762
+ "name": "_priceSourcing",
763
+ "type": "uint8"
764
+ },
765
+ {
766
+ "internalType": "int256",
767
+ "name": "spreadP",
768
+ "type": "int256"
769
+ }
770
+ ],
771
+ "name": "executeLimitOrder",
772
+ "outputs": [],
773
+ "stateMutability": "payable",
774
+ "type": "function"
775
+ },
776
+ {
777
+ "inputs": [
778
+ {
779
+ "internalType": "uint256[]",
780
+ "name": "orderId",
781
+ "type": "uint256[]"
782
+ },
783
+ {
784
+ "internalType": "bytes[]",
785
+ "name": "priceUpdateData",
786
+ "type": "bytes[]"
787
+ },
788
+ {
789
+ "internalType": "enum IPriceAggregator.PriceSourcing",
790
+ "name": "_priceSourcing",
791
+ "type": "uint8"
792
+ },
793
+ {
794
+ "internalType": "int256",
795
+ "name": "spreadP",
796
+ "type": "int256"
797
+ }
798
+ ],
799
+ "name": "executeMarketOrders",
800
+ "outputs": [],
801
+ "stateMutability": "payable",
802
+ "type": "function"
803
+ },
804
+ {
805
+ "inputs": [
806
+ {
807
+ "internalType": "uint256[]",
808
+ "name": "orderId",
809
+ "type": "uint256[]"
810
+ },
811
+ {
812
+ "internalType": "bytes[]",
813
+ "name": "priceUpdateData",
814
+ "type": "bytes[]"
815
+ },
816
+ {
817
+ "internalType": "enum IPriceAggregator.PriceSourcing",
818
+ "name": "_priceSourcing",
819
+ "type": "uint8"
820
+ }
821
+ ],
822
+ "name": "executeMarketOrders",
823
+ "outputs": [],
824
+ "stateMutability": "payable",
825
+ "type": "function"
826
+ },
827
+ {
828
+ "inputs": [
829
+ {
830
+ "internalType": "address",
831
+ "name": "_storageT",
832
+ "type": "address"
833
+ },
834
+ {
835
+ "internalType": "address",
836
+ "name": "_pairInfos",
837
+ "type": "address"
838
+ }
839
+ ],
840
+ "name": "initialize",
841
+ "outputs": [],
842
+ "stateMutability": "nonpayable",
843
+ "type": "function"
844
+ },
845
+ {
846
+ "inputs": [
847
+ {
848
+ "internalType": "address",
849
+ "name": "",
850
+ "type": "address"
851
+ }
852
+ ],
853
+ "name": "isOperator",
854
+ "outputs": [
855
+ {
856
+ "internalType": "bool",
857
+ "name": "",
858
+ "type": "bool"
859
+ }
860
+ ],
861
+ "stateMutability": "view",
862
+ "type": "function"
863
+ },
864
+ {
865
+ "inputs": [],
866
+ "name": "limitOrdersTimelock",
867
+ "outputs": [
868
+ {
869
+ "internalType": "uint256",
870
+ "name": "",
871
+ "type": "uint256"
872
+ }
873
+ ],
874
+ "stateMutability": "view",
875
+ "type": "function"
876
+ },
877
+ {
878
+ "inputs": [
879
+ {
880
+ "components": [
881
+ {
882
+ "internalType": "address",
883
+ "name": "trader",
884
+ "type": "address"
885
+ },
886
+ {
887
+ "internalType": "uint256",
888
+ "name": "pairIndex",
889
+ "type": "uint256"
890
+ },
891
+ {
892
+ "internalType": "uint256",
893
+ "name": "index",
894
+ "type": "uint256"
895
+ },
896
+ {
897
+ "internalType": "uint256",
898
+ "name": "initialPosToken",
899
+ "type": "uint256"
900
+ },
901
+ {
902
+ "internalType": "uint256",
903
+ "name": "positionSizeUSDC",
904
+ "type": "uint256"
905
+ },
906
+ {
907
+ "internalType": "uint256",
908
+ "name": "openPrice",
909
+ "type": "uint256"
910
+ },
911
+ {
912
+ "internalType": "bool",
913
+ "name": "buy",
914
+ "type": "bool"
915
+ },
916
+ {
917
+ "internalType": "uint256",
918
+ "name": "leverage",
919
+ "type": "uint256"
920
+ },
921
+ {
922
+ "internalType": "uint256",
923
+ "name": "tp",
924
+ "type": "uint256"
925
+ },
926
+ {
927
+ "internalType": "uint256",
928
+ "name": "sl",
929
+ "type": "uint256"
930
+ },
931
+ {
932
+ "internalType": "uint256",
933
+ "name": "timestamp",
934
+ "type": "uint256"
935
+ }
936
+ ],
937
+ "internalType": "struct ITradingStorage.Trade",
938
+ "name": "t",
939
+ "type": "tuple"
940
+ },
941
+ {
942
+ "internalType": "enum IExecute.OpenLimitOrderType",
943
+ "name": "_type",
944
+ "type": "uint8"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "_slippageP",
949
+ "type": "uint256"
950
+ }
951
+ ],
952
+ "name": "openTrade",
953
+ "outputs": [
954
+ {
955
+ "internalType": "uint256",
956
+ "name": "orderId",
957
+ "type": "uint256"
958
+ }
959
+ ],
960
+ "stateMutability": "payable",
961
+ "type": "function"
962
+ },
963
+ {
964
+ "inputs": [],
965
+ "name": "operator",
966
+ "outputs": [
967
+ {
968
+ "internalType": "address",
969
+ "name": "",
970
+ "type": "address"
971
+ }
972
+ ],
973
+ "stateMutability": "view",
974
+ "type": "function"
975
+ },
976
+ {
977
+ "inputs": [],
978
+ "name": "pairInfos",
979
+ "outputs": [
980
+ {
981
+ "internalType": "contract IPairInfos",
982
+ "name": "",
983
+ "type": "address"
984
+ }
985
+ ],
986
+ "stateMutability": "view",
987
+ "type": "function"
988
+ },
989
+ {
990
+ "inputs": [],
991
+ "name": "pause",
992
+ "outputs": [],
993
+ "stateMutability": "nonpayable",
994
+ "type": "function"
995
+ },
996
+ {
997
+ "inputs": [],
998
+ "name": "paused",
999
+ "outputs": [
1000
+ {
1001
+ "internalType": "bool",
1002
+ "name": "",
1003
+ "type": "bool"
1004
+ }
1005
+ ],
1006
+ "stateMutability": "view",
1007
+ "type": "function"
1008
+ },
1009
+ {
1010
+ "inputs": [],
1011
+ "name": "removeDelegate",
1012
+ "outputs": [],
1013
+ "stateMutability": "nonpayable",
1014
+ "type": "function"
1015
+ },
1016
+ {
1017
+ "inputs": [
1018
+ {
1019
+ "internalType": "address",
1020
+ "name": "_aggregator",
1021
+ "type": "address"
1022
+ }
1023
+ ],
1024
+ "name": "setAggregator",
1025
+ "outputs": [],
1026
+ "stateMutability": "nonpayable",
1027
+ "type": "function"
1028
+ },
1029
+ {
1030
+ "inputs": [
1031
+ {
1032
+ "internalType": "address",
1033
+ "name": "delegate",
1034
+ "type": "address"
1035
+ }
1036
+ ],
1037
+ "name": "setDelegate",
1038
+ "outputs": [],
1039
+ "stateMutability": "nonpayable",
1040
+ "type": "function"
1041
+ },
1042
+ {
1043
+ "inputs": [
1044
+ {
1045
+ "internalType": "address",
1046
+ "name": "_reciever",
1047
+ "type": "address"
1048
+ }
1049
+ ],
1050
+ "name": "setMarketExecFeeReciever",
1051
+ "outputs": [],
1052
+ "stateMutability": "nonpayable",
1053
+ "type": "function"
1054
+ },
1055
+ {
1056
+ "inputs": [],
1057
+ "name": "storageT",
1058
+ "outputs": [
1059
+ {
1060
+ "internalType": "contract ITradingStorage",
1061
+ "name": "",
1062
+ "type": "address"
1063
+ }
1064
+ ],
1065
+ "stateMutability": "view",
1066
+ "type": "function"
1067
+ },
1068
+ {
1069
+ "inputs": [],
1070
+ "name": "unpause",
1071
+ "outputs": [],
1072
+ "stateMutability": "nonpayable",
1073
+ "type": "function"
1074
+ },
1075
+ {
1076
+ "inputs": [
1077
+ {
1078
+ "internalType": "uint256",
1079
+ "name": "_pairIndex",
1080
+ "type": "uint256"
1081
+ },
1082
+ {
1083
+ "internalType": "uint256",
1084
+ "name": "_index",
1085
+ "type": "uint256"
1086
+ },
1087
+ {
1088
+ "internalType": "enum ITradingStorage.updateType",
1089
+ "name": "_type",
1090
+ "type": "uint8"
1091
+ },
1092
+ {
1093
+ "internalType": "uint256",
1094
+ "name": "_amount",
1095
+ "type": "uint256"
1096
+ },
1097
+ {
1098
+ "internalType": "bytes[]",
1099
+ "name": "priceUpdateData",
1100
+ "type": "bytes[]"
1101
+ },
1102
+ {
1103
+ "internalType": "enum IPriceAggregator.PriceSourcing",
1104
+ "name": "_priceSourcing",
1105
+ "type": "uint8"
1106
+ }
1107
+ ],
1108
+ "name": "updateMargin",
1109
+ "outputs": [
1110
+ {
1111
+ "internalType": "uint256",
1112
+ "name": "orderId",
1113
+ "type": "uint256"
1114
+ }
1115
+ ],
1116
+ "stateMutability": "payable",
1117
+ "type": "function"
1118
+ },
1119
+ {
1120
+ "inputs": [
1121
+ {
1122
+ "internalType": "uint256",
1123
+ "name": "_pairIndex",
1124
+ "type": "uint256"
1125
+ },
1126
+ {
1127
+ "internalType": "uint256",
1128
+ "name": "_index",
1129
+ "type": "uint256"
1130
+ },
1131
+ {
1132
+ "internalType": "enum ITradingStorage.updateType",
1133
+ "name": "_type",
1134
+ "type": "uint8"
1135
+ },
1136
+ {
1137
+ "internalType": "uint256",
1138
+ "name": "_amount",
1139
+ "type": "uint256"
1140
+ },
1141
+ {
1142
+ "internalType": "bytes[]",
1143
+ "name": "priceUpdateData",
1144
+ "type": "bytes[]"
1145
+ }
1146
+ ],
1147
+ "name": "updateMargin",
1148
+ "outputs": [
1149
+ {
1150
+ "internalType": "uint256",
1151
+ "name": "orderId",
1152
+ "type": "uint256"
1153
+ }
1154
+ ],
1155
+ "stateMutability": "payable",
1156
+ "type": "function"
1157
+ },
1158
+ {
1159
+ "inputs": [
1160
+ {
1161
+ "internalType": "uint256",
1162
+ "name": "_pairIndex",
1163
+ "type": "uint256"
1164
+ },
1165
+ {
1166
+ "internalType": "uint256",
1167
+ "name": "_index",
1168
+ "type": "uint256"
1169
+ },
1170
+ {
1171
+ "internalType": "uint256",
1172
+ "name": "_price",
1173
+ "type": "uint256"
1174
+ },
1175
+ {
1176
+ "internalType": "uint256",
1177
+ "name": "_slippageP",
1178
+ "type": "uint256"
1179
+ },
1180
+ {
1181
+ "internalType": "uint256",
1182
+ "name": "_tp",
1183
+ "type": "uint256"
1184
+ },
1185
+ {
1186
+ "internalType": "uint256",
1187
+ "name": "_sl",
1188
+ "type": "uint256"
1189
+ }
1190
+ ],
1191
+ "name": "updateOpenLimitOrder",
1192
+ "outputs": [],
1193
+ "stateMutability": "nonpayable",
1194
+ "type": "function"
1195
+ },
1196
+ {
1197
+ "inputs": [
1198
+ {
1199
+ "internalType": "address",
1200
+ "name": "_operator",
1201
+ "type": "address"
1202
+ },
1203
+ {
1204
+ "internalType": "bool",
1205
+ "name": "_isOperator",
1206
+ "type": "bool"
1207
+ }
1208
+ ],
1209
+ "name": "updateOperator",
1210
+ "outputs": [],
1211
+ "stateMutability": "nonpayable",
1212
+ "type": "function"
1213
+ },
1214
+ {
1215
+ "inputs": [
1216
+ {
1217
+ "internalType": "uint256",
1218
+ "name": "_pairIndex",
1219
+ "type": "uint256"
1220
+ },
1221
+ {
1222
+ "internalType": "uint256",
1223
+ "name": "_index",
1224
+ "type": "uint256"
1225
+ },
1226
+ {
1227
+ "internalType": "uint256",
1228
+ "name": "_newSl",
1229
+ "type": "uint256"
1230
+ },
1231
+ {
1232
+ "internalType": "bytes[]",
1233
+ "name": "priceUpdateData",
1234
+ "type": "bytes[]"
1235
+ },
1236
+ {
1237
+ "internalType": "enum IPriceAggregator.PriceSourcing",
1238
+ "name": "_priceSourcing",
1239
+ "type": "uint8"
1240
+ }
1241
+ ],
1242
+ "name": "updateSl",
1243
+ "outputs": [],
1244
+ "stateMutability": "payable",
1245
+ "type": "function"
1246
+ },
1247
+ {
1248
+ "inputs": [
1249
+ {
1250
+ "internalType": "uint256",
1251
+ "name": "_pairIndex",
1252
+ "type": "uint256"
1253
+ },
1254
+ {
1255
+ "internalType": "uint256",
1256
+ "name": "_index",
1257
+ "type": "uint256"
1258
+ },
1259
+ {
1260
+ "internalType": "uint256",
1261
+ "name": "_newSl",
1262
+ "type": "uint256"
1263
+ },
1264
+ {
1265
+ "internalType": "bytes[]",
1266
+ "name": "priceUpdateData",
1267
+ "type": "bytes[]"
1268
+ }
1269
+ ],
1270
+ "name": "updateSl",
1271
+ "outputs": [],
1272
+ "stateMutability": "payable",
1273
+ "type": "function"
1274
+ },
1275
+ {
1276
+ "inputs": [
1277
+ {
1278
+ "internalType": "uint256",
1279
+ "name": "_pairIndex",
1280
+ "type": "uint256"
1281
+ },
1282
+ {
1283
+ "internalType": "uint256",
1284
+ "name": "_index",
1285
+ "type": "uint256"
1286
+ },
1287
+ {
1288
+ "internalType": "uint256",
1289
+ "name": "_newSl",
1290
+ "type": "uint256"
1291
+ },
1292
+ {
1293
+ "internalType": "uint256",
1294
+ "name": "_newTP",
1295
+ "type": "uint256"
1296
+ },
1297
+ {
1298
+ "internalType": "bytes[]",
1299
+ "name": "priceUpdateData",
1300
+ "type": "bytes[]"
1301
+ }
1302
+ ],
1303
+ "name": "updateTpAndSl",
1304
+ "outputs": [],
1305
+ "stateMutability": "payable",
1306
+ "type": "function"
1307
+ },
1308
+ {
1309
+ "inputs": [
1310
+ {
1311
+ "internalType": "uint256",
1312
+ "name": "_pairIndex",
1313
+ "type": "uint256"
1314
+ },
1315
+ {
1316
+ "internalType": "uint256",
1317
+ "name": "_index",
1318
+ "type": "uint256"
1319
+ },
1320
+ {
1321
+ "internalType": "uint256",
1322
+ "name": "_newSl",
1323
+ "type": "uint256"
1324
+ },
1325
+ {
1326
+ "internalType": "uint256",
1327
+ "name": "_newTP",
1328
+ "type": "uint256"
1329
+ },
1330
+ {
1331
+ "internalType": "bytes[]",
1332
+ "name": "priceUpdateData",
1333
+ "type": "bytes[]"
1334
+ },
1335
+ {
1336
+ "internalType": "enum IPriceAggregator.PriceSourcing",
1337
+ "name": "_priceSourcing",
1338
+ "type": "uint8"
1339
+ }
1340
+ ],
1341
+ "name": "updateTpAndSl",
1342
+ "outputs": [],
1343
+ "stateMutability": "payable",
1344
+ "type": "function"
1345
+ }
1346
+ ]
1347
+ }