0 txs
0 calls
constructor
constructor(address rs, address ds)
functions
assetStore
viewfunction assetStore() view returns (address)
BPS_DIVIDER
viewfunction BPS_DIVIDER() view returns (uint256)
chainlink
viewfunction chainlink() view returns (address)
CONTRACT
viewfunction CONTRACT() view returns (bytes32)
DS
viewfunction DS() view returns (address)
funding
viewfunction funding() view returns (address)
fundingStore
viewfunction fundingStore() view returns (address)
fundStore
viewfunction fundStore() view returns (address)
getPnL
viewfunction getPnL(address asset, string market, bool isLong, uint256 price, uint256 positionPrice, uint256 size, int256 fundingTracker) view returns (int256 pnl, int256 fundingFee)
gov
viewfunction gov() view returns (address)
marketStore
viewfunction marketStore() view returns (address)
orderStore
viewfunction orderStore() view returns (address)
pool
viewfunction pool() view returns (address)
poolStore
viewfunction poolStore() view returns (address)
positionStore
viewfunction positionStore() view returns (address)
rewards
viewfunction rewards() view returns (address)
riskStore
viewfunction riskStore() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
stakingStore
viewfunction stakingStore() view returns (address)
UNIT
viewfunction UNIT() view returns (uint256)
addMargin
payablefunction addMargin(address asset, string market, uint256 margin) payable
closePositionWithoutProfit
nonpayablefunction closePositionWithoutProfit(address _asset, string _market)
creditFee
nonpayablefunction creditFee(uint256 orderId, address user, address asset, string market, uint256 fee, bool isLiquidation, address keeper)
decreasePosition
nonpayablefunction decreasePosition(uint256 orderId, uint256 price, address keeper)
increasePosition
nonpayablefunction increasePosition(uint256 orderId, uint256 price, address keeper)
link
nonpayablefunction link()
removeMargin
nonpayablefunction removeMargin(address asset, string market, uint256 margin)
setGov
nonpayablefunction setGov(address _gov)
events
FeePaid
event FeePaid(uint256 indexed orderId, address indexed user, address indexed asset, string market, uint256 fee, uint256 poolFee, uint256 stakingFee, uint256 treasuryFee, uint256 keeperFee, bool isLiquidation)
MarginDecreased
event MarginDecreased(address indexed user, address indexed asset, string market, uint256 marginDiff, uint256 positionMargin)
MarginIncreased
event MarginIncreased(address indexed user, address indexed asset, string market, uint256 marginDiff, uint256 positionMargin)
PositionDecreased
event PositionDecreased(uint256 indexed orderId, address indexed user, address indexed asset, string market, bool isLong, uint256 size, uint256 margin, uint256 price, uint256 positionMargin, uint256 positionSize, uint256 positionPrice, int256 fundingTracker, uint256 fee, int256 pnl, int256 pnlUsd, int256 fundingFee)
PositionIncreased
event PositionIncreased(uint256 indexed orderId, address indexed user, address indexed asset, string market, bool isLong, uint256 size, uint256 margin, uint256 price, uint256 positionMargin, uint256 positionSize, uint256 positionPrice, int256 fundingTracker, uint256 fee)
SetGov
event SetGov(address prevGov, address nextGov)
errors
No errors.
creation bytecode
0x608034620000ce57601f6200485638819003918201601f19168301916001600160401b03831184841017620000d3578084926040948552833981010312620000ce5780516001600160a01b03808216929091839003620000ce576020015191818316809303620000ce577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f785604060005460018060a01b0319943386831617600055825191168152336020820152a1816001541617600155600254161760025560405161476c9081620000ea8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe61014080604052600436101561001457600080fd5b600090813560e01c908163077d17f8146131f45750806312d43a51146131cd57806316f0115b146131a45780631c4695f414612ae85780632ac38dbd14612abf5780633157d39d14612a965780633f34b2b21461240d5780634242bac0146123e457806346ffceec146122d75780634a4a7b04146122ae578063597a0e36146122855780635f7ddaaa1461225c57806360465d11146122335780636c36609414611f695780637c4283bc14611f4c578063835f165114611edb578063861b6a9014611eb25780639c3feeb714611e895780639d8e217714611e665780639ec5a89414611e3d578063a9aa28e114610b6e578063b2515698146106e7578063b253e5e6146106be578063b8d2c69314610695578063cb4c86b71461066c578063cfad57a2146105f6578063f36fdc03146101815763fc833ac61461015657600080fd5b3461017e578060031936011261017e5760206040516000805160206147178339815191528152f35b80fd5b503461017e57604036600319011261017e5761019b613219565b6024356001600160401b0381116105ce576101ba9036906004016132fd565b6009546040516306e32f3b60e11b81526001600160a01b03918216949093919290918685806101ef858588336004860161388c565b0381895afa9485156104eb5787956105d2575b50610212608086015115156138b5565b8660808601516060870151151597803b156105ce578291829160405180948180946305dfed9960e11b82528c8c169e8f60048401526080602484015261025c608484018d8d61386b565b916044840152606483015203925af180156105ab576105ba575b5084600c5416803b156105b657816040518092635ff2138760e01b82528a6004830152604060248301528183816102b1604482018b8b61386b565b03925af180156105ab57610597575b505083600654169487604051809763349f642f60e11b82526020600483015281806102ef60248201898961386b565b03915afa958615610568578896610573575b50602085604081600f5416980151166024604051809981936341976e0960e01b835260048301525afa95861561056857889661052f575b506103448615156139ea565b876103726060830151151560e08401516080850151908a60c08701519361036c368b8b6132a8565b8b6143fa565b50126104fa5784889560095416803b156104f65760405163e512766b60e01b815290879082908183816103ab8b8b8e336004860161388c565b03925af19081156104eb5787916104d3575b50506004541660a08201948551823b156104cf576103f69288928360405180968195829463078d3b7960e01b8452339060048501613849565b03925af19081156104c45786916104ac575b50507f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c9360608201511596608083015191519061045b60c060e086015195015195604051976101a0808a5289019161386b565b986020870152826040870152816060870152608086015260a085015260c084015260e0830152610100820152826101208201528261014082015282610160820152826101808201528033940390a480f35b6104b590613259565b6104c0578438610408565b8480fd5b6040513d88823e3d90fd5b8780fd5b6104dc90613259565b6104e75785386103bd565b8580fd5b6040513d89823e3d90fd5b8680fd5b60405162461bcd60e51b815260206004820152600d60248201526c21706e6c2d706f73697469766560981b6044820152606490fd5b9095506020813d602011610560575b8161054b6020938361326c565b8101031261055b57519438610338565b600080fd5b3d915061053e565b6040513d8a823e3d90fd5b6105909196503d808a833e610588818361326c565b8101906138ed565b9438610301565b6105a090613259565b6104f65786386102c0565b6040513d84823e3d90fd5b5080fd5b6105c390613259565b6104f6578638610276565b8280fd5b6105ef9195503d8089833e6105e7818361326c565b8101906135f1565b9338610202565b503461017e57602036600319011261017e577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f7856040610633613219565b83546001600160a01b038082169261064c338514613371565b166001600160a01b0319919091168117855582519182526020820152a180f35b503461017e578060031936011261017e57600c546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57600b546040516001600160a01b039091168152602090f35b503461017e576106f63661332a565b600754604051637699d2c160e11b815292949290602090829060049082906001600160a01b03165afa80156104c4578690610b33575b610737915015613a1f565b60065460405163349f642f60e11b8152602060048201529290869084906001600160a01b0316818061076d602482018b8b61386b565b03915afa9283156104c4578693610b17575b506009546040516306e32f3b60e11b815293906001600160a01b03168785806107ae8a8a88336004860161388c565b0381845afa948515610568578895610afb575b506107d1608086015115156138b5565b6107e08460a087015111613a55565b6107ee8460a08701516137c6565b6080860151670de0b6b3a7640000908082029082820403610a2c57826108139161370e565b6060850151828102928184041490151715610a2c5711610ac657600f5460409384015193516341976e0960e01b81526001600160a01b0394851660048201528a94909160209183916024918391165afa908115610abb57899188918691610a7d575b5090816108876108b1949315156139ea565b606082015115159060e0830151916108ab8d60c060808701519601519636916132a8565b8a6143fa565b508381126109ab575b5060a0860152803b156105b6578160405180926378eaac7d60e01b82528183816108e78b6004830161372e565b03925af180156105ab57610997575b506004546001600160a01b0316803b156105b65781604051809263078d3b7960e01b825281838161092c8a338b60048501613849565b03925af180156105ab57610983575b505061097d60a07f0f449301999d3383602e2a69160bbb040a065132cd68168def96131d8b9946a394015160405193849360018060a01b031697339785613a8b565b0390a380f35b61098c90613259565b6104e757853861093b565b6109a090613259565b6104e75785386108f6565b6109b69193506137d3565b604051630d61264760e31b8152602081600481865afa908115610a72578a91610a40575b50612710908103818111610a2c576109f290856136d8565b041115610a01578791386108ba565b606460405162461bcd60e51b8152602060048201526004602482015263085d5c1b60e21b6044820152fd5b634e487b7160e01b8b52601160045260248bfd5b90506020813d602011610a6a575b81610a5b6020938361326c565b8101031261055b5751386109da565b3d9150610a4e565b6040513d8c823e3d90fd5b95505050506020833d602011610ab3575b81610a9b6020938361326c565b8101031261055b576108b188878b9551909192610875565b3d9150610a8e565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c216d61782d6c6576657261676560981b6044820152606490fd5b610b109195503d808a833e6105e7818361326c565b93386107c1565b610b2c9193503d8088833e610588818361326c565b913861077f565b506020813d602011610b66575b81610b4d6020938361326c565b810103126104e757610b61610737916133b7565b61072c565b3d9150610b40565b503461017e57610b7d3661322f565b60015460405163ac4ab3fb60e01b8152336004820152600080516020614717833981519152602482015292939192906001600160a01b0316602082604481845afa9182156104c4578692611dfd575b50610bd86024926133c4565b600754604051634a83e9cd60e11b81526004810185905292879184919082906001600160a01b03165afa9182156104c4578692611de1575b506009546020830151604080850151606086015191516306e32f3b60e11b8152938a9385936001600160a01b039283169385938493610c57939282169116600485016136af565b03915afa9081156104eb578791611dc7575b50608081015160a08401519081811115611dc1575080945b610c8c8680936137c6565b9589948a9061014088015115611d8e575b610cb9610cae8460e08b01516136d8565b60a08a01519061370e565b9060448d60018060a01b0360208c015116928b6020606060018060a01b03604084015116920151926040519586809263ac4ab3fb60e01b825233600483015260008051602061471783398151915260248301525afa948515611d83578f94879496611d36575b50610d2c610d32966133c4565b89613aaf565b600e54602089015160408a01518e926001600160a01b0390811692811691610d5c9186911661454a565b823b1561184e57610d869284928360405180968195829463869307df60e01b8452600484016137ab565b03925af180156105ab57611d22575b505061014088015115611d1a57935b8b60018060a01b036009541660018060a01b0360408b01511660608b01519160a08c01519060608b0151151593813b156104e757858094610dfb604051978896879586946305dfed9960e11b86526004860161359c565b03925af180156105ab57611d02575b50600c5460408a015160608b01516001600160a01b039283169290911690823b1561184e57610e5292849283604051809681958294635ff2138760e01b8452600484016135cf565b03925af180156105ab5785898f85948e94611ce5575b5060408401516060948501519483015160e084015160c090940151610e9b975095901515916001600160a01b03166143fa565b948190610eba610eaf8260a08d01516136d8565b60808c01519061370e565b92610ec860a08c01516137d3565b12611c2b575050509050610edf60a08701516137d3565b9260a08701516080880151948360808a01525b600a5460408c01516001600160a01b039182169116813b156104e757859160448392604051948593849263e3af01bb60e01b845260048401528760248401525af1908115611a06578591611c17575b50811215611b8757610f52816137d3565b600d5460208d015160408e015160608f01516001600160a01b039182169392821692909116803b15611b83578493898094610fa36040519788968795869463b931db6d60e01b865260048601613817565b03925af180156104c4578a918791611b6c575b5050610fc191613701565b828110611b56575b505b6080890151611af35760095460208c015160408d015160608e01516001600160a01b039182169392821692909116803b156104cf57611024938880946040519687958694859363e512766b60e01b8552600485016136af565b03925af1908115611a06578591611adf575b50505b6007546001600160a01b0316803b156104c057848091602460405180948193634cc8221560e01b83528d60048401525af1908115611a06578591611acb575b505060045460408c015160208d01516001600160a01b03908116979181169216803b156104f6576110c3978780946040519a8b958694859363078d3b7960e01b855260048501613849565b03925af1938415611abf578e958c95611a9d575b5050600160a01b600190036020850151169781600160a01b600190036040870151169a8b606088015197610100015115159860a08301519060808401519260e08501519460c00151956111299161454a565b976040519c8d9c8d9c8d6101a081526101a00161114591613577565b9c6020015260408d015260608c015260808b015260a08a015260c089015260e0880152610100870152610120860152610140850152610160840152610180830152037f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c91a46101408201511580611a94575b6111bf578580f35b60018060a01b036020830151169160608101519160018060a01b036040830151169461120661010084015115159360a06111fd8460e08401516136d8565b9101519061370e565b9160405194856101c08101106001600160401b036101c088011117611a7e578a976020976101c088016040528988528888015260408701526060860152608085015260a08401528460c084015260e083015261010082015282610120820152826101408201524261016082015282610180820152826101a082015260018060a01b036007541660405180948180946367637b9160e01b82528660048301528051602483015260018060a01b038782015116604483015260018060a01b0360408201511660648301526101a06112ec60608301516101c060848601526101e4850190613577565b91608081015160a485015260a081015160c485015260c081015160e485015260e0810151610104850152610100810151151561012485015260ff6101208201511661014485015261014081015115156101648501526101608101516101848501526101808101516101a485015201516101c483015203925af1908115610abb578491611a4c575b5060015460405163ac4ab3fb60e01b8152336004820152600080516020614717833981519152602482015290602090829060449082906001600160a01b03165afa8015611a06578590611a11575b6113cb91506133c4565b600754604051634a83e9cd60e11b815260048101839052908590829060249082906001600160a01b03165afa908115611a065785916119e4575b50600a546040820151606083015160a0840151889390926001600160a01b039081169116803b156104c057849261146092604051958694859384936362b3866f60e01b85526004850152606060248501526064840190613577565b90604483015203915afa80156105ab576119d0575b506009546040830151606084015160a08501516101008601511515936001600160a01b03938416939192911690813b156104e7578580946114cc6040519788968795869463428d156160e01b86526004860161359c565b03925af180156105ab576119bc575b50600c54604083015160608401516001600160a01b039283169290911690823b1561184e5761152392849283604051809681958294635ff2138760e01b8452600484016135cf565b03925af180156105ab576119a8575b50506009546020820151604080840151606085015191516306e32f3b60e11b8152969389936001600160a01b039182169385938a93849361157b939282169116600485016136af565b0381845afa9586156105ab57829661198c575b506115d56115bc6115a8608089015160e08a0151906136d8565b6115b68a60a08901516136d8565b90613701565b6115cf608089015160a088015190613701565b9061370e565b6080870151156118ca575b6115f260a08601516080890151613701565b6080880152611609608086015160a0890151613701565b60a088015260e0870152803b156105b6578160405180926378eaac7d60e01b825281838161163a8c6004830161372e565b03925af180156105ab576118b6575b506007546001600160a01b0316803b156105b657818091602460405180948193634cc8221560e01b83528a60048401525af180156105ab576118a2575b5050602082810151604080850151606086015160e0870151600154935163ac4ab3fb60e01b815233600482015260008051602061471783398151915260248201529695909491936001600160a01b03938416939283169288916044918391165afa958615611897578b96611852575b50611702611708966133c4565b87613aaf565b600e546020820151604083015160e084015188936001600160a01b039081169381169261173692911661454a565b823b1561184e576117609284928360405180968195829463869307df60e01b8452600484016137ab565b03925af180156105ab5761183a575b50506117fe7f3a1062142d0d194eaf2928092e53c3f84f5602268f2b82effd44010aff82cb909160018060a01b036020820151169460018060a01b036040830151169660608301519261010081015115159260a08201519260808301519060a08301519060808401519260e060c081870151960151960151966040519a8b9a6101408c526101408c0190613577565b9860208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301520390a438808080808580f35b61184390613259565b6104c057843861176f565b8380fd5b95506020863d60201161188f575b8161186d6020938361326c565b8101031261188b57611702611884611708976133b7565b96506116f5565b8a80fd5b3d9150611860565b6040513d8d823e3d90fd5b6118ab90613259565b6104e7578538611686565b6118bf90613259565b6104e7578538611649565b6020858101516001600160a01b0390811689526040808801805183168b8501526060808a018051848e015242610100808f01919091528b01511515918d019190915260055491519051925163183bb37960e01b815294938593928116928492839261193a929116600484016135cf565b03915afa908115610abb578491611957575b5060c08801526115e0565b9350506020833d602011611984575b816119736020938361326c565b8101031261055b578892513861194c565b3d9150611966565b6119a19196503d8084833e6105e7818361326c565b943861158e565b6119b190613259565b6104c0578438611532565b6119c590613259565b6104c05784386114db565b6119d990613259565b6104c0578438611475565b611a0091503d8087833e6119f8818361326c565b810190613474565b38611405565b6040513d87823e3d90fd5b506020813d602011611a44575b81611a2b6020938361326c565b810103126104c057611a3f6113cb916133b7565b6113c1565b3d9150611a1e565b90506020813d602011611a76575b81611a676020938361326c565b8101031261055b575138611373565b3d9150611a5a565b634e487b7160e01b600052604160045260246000fd5b508215156111b7565b90929550611aac919450613259565b611abb578b9289928e386110d7565b8c80fd5b604051903d90823e3d90fd5b611ad490613259565b61184e578338611078565b611ae890613259565b61184e578338611036565b6009546001600160a01b0316803b156104c05784611b2981928c6040519485809481936378eaac7d60e01b83526004830161372e565b03925af1908115611a06578591611b42575b5050611039565b611b4b90613259565b61184e578338611b3b565b946115b6611b659296846137c6565b9338610fc9565b611b77919250613259565b6104c057888538610fb6565b8880fd5b600d5460208c015160408d015160608e01519397936001600160a01b039182169392821692909116803b156104cf578893888094611bdb604051978896879586946309a599fb60e31b865260048601613817565b03925af1908115611a06578591611c03575b5050611bfd906115b689846137c6565b93610fcb565b611c0c90613259565b61184e578338611bed565b611c2090613259565b61184e578338610f41565b611c5090611c418460a08d9a97989a01516137c6565b60a08c015260808b01516137c6565b60808a01526005546040808d015160608e0151915163183bb37960e01b81529260209284926001600160a01b039283169284928392611c939216600484016135cf565b03915afa908115611a06578591611cb0575b5060c08a0152610ef2565b9450506020843d602011611cdd575b81611ccc6020938361326c565b8101031261055b578e935138611ca5565b3d9150611cbf565b92505050611cf39150613259565b61017e57808985898f38610e68565b611d0b90613259565b611d16578b38610e0a565b8b80fd5b508a93610da4565b611d2b90613259565b611d16578b38610d95565b9350935093506020823d602011611d7b575b81611d556020938361326c565b81010312611d7757610d32938e93610d2c611d7088956133b7565b9650610d1f565b8f80fd5b3d9150611d48565b6040513d85823e3d90fd5b955050611dad611da28260808901516136d8565b60a08801519061370e565b611dbb8160808901516137c6565b95610c9d565b94610c81565b611ddb91503d8089833e6105e7818361326c565b38610c69565b611df69192503d8088833e6119f8818361326c565b9038610c10565b91506020823d602011611e35575b81611e186020938361326c565b810103126104e757610bd8611e2e6024936133b7565b9250610bcc565b3d9150611e0b565b503461017e578060031936011261017e57600e546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576020604051670de0b6b3a76400008152f35b503461017e578060031936011261017e57600f546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57600a546040516001600160a01b039091168152602090f35b503461017e5760e036600319011261017e57611ef5613219565b90602435906001600160401b03821161017e5750611f179036906004016132df565b60443591821515830361055b57604092611f409260c4359260a4359260843592606435926143fa565b82519182526020820152f35b503461017e578060031936011261017e5760206040516127108152f35b50611f733661332a565b9260018060a01b039160046020846007541660405192838092637699d2c160e11b82525afa80156104eb5787906121f9575b611fb0915015613a1f565b849280600954168760405180926306e32f3b60e11b82528180611fd9888c8b336004860161388c565b03915afa9081156105685788916121df575b506080810194611ffd865115156138b5565b888386169889156000146121805750905034948360045416803b156105ce57868391612042938260405180968195829463e4652f4960e01b8452339060048501613849565b03925af180156105ab5761216c575b50505b61205f841515613a55565b60a081019461206f858751613701565b865251670de0b6b3a76400009080820290828204036121585786516120939161370e565b1061212357879160095416803b156105ce576040516378eaac7d60e01b815291839183918290849082906120ca906004830161372e565b03925af180156105ab5761210f575b505061097d7f69dea4780434a9e7bcd91f9c264463d2db6f4f8088762fd4b51b944b57908e789351604051938493339785613a8b565b61211890613259565b6104e75785386120d9565b60405162461bcd60e51b815260206004820152600d60248201526c216d696e2d6c6576657261676560981b6044820152606490fd5b634e487b7160e01b8a52601160045260248afd5b61217590613259565b6104cf578738612051565b909195846004541691823b1561184e576121b59284928360405180968195829463e4652f4960e01b8452339060048501613849565b03925af180156105ab576121cb575b5050612054565b6121d490613259565b6104cf5787386121c4565b6121f391503d808a833e6105e7818361326c565b38611feb565b506020813d821161222b575b816122126020938361326c565b810103126104f657612226611fb0916133b7565b611fa5565b3d9150612205565b503461017e578060031936011261017e576008546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576003546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576001546040516001600160a01b039091168152602090f35b503461017e5760e036600319011261017e576001600160a01b03602435818116810361055b5760443590828216820361055b576064356001600160401b0381116104c0576123299036906004016132df565b9060a43591821515830361055b5760c43593858516850361055b576020604496600154166040519788809263ac4ab3fb60e01b825233600483015260008051602061471783398151915260248301525afa9586156104eb5787966123a4575b506123956123a1966133c4565b60843592600435613f0f565b80f35b95506020863d82116123dc575b816123be6020938361326c565b810103126104f6576123956123d56123a1976133b7565b9650612388565b3d91506123b1565b503461017e578060031936011261017e576002546040516001600160a01b039091168152602090f35b503461017e5761241c3661322f565b60015460405163ac4ab3fb60e01b815233600482015260008051602061471783398151915260248201529293919290602090829060449082906001600160a01b03165afa8015611a06578590612a5b575b61247791506133c4565b600754604051634a83e9cd60e11b815260048101839052908590829060249082906001600160a01b03165afa908115611a06578591612a41575b50600a546040820151606083015160a08401519288926001600160a01b0390811692911690813b1561184e5761250b92604051958694859384936362b3866f60e01b85526004850152606060248501526064840190613577565b90604483015203915afa80156104c457612a2e575b506009546040820151606083015160a08401516101008501518994901515936001600160a01b0390811693911690813b156104e7578580946125786040519788968795869463428d156160e01b86526004860161359c565b03925af180156105ab57612a1a575b50600c54604083015160608401516001600160a01b039283169290911690823b1561184e576125cf92849283604051809681958294635ff2138760e01b8452600484016135cf565b03925af180156105ab57612a06575b50506009546020820151604080840151606085015191516306e32f3b60e11b8152969389936001600160a01b039182169385938a938493612627939282169116600485016136af565b0381845afa9586156105ab5782966129ea575b506126546115bc6115a8608089015160e08a0151906136d8565b608087015115612928575b61267160a08601516080890151613701565b6080880152612688608086015160a0890151613701565b60a088015260e0870152803b156105b6578160405180926378eaac7d60e01b82528183816126b98c6004830161372e565b03925af180156105ab57612914575b506007546001600160a01b0316803b156105b657818091602460405180948193634cc8221560e01b83528a60048401525af180156105ab57612900575b5050602082810151604080850151606086015160e0870151600154935163ac4ab3fb60e01b815233600482015260008051602061471783398151915260248201529695909491936001600160a01b03938416939283169288916044918391165afa958615611897578b966128bf575b50611702612781966133c4565b600e546020820151604083015160e084015188936001600160a01b03908116938116926127af92911661454a565b823b1561184e576127d99284928360405180968195829463869307df60e01b8452600484016137ab565b03925af180156105ab576128ab575b50506128757f3a1062142d0d194eaf2928092e53c3f84f5602268f2b82effd44010aff82cb909160018060a01b036020820151169460018060a01b036040830151169660608301519261010081015115159260a08201519260808301519060a08301519060808401519260e060c081870151960151960151966040519a8b9a610140808d528c0190613577565b9860208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301520390a480f35b6128b490613259565b6104c05784386127e8565b95506020863d6020116128f8575b816128da6020938361326c565b8101031261188b576117026128f1612781976133b7565b9650612774565b3d91506128cd565b61290990613259565b6104e7578538612705565b61291d90613259565b6104e75785386126c8565b6020858101516001600160a01b0390811689526040808801805183168b8501526060808a018051848e015242610100808f01919091528b01511515918d019190915260055491519051925163183bb37960e01b8152949385939281169284928392612998929116600484016135cf565b03915afa908115610abb5784916129b5575b5060c088015261265f565b9350506020833d6020116129e2575b816129d16020938361326c565b8101031261055b57889251386129aa565b3d91506129c4565b6129ff9196503d8084833e6105e7818361326c565b943861263a565b612a0f90613259565b6104c05784386125de565b612a2390613259565b6104c0578438612587565b612a3a90959195613259565b9338612520565b612a5591503d8087833e6119f8818361326c565b386124b1565b506020813d602011612a8e575b81612a756020938361326c565b810103126104c057612a89612477916133b7565b61246d565b3d9150612a68565b503461017e578060031936011261017e576009546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e5780546001600160a01b0390612b119082163314613371565b8060025416906040519163bf40fac160e01b908184526020918260048601526024600a8187015260449169417373657453746f726560b01b8388015260649085888381885afa978815613199578998613162575b508660018060a01b031998168860035416176003556040519481865286600487015260099586858201526846756e6453746f726560b81b8682015287818581855afa80156118975789918c9161312a575b5016896004541617600455604051828152876004820152600c858201526b46756e64696e6753746f726560a01b8682015287818581855afa80156118975789918c916130f2575b5016896005541617600555604051828152876004820152600b858201526a4d61726b657453746f726560a81b8682015287818581855afa80156118975789918c916130ba575b5016896006541617600655604051828152876004820152600a85820152694f7264657253746f726560b01b8682015287818581855afa80156118975789918c91613082575b5016896007541617600755604051828152876004820152868582015268506f6f6c53746f726560b81b8682015287818581855afa80156118975789918c9161304a575b5016896008541617600855604051828152876004820152600d858201526c506f736974696f6e53746f726560981b8682015287818581855afa80156118975789918c91613012575b5016898754161786556040518281528760048201528685820152685269736b53746f726560b81b8682015287818581855afa80156118975789918c91612fda575b501689600a541617600a55604051828152876004820152600c858201526b5374616b696e6753746f726560a01b8682015287818581855afa80156118975789918c91612fa2575b501689600b541617600b556040518281528760048201526007858201526646756e64696e6760c81b8682015287818581855afa80156118975789918c91612f6a575b501689600c541617600c5560405182815287600482015260048582015263141bdbdb60e21b8682015287818581855afa80156118975789918c91612f32575b501689600d541617600d5560405194828652876004870152600785870152665265776172647360c81b8187015287868581855afa9586156118975788968a918d91612ee8575b509068436861696e6c696e6b60b81b9291168b600e541617600e55604051978896879586528860048701528501528301525afa918215611a06578592612eb2575b50501690600f541617600f5580f35b90809250813d8311612ee1575b612ec9818361326c565b8101031261184e57612eda906133a3565b3880612ea3565b503d612ebf565b92978092508391503d8311612f2b575b612f02818361326c565b8101031261188b57879589612f2368436861696e6c696e6b60b81b936133a3565b909192612e62565b503d612ef8565b809250898092503d8311612f63575b612f4b818361326c565b8101031261188b57612f5d89916133a3565b38612e1c565b503d612f41565b809250898092503d8311612f9b575b612f83818361326c565b8101031261188b57612f9589916133a3565b38612ddd565b503d612f79565b809250898092503d8311612fd3575b612fbb818361326c565b8101031261188b57612fcd89916133a3565b38612d9b565b503d612fb1565b809250898092503d831161300b575b612ff3818361326c565b8101031261188b5761300589916133a3565b38612d54565b503d612fe9565b809250898092503d8311613043575b61302b818361326c565b8101031261188b5761303d89916133a3565b38612d13565b503d613021565b809250898092503d831161307b575b613063818361326c565b8101031261188b5761307589916133a3565b38612ccb565b503d613059565b809250898092503d83116130b3575b61309b818361326c565b8101031261188b576130ad89916133a3565b38612c88565b503d613091565b809250898092503d83116130eb575b6130d3818361326c565b8101031261188b576130e589916133a3565b38612c43565b503d6130c9565b809250898092503d8311613123575b61310b818361326c565b8101031261188b5761311d89916133a3565b38612bfd565b503d613101565b809250898092503d831161315b575b613143818361326c565b8101031261188b5761315589916133a3565b38612bb6565b503d613139565b9097508581813d8311613192575b61317a818361326c565b81010312611b835761318b906133a3565b9638612b65565b503d613170565b6040513d8b823e3d90fd5b503461017e578060031936011261017e57600d546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57546040516001600160a01b039091168152602090f35b9050346105b657816003193601126105b6576004546001600160a01b03168152602090f35b600435906001600160a01b038216820361055b57565b606090600319011261055b5760043590602435906044356001600160a01b038116810361055b5790565b6001600160401b038111611a7e57604052565b90601f801991011681019081106001600160401b03821117611a7e57604052565b6001600160401b038111611a7e57601f01601f191660200190565b9291926132b48261328d565b916132c2604051938461326c565b82948184528183011161055b578281602093846000960137010152565b9080601f8301121561055b578160206132fa933591016132a8565b90565b9181601f8401121561055b578235916001600160401b03831161055b576020838186019501011161055b57565b90606060031983011261055b576004356001600160a01b038116810361055b5791602435906001600160401b03821161055b57613369916004016132fd565b909160443590565b1561337857565b606460405162461bcd60e51b815260206004820152600460248201526310b3b7bb60e11b6044820152fd5b51906001600160a01b038216820361055b57565b5190811515820361055b57565b156133cb57565b60405162461bcd60e51b815260206004820152600e60248201526d21636f6e74726163742d726f6c6560901b6044820152606490fd5b60005b8381106134145750506000910152565b8181015183820152602001613404565b81601f8201121561055b57805161343a8161328d565b92613448604051948561326c565b8184526020828401011161055b576132fa9160208085019101613401565b519060ff8216820361055b57565b60208183031261055b5780516001600160401b039182821161055b5701906101c092838382031261055b5760405193840184811083821117611a7e57604052825184526134c3602084016133a3565b60208501526134d4604084016133a3565b6040850152606083015191821161055b576134f0918301613424565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010061352b8183016133b7565b9083015261012061353d818301613466565b9083015261014061354f8183016133b7565b90830152610160808201519083015261018080820151908301526101a0809101519082015290565b9060209161359081518092818552858086019101613401565b601f01601f1916010190565b929493906060926135c29160018060a01b03168552608060208601526080850190613577565b9460408401521515910152565b6001600160a01b0390911681526040602082018190526132fa92910190613577565b60208183031261055b5780516001600160401b039182821161055b57019061012092838382031261055b5760405193840184811083821117611a7e57604052613639836133a3565b8452613647602084016133a3565b6020850152604083015191821161055b57613663918301613424565b6040830152613674606082016133b7565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100809101519082015290565b6001600160a01b039182168152911660208201526060604082018190526132fa92910190613577565b818102929181159184041417156136eb57565b634e487b7160e01b600052601160045260246000fd5b919082018092116136eb57565b8115613718570490565b634e487b7160e01b600052601260045260246000fd5b6020815260018060a01b038083511660208301526020830151166040820152604082015161376a61012091826060850152610140840190613577565b92606081015115156080840152608081015160a084015260a081015160c084015260c081015160e084015260e0810151906101009182850152015191015290565b6001600160a01b039091168152602081019190915260400190565b919082039182116136eb57565b60008190039190600160ff1b81146001166136eb576000198305036136eb57565b818102929160008212600160ff1b8214166136eb5781840514901517156136eb57565b9493926138449160609360018060a01b038092168852166020870152608060408701526080860190613577565b930152565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b039182168152911660208201526060604082018190526132fa9391019161386b565b156138bc57565b60405162461bcd60e51b815260206004820152600960248201526810b837b9b4ba34b7b760b91b6044820152606490fd5b60208183031261055b5780516001600160401b039182821161055b5701906101a092838382031261055b5760405193840184811083821117611a7e57604052825182811161055b5781613941918501613424565b8452602083015191821161055b5761395a918301613424565b602083015261396b604082016133a3565b6040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015190830152610120808201519083015261014080820151908301526101606139d18183016133b7565b908301526139e36101808092016133b7565b9082015290565b156139f157565b60405162461bcd60e51b815260206004820152600660248201526521707269636560d01b6044820152606490fd5b15613a2657565b60405162461bcd60e51b8152602060048201526007602482015266085c185d5cd95960ca1b6044820152606490fd5b15613a5c57565b60405162461bcd60e51b815260206004820152600760248201526610b6b0b933b4b760c91b6044820152606490fd5b90613aa5906040939695949660608452606084019161386b565b9460208201520152565b60a052939060008415613f0757670de0b6b3a7640000928386029560e096808852048403613ef3576001600160a01b039382828616613e80575b613af48189516137c6565b86600b5416936040928351958693846374d6f48760e11b92838252602096879160049b8c915afa8015613e76578a90613e47575b613b399150612710918291846136d8565b0460c0528b6008541692875190815286818b81875afa908115613e3d578b91613e0e575b5091613b8791613b75613b82999897969594836136d8565b0497889160c051906137c6565b6137c6565b95610120968752813b15613d8457898987969594938a838f9a95613bc2965196879586948593631c25e23360e11b8552049d8e9184016137ab565b03925af18015613d9c57613dfb575b508a600b5416803b15613d84578989613c06928d838c8a519687958694859363a17dc11560e01b855260c051049184016137ab565b03925af18015613d9c57908a91613de7575b50508a8854168b6002541690848060648c8951958693849263bf40fac160e01b84528301526008602483015267747265617375727960c01b60448301525afa918215613ddd578b92613da6575b50803b1561188b578b8b918a838b613c988f8c519889978896879563078d3b7960e01b8060805287525104928501613849565b03925af18015613d9c57908a91613d88575b5050868b895416910497813b15613d84579189918b838b95613cda89519788968795869460805186528501613849565b03925af18015613d7a57908891613d66575b50508482519a8c8c6101009d8e52528c8c5101613d0891613577565b9b5104908a510152885101528160c051048751606001525104855160800152845160a00152835160c001528160a051935192839216951693037fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db2291a4565b613d6f90613259565b6104f6578638613cec565b83513d8a823e3d90fd5b8980fd5b613d9190613259565b611b83578838613caa565b85513d8c823e3d90fd5b9091508481813d8311613dd6575b613dbe818361326c565b8101031261188b57613dcf906133a3565b9038613c65565b503d613db4565b86513d8d823e3d90fd5b613df090613259565b611b83578838613c18565b613e0790999199613259565b9738613bd1565b90508681813d8311613e36575b613e25818361326c565b8101031261188b5751613b87613b5d565b503d613e1b565b88513d8d823e3d90fd5b508581813d8311613e6f575b613e5d818361326c565b81010312613d8457613b399051613b28565b503d613e53565b87513d8c823e3d90fd5b5060046020866009541660405192838092632bdc62f560e21b82525afa908115610abb578491613ec0575b50613eba6127109189516136d8565b04613ae9565b90506020813d8211613eeb575b81613eda6020938361326c565b8101031261184e5751613eba613eab565b3d9150613ecd565b634e487b7160e01b82526011600452602482fd5b505050505050565b959193959492946101005260805280610120526000948015613f0757670de0b6b3a764000081028060c05204670de0b6b3a7640000036143b25784906001600160a01b0316614334575b6004613f678260c0516137c6565b95602060018060a01b03600b5416604051938480926374d6f48760e11b82528460a0525afa80156142435781906142fe575b613faa9250612710928391896136d8565b049660018060a01b0360085416926040516374d6f48760e11b815260a05181600481885afa908115610abb5790849392918b95916142c1575b508291613ff6613b8292613fff956136d8565b049a8b926137c6565b92803b156105b657818761403792670de0b6b3a7640000838d60405196879586948593631c25e23360e11b85520490600484016137ab565b03925af180156105ab576142b2575b50600b546001600160a01b0316803b156105b65760405163a17dc11560e01b81529082908290818381614087670de0b6b3a76400008a048e600484016137ab565b03925af180156105ab5790829161429e575b505060018060a01b036004541660018060a01b03600254166040519063bf40fac160e01b825260a05160048301526008602483015267747265617375727960c01b60448301528160648160a051935afa908115611d83578391614264575b50813b156105ce578761412f9284928360405180968195829463078d3b7960e01b8452670de0b6b3a76400008d049160048501613849565b03925af180156105ab57908291614250575b50506004546001600160a01b0316803b156105b65781906040518060e05263078d3b7960e01b905260e051908161418a670de0b6b3a76400008904610120518c60048501613849565b03908360e051915af180156142435761422f575b50670de0b6b3a76400009291838092816141c36040519a60e08c5260e08c0190613577565b9a8160c0510460a0518c01520460408a01520460608801520460808601520460a0840152151560c083015260018060a01b0316917fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db2260018060a01b0360805116928061010051930390a4565b8061423b60e051613259565b1561419e5780fd5b50604051903d90823e3d90fd5b61425990613259565b61017e578038614141565b905060a0513d8111614297575b61427b818361326c565b8160a05191810103126105ce57614291906133a3565b386140f7565b503d614271565b6142a790613259565b61017e578038614099565b6142bb90613259565b38614046565b91929394505060a0513d81116142f7575b6142dc818361326c565b8160a051918101031261184e57518993929190613fff613fe3565b503d6142d2565b509060a0513d811161432d575b614315818361326c565b8160a05191810103126105b65790613faa9151613f99565b503d61430b565b50600954604051632bdc62f560e21b815290602090829060049082906001600160a01b03165afa908115611a0657859161437f575b506143796127109160c0516136d8565b04613f59565b90506020813d82116143aa575b816143996020938361326c565b810103126104c05751614379614369565b3d915061438c565b634e487b7160e01b85526011600452602485fd5b818103929160001380158285131691841216176136eb57565b811561371857600160ff1b81146000198314166136eb570590565b949396959290919681158015614542575b801561453a575b61452a579160209161447093896000146145145761443c61443682614441946143c6565b886137f4565b6143df565b955b60055460405163183bb37960e01b81529485936001600160a01b03909216928492839291600484016135cf565b03915afa908115614508576000916144d5575b509161449d6144a39269021e19e0c9bab2400000946143c6565b906137f4565b0580936000146144ba576144b6916143c6565b9190565b810190600084831291129080158216911516176136eb579190565b906020823d8211614500575b816144ee6020938361326c565b8101031261017e57505161449d614483565b3d91506144e1565b6040513d6000823e3d90fd5b61443c61443661452493836143c6565b95614443565b5050505050509050600090600090565b508415614412565b50801561440b565b60018060a01b03808060035416926040809160248251809681936330af0bbf60e21b835216978860048301525afa928315614699576000936146a4575b5081600f54169260209283809201511660248351809681936341976e0960e01b835260048301525afa9283156146995760009361466a575b50601293806145eb575b5050506145d691926137f4565b604d82116136eb576132fa91600a0a906143df565b829450918192600492519283809263313ce56760e01b82525afa9182156146605750600091614625575b5060ff1691506145d638806145c9565b919282813d8311614659575b61463b818361326c565b8101031261017e57509060ff6146536145d693613466565b90614615565b503d614631565b513d6000823e3d90fd5b90928282813d8311614692575b614681818361326c565b8101031261017e57505191386145bf565b503d614677565b50513d6000823e3d90fd5b81818195933d831161470f575b6146bb818361326c565b810103126105b657835191848301908382106001600160401b038311176146fb57508452805182526146ef906020016133a3565b60208201529138614587565b634e487b7160e01b81526041600452602490fd5b503d6146b156fea66b7a3e6b19d24ccb6f717fc232a1bb0278a7f83f8e2211835fc4ed0fe69f19a2646970667358221220db209931bd394e1f89c764b411855a1383338fdfe980204744b0834fb5a88e5664736f6c63430008110033000000000000000000000000e5da4704a582fe799dcd1dff31dc2ed2e0bdc961000000000000000000000000a64694e51b22a081ea1e4051ef4ea1b715b47026