0 txs
3.5k calls
constructor
No constructor.
functions
getMarketTokens
viewfunction getMarketTokens(address dataStore, address key) view returns (address marketToken, address indexToken, address longToken, address shortToken)
getPositionMarginInfo
viewfunction getPositionMarginInfo(address dataStore, address referralStorage, bytes32 positionKey, tuple prices) view returns (uint256 collateralAmount, uint256 sizeInUsd, uint256 totalCostAmount, int256 pnlAfterPriceImpactUsd)
getPositionSizeInUsd
viewfunction getPositionSizeInUsd(address dataStore, bytes32 positionKey) view returns (uint256)
isOrderExist
viewfunction isOrderExist(address dataStore, bytes32 orderKey) view returns (bool)
events
No events.
errors
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMathUD60x18__Exp2InputTooBig
error PRBMathUD60x18__Exp2InputTooBig(uint256 x)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
UnableToGetCachedTokenPrice
error UnableToGetCachedTokenPrice(address token, address market)
UnableToGetFundingFactorEmptyOpenInterest
error UnableToGetFundingFactorEmptyOpenInterest()
UnexpectedBorrowingFactor
error UnexpectedBorrowingFactor(uint256 positionBorrowingFactor, uint256 cumulativeBorrowingFactor)
creation bytecode
0x6080604052348015600f57600080fd5b506146fa8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306c44dfe146100515780631e35920d1461009c57806323e967a5146100bf57806399efc869146100e0575b600080fd5b61006461005f366004613ec9565b610113565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080015b60405180910390f35b6100af6100aa366004613f02565b61054f565b6040519015158152602001610093565b6100d26100cd366004613f02565b61064f565b604051908152602001610093565b6100f36100ee366004613ff1565b61073c565b604080519485526020850193909352918301526060820152608001610093565b600080600080856001600160a01b031663c769d1a1604051602001610157906020808252600b908201526a13505492d15517d31254d560aa1b604082015260600190565b60405160208183030381529060405280519060200120876040518363ffffffff1660e01b815260040161018b929190614086565b602060405180830381865afa1580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc91906140ad565b1561054657856001600160a01b03166321f8a72186604051602001610211906020808252600c908201526b26a0a925a2aa2faa27a5a2a760a11b604082015260600190565b604051602081830303815290604052805190602001206040516020016102389291906140c8565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161026c91815260200190565b602060405180830381865afa158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad91906140e1565b9350856001600160a01b03166321f8a721866040516020016102ee906020808252600b908201526a24a72222ac2faa27a5a2a760a91b604082015260600190565b604051602081830303815290604052805190602001206040516020016103159291906140c8565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161034991815260200190565b602060405180830381865afa158015610366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038a91906140e1565b9250856001600160a01b03166321f8a721866040516020016103ca906020808252600a90820152692627a723afaa27a5a2a760b11b604082015260600190565b604051602081830303815290604052805190602001206040516020016103f19291906140c8565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161042591815260200190565b602060405180830381865afa158015610442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046691906140e1565b9150856001600160a01b03166321f8a721866040516020016104a7906020808252600b908201526a29a427a92a2faa27a5a2a760a91b604082015260600190565b604051602081830303815290604052805190602001206040516020016104ce9291906140c8565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161050291815260200190565b602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054391906140e1565b90505b92959194509250565b6000806001600160a01b0316836001600160a01b03166321f8a72184604051602001610596906020808252600790820152661050d0d3d5539560ca1b604082015260600190565b604051602081830303815290604052805190602001206040516020016105c6929190918252602082015260400190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016105fa91815260200190565b602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b91906140e1565b6001600160a01b0316141590505b92915050565b6000826001600160a01b031663bd02d0f583604051602001610690906020808252600b908201526a14d2569157d25397d554d160aa1b604082015260600190565b604051602081830303815290604052805190602001206040516020016106c0929190918252602082015260400190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016106f491815260200190565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073591906140fe565b9392505050565b60008060008061074a613bcb565b60405163fdfc26f360e01b815260009073e1645e6a4e166ce4811f9fd559b895a9c3f94f8e9063fdfc26f390610786908d908c906004016140c8565b6101c060405180830381865af41580156107a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c89190614170565b90507346ffa915d87bf915c2d01ac7d4c1c5338fa5acec63a8d8fff58b6107f184516020015190565b6040518363ffffffff1660e01b815260040161080e92919061428a565b608060405180830381865af415801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f91906142a4565b825261086861086082516040015190565b835189610a85565b602083015261087981602001515190565b6040830152815160009073f61da339230c4bb7cafa444bd7ffa4d5d5ec6c2c906319cc7fdc908d908b6108ae87602001515190565b60208089015101516108c38a60400151610b28565b6108cc9061434e565b60408a0151516040518863ffffffff1660e01b81526004016108f497969594939291906143e0565b606060405180830381865af4158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190614435565b60408051610140810182526001600160a01b03808f1682528d811660208084019190915282840187905287015160608084019190915283850151151560808401528751840151821660a0840152875101511660c08201529085015160e0820152600061010082018190526101208201819052919250906109b685838c610b96565b90507319b9ecd3fa2dc9272cd815ee05f300534b4f1d8b63e22de7938e87600001518d888a604001516040518663ffffffff1660e01b81526004016109ff959493929190614477565b606060405180830381865af4158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a40919061455b565b5050606086015260208401516040015160408601516101e083015160608801518651939c50919a509850610a7391614589565b95505050505050945094509450949050565b610a8d613c18565b82604001516001600160a01b0316846001600160a01b031603610ab557506020810151610735565b82606001516001600160a01b0316846001600160a01b031603610add57506040810151610735565b82602001516001600160a01b0316846001600160a01b031603610b0257508051610735565b8251604051635f2394d160e11b8152610b1f91869160040161428a565b60405180910390fd5b60006001600160ff1b03821115610b925760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610b1f565b5090565b610b9e613c32565b6000610bd88460000151856020015186606001518760800151610bc48960400151515190565b60408a015151602001518a60e00151610f64565b90506000610bee856000015186604001516113ee565b9050610c03856000015186606001518361148c565b6060808401829052810151602090910151610180840151610c2491906145b1565b610c2e91906145c4565b610160830152606080830151015161014083018051610c4e9083906145b1565b90525084516040808701518051602081015190830151919092015151610c769392919061159b565b604080840151606001919091528551908601515160200151610ca6919060a08801516040808a0151015151611621565b604080840151608001919091528551908601515160200151610cd6919060c08801516040808a0151015151611621565b604083015160a0015284518651600091610cf0918761163d565b905060008760000151606001516001600160a01b03168860000151604001516001600160a01b031614610d24576001610d27565b60025b60ff169050610d3c8760400151604001515190565b15610dff5760808201515151610d539082906145d7565b8460400151608001818151610d6891906145b1565b90525060808201515160200151610d809082906145d7565b846040015160a001818151610d9591906145b1565b90525087516040908101518882015151909101516001600160a01b03918216911603610dea5760608201515151610dcd9082906145d7565b8460400151606001818151610de291906145b1565b905250610ec5565b60608201515160200151610dcd9082906145d7565b60808201516020015151610e149082906145d7565b8460400151608001818151610e2991906145b1565b90525060808201516020908101510151610e449082906145d7565b846040015160a001818151610e5991906145b1565b90525087516040908101518882015151909101516001600160a01b03918216911603610e945760608201516020015151610dcd9082906145d7565b8082606001516020015160200151610eac91906145d7565b8460400151606001818151610ec191906145b1565b9052505b610ed7846040015188604001516119e0565b60408501528651606088015160e08901516101008a0151610efa93929190611a5c565b60808501819052845161010001516040909101516060860151602001516101a0870151610f2791906145b1565b610f3191906145b1565b610f3b91906145c4565b6101c08501819052604085015151610f52916145b1565b6101e085015250919695505050505050565b610f6c613c32565b610f74613c32565b60c0810187905280516001600160a01b0386166040909101526000610f9a8a8a88611ac4565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f5610fd4878a611e03565b6040518263ffffffff1660e01b8152600401610ff291815260200190565b602060405180830381865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103391906140fe565b60e08301819052885190611048908690611e8f565b6110529190614604565b6101a08301526001600160a01b038a1663bd02d0f561107088611ea8565b6040518263ffffffff1660e01b815260040161108e91815260200190565b602060405180830381865afa1580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf91906140fe565b6020830180519190915251511561119657896001600160a01b031663bd02d0f5611100846020015160000151611f22565b6040518263ffffffff1660e01b815260040161111e91815260200190565b602060405180830381865afa15801561113b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115f91906140fe565b6020808401805182019290925290510151156111965761118c826101a00151836020015160200151611e8f565b6020830151604001525b8151511561128c57815160808082015160a090920191909152825160c08101519101516111c391906145b1565b825160600152815160c001516020808401510151111561122e5781516060015160208084015101511161120d57602080830151015182516060015161120891906145c4565b61120f565b805b825160a0908101919091528251015181111561122e57815160a0018190525b611245826101a00151836000015160a00151611e8f565b825161012001526101a0820151825160c001516112629190611e8f565b8251610100908101919091528251908101516101209091015161128591906145b1565b825160e001525b81516101000151602083015160400151116112ad57815161010001516112b7565b8160200151604001515b6102008301819052825161012001516101a08401516112d691906145c4565b6112e091906145c4565b6101008301526040516001600160a01b038b169063bd02d0f590611337906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161136b91815260200190565b602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac91906140fe565b61012083018190526101008301516113c391611e8f565b61014083018190526101008301516113db91906145c4565b6101808301525098975050505050505050565b60008061140c8461140185516020015190565b604086015151611f84565b90508061141e84602001516080015190565b111561145157602083015160800151604051634cd96ac160e11b8152600481019190915260248101829052604401610b1f565b600061146284602001516080015190565b61146c90836145c4565b905061148361147d85602001515190565b82611e8f565b95945050505050565b611494613d82565b61149c613d82565b82815283516114ab9084614604565b816020018181525050846001600160a01b031663bd02d0f5604051602001611504906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161153891815260200190565b602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906140fe565b60408201819052602082015161158e91611e8f565b6060820152949350505050565b6000846001600160a01b031663bd02d0f56115b7868686611ffe565b6040518263ffffffff1660e01b81526004016115d591815260200190565b602060405180830381865afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906140fe565b90505b949350505050565b6000846001600160a01b031663bd02d0f56115b786868661209e565b611645613daa565b61164d613daa565b611655613de6565b6000611669866040015187606001516120eb565b9050611681878760000151886040015160018561211a565b825151528551606087015161169a91899160018561211a565b82515160200152855160408701516116b691899160008561211a565b82516020015152855160608701516116d291899160008561211a565b82516020908101518101919091528251519081015190516116f391906145b1565b602080840191909152825181015190810151905161171191906145b1565b60408301526020820151158061172957506040820151155b1561173957829350505050610735565b6117478787600001516121aa565b60608301819052865160208401516040850151611768938b93929190612242565b60408601521515808552602085019190915261178857816040015161178e565b81602001515b60808301819052602084015160608401516117b292916117ad916145d7565b611e8f565b60a083018190526117c4908290614604565b60a08301528251156118155760a08201518251515160208401516117e9929190612950565b60c083015260a08201518251516020908101519084015161180b929190612950565b60e083015261185b565b60a0820151825160200151516040840151611831929190612950565b60c083015260a0820151825160209081015101516040840151611855929190612950565b60e08301525b8251156119195760c0820151825151516020808801510151611880929190600161295d565b6060840151515260e08201518251516020908101516040880151909101516118ab929190600161295d565b83606001516000015160200181815250506118d98260c001518360400151876020015160200151600061295d565b83608001516020015160000181815250506119078260e001518360400151876040015160200151600061295d565b608084015160209081015101526119d5565b61193e8260c0015183600001516020015160000151876020015160200151600161295d565b83606001516020015160000181815250506119748260e0015183600001516020015160200151876040015160200151600161295d565b83606001516020015160200181815250506119a28260c001518360200151876020015160200151600061295d565b6080840151515260e08201516020808401516040880151909101516119ca929190600061295d565b608084015151602001525b509095945050505050565b6119e8613e31565b611a0c83606001516119ff846020015160a0015190565b60208501515160016129c5565b83526080830151611a3390611a26846020015160c0015190565b60208501515160006129c5565b602084015260a0830151611a5090611a26846020015160e0015190565b60408401525090919050565b611a64613e67565b611a6c613e67565b6001600160a01b038316611a81579050611619565b6001600160a01b0383168152611a9786846129fc565b60208201819052855190611aac908690611e8f565b611ab69190614604565b604082015295945050505050565b6000808080806001600160a01b038716611aec57506000935083925082915081905080611df8565b6040516310ae4b6b60e31b81526000906001600160a01b038916906385725b5890611b1b908a90600401614618565b602060405180830381865afa158015611b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5c91906140fe565b905060008080808415611daa576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd291906140e1565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b8152600401611c029190614618565b602060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4391906140fe565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae919061462c565b90945092506001600160a01b038e1663bd02d0f5611ccb83612b42565b6040518263ffffffff1660e01b8152600401611ce991815260200190565b602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906140fe565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b8152600401611d5a9190614618565b602060405180830381865afa158015611d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9b91906140fe565b90508015611da7578093505b50505b6000611dcb612710611dbc85876145d7565b611dc69190614604565b612b83565b90506000611dd885612b83565b90506000611de683836145c4565b979c50959a5095985096509450505050505b939792965093509350565b6000604051602001611e3c906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03851690820152821515606082015260800160405160208183030381529060405280519060200120905092915050565b6000610735838368327cb2734119d3b7a9601e1b612950565b6000604051602001611edd906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b6040516020818303038152906040528051906020012082604051602001611f05929190614086565b604051602081830303815290604052805190602001209050919050565b6000604051602001611f5b90602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301528101839052606001611f05565b6000836001600160a01b031663bd02d0f5611f9f8585612ba8565b6040518263ffffffff1660e01b8152600401611fbd91815260200190565b602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161991906140fe565b600060405160200161203f906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0016040516020818303038152906040528051906020012090509392505050565b600060405160200161203f9060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b6000816001600160a01b0316836001600160a01b03161461210d576001612110565b60025b60ff169392505050565b600081866001600160a01b031663bd02d0f5612137888888612be9565b6040518263ffffffff1660e01b815260040161215591815260200190565b602060405180830381865afa158015612172573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219691906140fe565b6121a09190614604565b9695505050505050565b600080836001600160a01b031663bd02d0f56121c585612c1c565b6040518263ffffffff1660e01b81526004016121e391815260200190565b602060405180830381865afa158015612200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222491906140fe565b905080600003612238576000915050610649565b61161981426145c4565b600080600061229d604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6122a78787612c54565b81526122b386886145b1565b8160200181815250506122f56040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b896001600160a01b031663bd02d0f561230d8b612c76565b6040518263ffffffff1660e01b815260040161232b91815260200190565b602060405180830381865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c91906140fe565b6040820152815115801561238257506040810151155b1561239a576000600160009450945094505050612945565b81602001516000036123bf576040516311423d9560e01b815260040160405180910390fd5b6123c98a8a612cc4565b6060830181905282516123db91612cfc565b6080830181905260208301516123f19190612d5b565b60a083015260408101516000036124c15761240c8a8a612d69565b604083015260006001600160a01b038b1663bd02d0f561242b8c612d83565b6040518263ffffffff1660e01b815260040161244991815260200190565b602060405180830381865afa158015612466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248a91906140fe565b905060006124a08460a001518560400151611e8f565b9050818111156124ad5750805b955050508587119250600091506129459050565b6124cb8a8a612dc6565b60c083018190526124db90612de0565b60e08301526001600160a01b038a1663bd02d0f56124f88b612df3565b6040518263ffffffff1660e01b815260040161251691815260200190565b602060405180830381865afa158015612533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255791906140fe565b81526001600160a01b038a1663bd02d0f56125718b612e35565b6040518263ffffffff1660e01b815260040161258f91815260200190565b602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d091906140fe565b602082015260c082015161010083018190526000908190811280156125f45750888a115b8061260d575060008460c0015112801561260d57508989115b9050801561264557825160a0850151111561262b576001915061264a565b82602001518460a00151101561264057600291505b61264a565b600191505b600182600281111561265e5761265e614650565b036126c057600061266e89610b28565b6126886126838760a001518760400151611e8f565b610b28565b6126929190614666565b9050898b10156126a8576126a58161434e565b90505b808560c001516126b89190614589565b610100860152505b60028260028111156126d4576126d4614650565b1480156126e4575060e084015115155b156127f1578b6001600160a01b031663bd02d0f56127018d612e78565b6040518263ffffffff1660e01b815260040161271f91815260200190565b602060405180830381865afa15801561273c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276091906140fe565b60608401819052600090612775908a906145d7565b9050808560e00151116127a95761278f8560e00151610b28565b8560c0015161279e9190614696565b6101008601526127ef565b60006127b88660e00151610b28565b8660c001516127c79190614696565b9050806127dd838860e0015161268391906145c4565b6127e79190614666565b610100870152505b505b8b6001600160a01b031663bd02d0f56128098d612ec6565b6040518263ffffffff1660e01b815260040161282791815260200190565b602060405180830381865afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286891906140fe565b60808401526001600160a01b038c1663bd02d0f56128858d612d83565b6040518263ffffffff1660e01b81526004016128a391815260200190565b602060405180830381865afa1580156128c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e491906140fe565b60a084018190526101008501516128fd91600090612f09565b6101008501819052608084015160a085015161291a929190612f09565b610120850181905261292b90612de0565b600085610120015113856101000151965096509650505050505b955095509592505050565b6000611619848484612f69565b600084158061296a575083155b1561297757506000611619565b60006129a18661299a66038d7ea4c6800068327cb2734119d3b7a9601e1b6145d7565b8786613053565b905082156129bb576129b3818561307a565b915050611619565b6129b38482614604565b6000806129d285876145c4565b90506121a084826129f666038d7ea4c6800068327cb2734119d3b7a9601e1b6145d7565b86613053565b600080836001600160a01b031663bd02d0f5604051602001612a439060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612a7791815260200190565b602060405180830381865afa158015612a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab891906140fe565b90506000846001600160a01b031663bd02d0f5612ad48661309d565b6040518263ffffffff1660e01b8152600401612af291815260200190565b602060405180830381865afa158015612b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3391906140fe565b90508181106116195781611483565b6000604051602001611f5b906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b6000612710612b9e68327cb2734119d3b7a9601e1b846145d7565b6106499190614604565b6000604051602001611e3c906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b600060405160200161203f906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b6000604051602001611edd9060208082526012908201527111955391125391d7d554111055115117d05560721b604082015260600190565b6000818311612c6c57612c6783836145c4565b610735565b61073582846145c4565b6000604051602001611edd9060208082526022908201527f46554e44494e475f494e4352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000826001600160a01b031663bd02d0f5612cde846130d0565b6040518263ffffffff1660e01b81526004016106f491815260200190565b600068327cb2734119d3b7a9601e1b831015612d1a57506000610649565b68327cb2734119d3b7a9601e1b8203612d34575081610649565b6000612d50612d428561310d565b612d4b8561310d565b61311e565b905061161981613160565b600061073583836000613171565b6000826001600160a01b031663bd02d0f5612cde846131c0565b6000604051602001611edd906020808252601d908201527f4d41585f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000826001600160a01b031663dc97d962612cde846131f4565b600080821215610b925781600003610649565b6000604051602001611edd906020808252601c908201527b5448524553484f4c445f464f525f535441424c455f46554e44494e4760201b604082015260600190565b6000604051602001611edd906020808252601e908201527f5448524553484f4c445f464f525f44454352454153455f46554e44494e470000604082015260600190565b6000604051602001611edd9060208082526022908201527f46554e44494e475f44454352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000604051602001611edd906020808252601d908201527f4d494e5f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b600080612f1585612de0565b905083811015612f225750825b82811115612f2d5750815b60008515612f5057612f4161268387612de0565b612f4b9087614696565b612f53565b60015b905080612f5f83610b28565b6121a09190614666565b6000808060001985870985870292508281108382030391505080600003612fa357838281612f9957612f996145ee565b0492505050610735565b808411612fea5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610b1f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000811561306f576130688585856001613237565b9050611619565b611616858585612f69565b600081600161308982866145b1565b61309391906145c4565b6107359190614604565b6000604051602001611edd906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b6000604051602001611edd90602080825260179082015276232aa72224a723afa2ac2827a722a72a2fa320a1aa27a960491b604082015260600190565b600061064964e8d4a5100083614604565b60008260000361314657811561313557600061313f565b670de0b6b3a76400005b9050610649565b61073561315b61315585613288565b8461333e565b61334a565b600061064964e8d4a51000836145d7565b60008360000361318357506000610735565b81156131a9576131a28468327cb2734119d3b7a9601e1b856001613237565b9050610735565b6116198468327cb2734119d3b7a9601e1b85612f69565b6000604051602001611edd906020808252600e908201526d232aa72224a723afa320a1aa27a960911b604082015260600190565b6000604051602001611edd906020808252601f908201527f53415645445f46554e44494e475f464143544f525f5045525f5345434f4e4400604082015260600190565b600080613245868686612f69565b9050600183600281111561325b5761325b614650565b148015613278575060008480613273576132736145ee565b868809115b15611616576121a06001826145b1565b6000670de0b6b3a76400008210156132b657604051633621413760e21b815260048101839052602401610b1f565b60006132cb670de0b6b3a76400008404613390565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff1981016132f4575050919050565b6706f05b59d3b200005b801561333657670de0b6b3a7640000828002049150671bc16d674ec80000821061332e579283019260019190911c905b60011c6132fe565b505050919050565b60006107358383613473565b6000680a688906bd8b000000821061337857604051634a4f26f160e01b815260048101839052602401610b1f565b670de0b6b3a7640000604083901b0461073581613539565b6000600160801b82106133b057608091821c916133ad90826145b1565b90505b600160401b82106133ce57604091821c916133cb90826145b1565b90505b600160201b82106133ec57602091821c916133e990826145b1565b90505b62010000821061340957601091821c9161340690826145b1565b90505b610100821061342557600891821c9161342290826145b1565b90505b6010821061344057600491821c9161343d90826145b1565b90505b6004821061345b57600291821c9161345890826145b1565b90505b6002821061346e576106496001826145b1565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a764000081106134b75760405163698d9a0160e11b815260048101829052602401610b1f565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036134f55780670de0b6b3a7640000850401945050505050610649565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b8216156135595768016a09e667f3bcc9090260401c5b6001603e1b821615613574576801306fe0a31b7152df0260401c5b6001603d1b82161561358f576801172b83c7d517adce0260401c5b6001603c1b8216156135aa5768010b5586cf9890f62a0260401c5b6001603b1b8216156135c5576801059b0d31585743ae0260401c5b6001603a1b8216156135e057680102c9a3e778060ee70260401c5b600160391b8216156135fb5768010163da9fb33356d80260401c5b600160381b82161561361657680100b1afa5abcbed610260401c5b600160371b8216156136315768010058c86da1c09ea20260401c5b600160361b82161561364c576801002c605e2e8cec500260401c5b600160351b82161561366757680100162f3904051fa10260401c5b600160341b821615613682576801000b175effdc76ba0260401c5b600160331b82161561369d57680100058ba01fb9f96d0260401c5b600160321b8216156136b85768010002c5cc37da94920260401c5b600160311b8216156136d3576801000162e525ee05470260401c5b600160301b8216156136ee5768010000b17255775c040260401c5b6001602f1b821615613709576801000058b91b5bc9ae0260401c5b6001602e1b82161561372457680100002c5c89d5ec6d0260401c5b6001602d1b82161561373f5768010000162e43f4f8310260401c5b6001602c1b82161561375a57680100000b1721bcfc9a0260401c5b6001602b1b8216156137755768010000058b90cf1e6e0260401c5b6001602a1b821615613790576801000002c5c863b73f0260401c5b600160291b8216156137ab57680100000162e430e5a20260401c5b600160281b8216156137c6576801000000b1721835510260401c5b600160271b8216156137e157680100000058b90c0b490260401c5b600160261b8216156137fc5768010000002c5c8601cc0260401c5b600160251b821615613817576801000000162e42fff00260401c5b600160241b8216156138325768010000000b17217fbb0260401c5b600160231b82161561384d576801000000058b90bfce0260401c5b600160221b82161561386857680100000002c5c85fe30260401c5b600160211b8216156138835768010000000162e42ff10260401c5b600160201b82161561389e57680100000000b17217f80260401c5b63800000008216156138b95768010000000058b90bfc0260401c5b63400000008216156138d4576801000000002c5c85fe0260401c5b63200000008216156138ef57680100000000162e42ff0260401c5b631000000082161561390a576801000000000b17217f0260401c5b630800000082161561392557680100000000058b90c00260401c5b63040000008216156139405768010000000002c5c8600260401c5b630200000082161561395b576801000000000162e4300260401c5b63010000008216156139765768010000000000b172180260401c5b62800000821615613990576801000000000058b90c0260401c5b624000008216156139aa57680100000000002c5c860260401c5b622000008216156139c45768010000000000162e430260401c5b621000008216156139de57680100000000000b17210260401c5b620800008216156139f85768010000000000058b910260401c5b62040000821615613a12576801000000000002c5c80260401c5b62020000821615613a2c57680100000000000162e40260401c5b62010000821615613a455761b172600160401b010260401c5b618000821615613a5d576158b9600160401b010260401c5b614000821615613a7557612c5d600160401b010260401c5b612000821615613a8d5761162e600160401b010260401c5b611000821615613aa557610b17600160401b010260401c5b610800821615613abd5761058c600160401b010260401c5b610400821615613ad5576102c6600160401b010260401c5b610200821615613aed57610163600160401b010260401c5b610100821615613b045760b1600160401b010260401c5b6080821615613b1a576059600160401b010260401c5b6040821615613b3057602c600160401b010260401c5b6020821615613b46576016600160401b010260401c5b6010821615613b5c57600b600160401b010260401c5b6008821615613b72576006600160401b010260401c5b6004821615613b88576003600160401b010260401c5b6002821615613b9e576001600160401b010260401c5b6001821615613bb4576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60408051610100810190915260006080820181815260a0830182905260c0830182905260e0830191909152815260208101613c04613c18565b815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b604051806102200160405280613ca96040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001613cd260405180606001604052806000815260200160008152602001600081525090565b8152602001613cdf613e31565b8152602001613cec613d82565b8152602001613cf9613e67565b8152602001613d296040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001613d36613c18565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000151581526020016000815260200160008152602001613dd4613e91565b8152602001613de1613e91565b905290565b604051806101000160405280613dfa613e91565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040518060400160405280613ea4613c18565b8152602001613de1613c18565b6001600160a01b0381168114613ec657600080fd5b50565b60008060408385031215613edc57600080fd5b8235613ee781613eb1565b91506020830135613ef781613eb1565b809150509250929050565b60008060408385031215613f1557600080fd5b8235613f2081613eb1565b946020939093013593505050565b604051606081016001600160401b0381118282101715613f5e57634e487b7160e01b600052604160045260246000fd5b60405290565b60405161014081016001600160401b0381118282101715613f5e57634e487b7160e01b600052604160045260246000fd5b600060408284031215613fa757600080fd5b604080519081016001600160401b0381118282101715613fd757634e487b7160e01b600052604160045260246000fd5b604052823581526020928301359281019290925250919050565b60008060008084860361012081121561400957600080fd5b853561401481613eb1565b9450602086013561402481613eb1565b93506040860135925060c0605f198201121561403f57600080fd5b50614048613f2e565b6140558760608801613f95565b81526140648760a08801613f95565b60208201526140768760e08801613f95565b6040820152939692955090935050565b9182526001600160a01b0316602082015260400190565b8051801515811461346e57600080fd5b6000602082840312156140bf57600080fd5b6107358261409d565b6001600160a01b03929092168252602082015260400190565b6000602082840312156140f357600080fd5b815161073581613eb1565b60006020828403121561411057600080fd5b5051919050565b60006020828403121561412957600080fd5b604051602081016001600160401b038111828210171561415957634e487b7160e01b600052604160045260246000fd5b6040529050806141688361409d565b905292915050565b60008183036101c08112801561418557600080fd5b506000614190613f2e565b606083121561419d578182fd5b6141a5613f2e565b85516141b081613eb1565b815260208601516141c081613eb1565b602082015260408601516141d381613eb1565b60408201528152610140605f19840112156141ec578182fd5b6141f4613f64565b606086810151825260808088015160208085019190915260a0808a0151604086015260c0808b01519486019490945260e0808b015193860193909352610100808b015191860191909152610120808b0151948601949094526101408a0151928501929092526101608901519184019190915261018088015191830182905283018290529093509150611ab6866101a08701614117565b6001600160a01b0392831681529116602082015260400190565b600060808284031280156142b757600080fd5b50604051608081016001600160401b03811182821017156142e857634e487b7160e01b600052604160045260246000fd5b60405282516142f681613eb1565b8152602083015161430681613eb1565b6020820152604083015161431981613eb1565b6040820152606083015161432c81613eb1565b60608201529392505050565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b820161436357614363614338565b5060000390565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6143b282825180518252602090810151910152565b602081810151805160408501529081015160608401525060400151805160808301526020015160a090910152565b6001600160a01b03881681526101e081016143fe602083018961436a565b61440b60a083018861439d565b8561016083015284610180830152836101a08301528215156101c083015298975050505050505050565b6000606082840312801561444857600080fd5b50614451613f2e565b825181526020808401519082015261446b6040840161409d565b60408201529392505050565b6001600160a01b03861681526103408101614495602083018761436a565b6144a260a083018661439d565b835180516001600160a01b0390811661016085015260208083015182166101808601526040928301519091166101a08501528086015180516101c0860152908101516101e0850152808201516102008501526060810151610220850152608081015161024085015260a081015161026085015260c081015161028085015260e08101516102a08501526101008101516102c085015261012001516102e08401529093015151151561030082015261032001529392505050565b60008060006060848603121561457057600080fd5b5050815160208301516040909301519094929350919050565b80820182811260008312801582168215821617156145a9576145a9614338565b505092915050565b8082018082111561064957610649614338565b8181038181111561064957610649614338565b808202811582820484141761064957610649614338565b634e487b7160e01b600052601260045260246000fd5b600082614613576146136145ee565b500490565b6001600160a01b0391909116815260200190565b6000806040838503121561463f57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052602160045260246000fd5b80820260008212600160ff1b8414161561468257614682614338565b818105831482151761064957610649614338565b6000826146a5576146a56145ee565b600160ff1b8214600019841416156146bf576146bf614338565b50059056fea2646970667358221220ffb1caf24cc79220debc373e90473fbd76332e740c13885b5e1de3dcec7083e564736f6c634300081c0033