0 txs
0 calls
constructor
No constructor.
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
decreaseLimitOrders
viewfunction decreaseLimitOrders(uint256) view returns (uint256 orderId, address account, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 triggerPrice, uint256 sizeAmount, uint256 executedSize, uint256 maxSlippage, bool isLong, bool abovePrice, uint256 blockTime, bool needADL)
decreaseMarketOrders
viewfunction decreaseMarketOrders(uint256) view returns (uint256 orderId, address account, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 triggerPrice, uint256 sizeAmount, uint256 executedSize, uint256 maxSlippage, bool isLong, bool abovePrice, uint256 blockTime, bool needADL)
getDecreaseOrder
viewfunction getDecreaseOrder(uint256 orderId, uint8 tradeType) view returns (tuple order, tuple orderNetworkFee)
getIncreaseOrder
viewfunction getIncreaseOrder(uint256 orderId, uint8 tradeType) view returns (tuple order, tuple orderNetworkFee)
getNetworkFee
viewfunction getNetworkFee(uint8 paymentType, uint256 pairIndex) view returns (tuple)
getPositionOrders
viewfunction getPositionOrders(bytes32 key) view returns (tuple[])
increaseLimitOrders
viewfunction increaseLimitOrders(uint256) view returns (uint256 orderId, address account, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 openPrice, bool isLong, uint256 sizeAmount, uint256 executedSize, uint256 maxSlippage, uint256 blockTime)
increaseMarketOrders
viewfunction increaseMarketOrders(uint256) view returns (uint256 orderId, address account, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 openPrice, bool isLong, uint256 sizeAmount, uint256 executedSize, uint256 maxSlippage, uint256 blockTime)
networkFees
viewfunction networkFees(uint8, uint256) view returns (uint256 basicNetworkFee, uint256 discountThreshold, uint256 discountedNetworkFee)
orderNetworkFees
viewfunction orderNetworkFees(uint256) view returns (uint8 paymentType, uint256 networkFeeAmount)
ordersIndex
viewfunction ordersIndex() view returns (uint256)
pool
viewfunction pool() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
positionOrderIndex
viewfunction positionOrderIndex(bytes32, uint256) view returns (uint256)
positionOrders
viewfunction positionOrders(bytes32, uint256) view returns (address account, uint256 pairIndex, bool isLong, bool isIncrease, uint8 tradeType, uint256 orderId, uint256 sizeAmount)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
router
viewfunction router() view returns (address)
cancelAllPositionOrders
nonpayablefunction cancelAllPositionOrders(address account, uint256 pairIndex, bool isLong)
cancelOrder
nonpayablefunction cancelOrder(uint256 orderId, uint8 tradeType, bool isIncrease, string reason)
createOrder
payablefunction createOrder(tuple request) payable returns (uint256 orderId)
increaseOrderExecutedSize
nonpayablefunction increaseOrderExecutedSize(uint256 orderId, uint8 tradeType, bool isIncrease, uint256 increaseSize)
initialize
nonpayablefunction initialize(address addressProvider, address _pool, address _positionManager)
removeDecreaseLimitOrders
nonpayablefunction removeDecreaseLimitOrders(uint256 orderId)
removeDecreaseMarketOrders
nonpayablefunction removeDecreaseMarketOrders(uint256 orderId)
removeIncreaseLimitOrders
nonpayablefunction removeIncreaseLimitOrders(uint256 orderId)
removeIncreaseMarketOrders
nonpayablefunction removeIncreaseMarketOrders(uint256 orderId)
removeOrderFromPosition
nonpayablefunction removeOrderFromPosition(tuple order)
setOrderNeedADL
nonpayablefunction setOrderNeedADL(uint256 orderId, uint8 tradeType, bool needADL)
setRouter
nonpayablefunction setRouter(address _router)
updateNetworkFees
nonpayablefunction updateNetworkFees(uint8[] paymentTypes, uint256[] pairIndexes, tuple[] fees)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CancelDecreaseOrder
event CancelDecreaseOrder(address account, uint256 orderId, uint8 tradeType)
CancelIncreaseOrder
event CancelIncreaseOrder(address account, uint256 orderId, uint8 tradeType)
CancelOrder
event CancelOrder(uint256 orderId, uint8 tradeType, string reason)
CreateDecreaseOrder
event CreateDecreaseOrder(address account, uint256 orderId, uint8 tradeType, int256 collateral, uint256 pairIndex, uint256 openPrice, uint256 sizeAmount, bool isLong, bool abovePrice, uint8 paymentType, uint256 networkFeeAmount)
CreateIncreaseOrder
event CreateIncreaseOrder(address account, uint256 orderId, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 openPrice, bool isLong, uint256 sizeAmount, uint8 paymentType, uint256 networkFeeAmount)
Initialized
event Initialized(uint8 version)
UpdatedNetworkFee
event UpdatedNetworkFee(address sender, uint8 paymentType, uint256 pairIndex, uint256 basicNetworkFee, uint256 discountThreshold, uint256 discountedNetworkFee)
UpdatePositionManager
event UpdatePositionManager(address oldAddress, address newAddress)
UpdateRouterAddress
event UpdateRouterAddress(address sender, address oldAddress, address newAddress)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a080604052346100315730608052614d939081610037823960805181818161167c0152818161177b0152611fb70152f35b600080fdfe60806040908082526004908136101561001757600080fd5b60009060e08235811c918262c5ecd21461245f57508163021a34dd146123cb57816316f0115b146123a25781631848effa146123795781632670e98d146121f65781633659cfe614611f8f5781633b19d92014611e225781633e5005e514611cf95781634cc42b5114611be55781634d3cb81014611abc5781634d506d7714611a7a5781634f1ef2861461172957816352d1902d1461166757816353cb6c75146115ef578163626a7ef214611421578163671e1107146113ab5781636e30e01614611335578163791b98bc1461130c5781638168c0b61461123e5781638e2678d414610eb65781638ffb8b2f14610c8957816390a4a76814610b605781639f89e0fb14610b34578163af2616ab14610b15578163be7cd4c414610ad8578163be82e5b114610987578163c0c53b8b14610820578163c0d7865514610690578163c1872cf3146104a4578163ecd1bbcb146102fd578163f887ea40146102d0578163f9d244fd1461021c575063fca5c7931461019157600080fd5b34610219576020366003190112610219578261021591833581526068602052209283549360018060a01b036001820154169360028201549560ff600384015416918301546005840154600685015460078601549160088701549360098801549660ff600b600a8b01549a01541699519c8d9c8d9860ff808c60081c169b1699612507565b0390f35b80fd5b848334610219575060206101a09261023c610236366127dc565b90614743565b918451948251865260018060a01b03858401511685870152808301519086015261026e606083015160608701906124e4565b6080820151608086015260a082015160a086015260c0820151151560c086015280820151908501526101008082015190850152610120808201519085015261014080910151908401526102c6610160840182516127fb565b0151610180820152f35b8285346102f957816003193601126102f95760715490516001600160a01b039091168152602090f35b5080fd5b828585346104a05760803660031901126104a0576024358181101561049c576103246126e6565b906064356001600160401b0381116104985736602382011215610498576103549036906024818701359101612748565b607154336001600160a01b039182161495919491861561041a575b861561038d575b505061038461038a95612b14565b3561393a565b80f35b909550816020876065541683519283809263477a86ef60e01b82525afa918215610411575087916103cb575b5061038a956103849116331495610376565b90506020813d8211610409575b816103e5602093836126af565b810103126104055761038a956103fd61038492612a7e565b9150956103b9565b8680fd5b3d91506103d8565b513d89823e3d90fd5b9550816020826065541688519283809263c4aa304160e01b82525afa801561048e578291899161044f575b501633149561036f565b9150506020813d8211610486575b8161046a602093836126af565b810103126104825761047c8291612a7e565b89610445565b8780fd5b3d915061045d565b87513d8a823e3d90fd5b8580fd5b8380fd5b8280fd5b828585346104a05760603660031901126104a057803591602435918083101561068c576104cf6126e6565b606554835163c4aa304160e01b81529194602093909290916001600160a01b039081169185818581865afa908115610682578493929187918c91610646575b50821633149283156105ce575b5050506105289150613cc1565b81610551575050906068600b9261038a9587525284205b019060ff801983541691151516179055565b929093948652606a82528086209360ff600386015416848110156105bb57036105835750505090600b61038a9261053f565b5162461bcd60e51b81529182015260146024820152730e8e4c2c8ca40e8f2e0ca40dcdee840dac2e8c6d60631b604482015260649150fd5b634e487b7160e01b885260218552602488fd5b9091925087519384809263477a86ef60e01b82525afa801561063c578990610602575b61052892501633148291858b61051b565b508482813d8311610635575b61061881836126af565b810103126106315761062c61052892612a7e565b6105f1565b8880fd5b503d61060e565b86513d8b823e3d90fd5b94505083813d831161067b575b61065d81836126af565b810103126106775785816106718695612a7e565b9061050e565b8980fd5b503d610653565b87513d8c823e3d90fd5b8480fd5b505091346104a0576020918260031936011261049c576106ae6126d0565b9160018060a01b03918085846065541684519384809262435da560e01b82525afa91821561081657918691859389926107d8575b5060249085519485938492637be53ca160e01b84523390840152165afa9081156107ce578691610769575b50907f612e824501291f520b5ec7914fa88640aef519e3cef9bedcb88d8ece379acb7d9461073e6060959493612a9f565b82607154941692836001600160601b0360a01b8616176071558251943386521690840152820152a180f35b93929190508484813d83116107c7575b61078381836126af565b81010312610498577f612e824501291f520b5ec7914fa88640aef519e3cef9bedcb88d8ece379acb7d9461073e6107bb606096612a92565b9293949550509461070d565b503d610779565b82513d88823e3d90fd5b92839194508092503d831161080f575b6107f281836126af565b8101031261040557839160246108088893612a7e565b91906106e2565b503d6107e8565b83513d89823e3d90fd5b828585346104a05760603660031901126104a0576001600160a01b0381358181169081900361068c576024358281168091036104985760443592831680930361049857855460ff8160081c16159485809661097a575b8015610963575b15610909575060ff1981166001178755846108f8575b506001600160601b0360a01b9182606554161760655581606f541617606f5560705416176070556108c2575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161ff001984541684555160018152a180f35b61ffff191661010117865586610893565b608490602088519162461bcd60e51b8352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152fd5b50303b15801561087d5750600160ff83161461087d565b50600160ff831610610876565b8280858734610ad457602080600319360112610acf57606554825163c4aa304160e01b81526001600160a01b03918216919083818781865afa908115610ac5579082918891610a8d575b50163314918215610a0b575b5050906001936109ee606b93613cc1565b35855260688152610a00838620613db3565b528220828155015580f35b859250839085519687809263477a86ef60e01b82525afa948515610a83578695610a3f575b509093163314836109ee6109dd565b945091908185813d8311610a7c575b610a5881836126af565b81010312610498576109ee606b93610a71600197612a7e565b965091929350610a30565b503d610a4e565b84513d88823e3d90fd5b809250858092503d8311610abe575b610aa681836126af565b8101031261040557610ab88291612a7e565b896109d1565b503d610a9c565b85513d89823e3d90fd5b505050fd5b5050fd5b828585346104a05760203660031901126104a057918192358152606b60205220600160ff825416910154610b0e835180936127fb565b6020820152f35b8285346102f957816003193601126102f9576020906066549051908152f35b8285346102f95780602092610b4836612579565b908252606d8552828220908252845220549051908152f35b8280858734610ad457602080600319360112610acf57606554825163c4aa304160e01b81526001600160a01b03918216919083818781865afa908115610ac5579082918891610c51575b50163314918215610bd9575b505090600193610bc7606b93613cc1565b35855260698152610a00838620613d71565b859250839085519687809263477a86ef60e01b82525afa948515610a83578695610c0d575b50909316331483610bc7610bb6565b945091908185813d8311610c4a575b610c2681836126af565b8101031261049857610bc7606b93610c3f600197612a7e565b965091929350610bfe565b503d610c1c565b809250858092503d8311610c82575b610c6a81836126af565b8101031261040557610c7c8291612a7e565b89610baa565b503d610c60565b828585346104a0576060918260031936011261049c57610ca76126d0565b91610cb06126e6565b606554835163c4aa304160e01b8152602096926001600160a01b0392831692909188818781875afa90811561068257908892918b91610e7d575b5081163314908115610e01575b5090610d1993610d09610d0e93613cc1565b614b8c565b602495863590614cd5565b93848752606c8087528488205461010090818111600014610df95750905b60015b82811115610d46578980f35b878a52818952868a2081840390848211610de757610d6d91610d6791612594565b50613cfc565b60a08101519060808101519088821015610dd557610dd09392610dcb92898e9301511515917f63616e63656c416c6c506f736974696f6e4f72646572730000000000000000008d5194610dbf86612666565b6017865285015261393a565b612adb565b610d3a565b634e487b7160e01b8d5260218952868dfd5b634e487b7160e01b8c5260118852858cfd5b905090610d37565b915050855163477a86ef60e01b815288818781875afa90811561068257908892918b91610e35575b50163314610d19610cf7565b8093508a8092503d8311610e76575b610e4e81836126af565b8101031261067757610d1993610d098992610e6b610d0e95612a7e565b929650929350610e29565b503d610e44565b8093508a8092503d8311610eaf575b610e9681836126af565b810103126106775780610ea98993612a7e565b90610cea565b503d610e8c565b828585346104a05760609283600319360112610219578135936001600160401b03908186116104a057366023870112156104a0578584013591610ef883612808565b95610f05815197886126af565b8387526020978888016024809660051b83010191368311610482578601905b8282106112265750505083358281116104985736602382011215610498578087013590610f5082612808565b91610f5d845193846126af565b808352868b84019160051b830101913683116106315790878c9201905b83821061121757505050506044359283116104985736602384011215610498578287013592610fa884612808565b93610fb5845195866126af565b80855286868c8701920283010191368311610631578701905b8282106111e1575050606554835162435da560e01b81526001600160a01b039250908b9082908b90829086165afa9081156111d757908b9189916111a1575b508451637be53ca160e01b8152338b82015292839189918391165afa801561081657879061116b575b6110409150612a9f565b875181518091149081611160575b501561111e57855b835181101561111a57611069818a612b00565b51600290818110156111085760c08c84938b7f34277869391e6b06632d8da807f22afe881d4d09db9281cdee96b1070871908b948a8a6110b7896110b06111039c8e612b00565b5193612b00565b51936110c284612714565b838252875220918351928381558c8786015195866001840155015195869101558b51953387528601528a8501528b840152608083015260a0820152a1612adb565b611056565b634e487b7160e01b895260218a528789fd5b8680f35b815162461bcd60e51b81528088018a9052601a818701527f696e636f6e73697374656e7420706172616d73206c656e6774680000000000006044820152606490fd5b90508351148a61104e565b508981813d831161119a575b61118181836126af565b810103126104055761119561104091612a92565b611036565b503d611177565b82819392503d83116111d0575b6111b881836126af565b81010312610482576111ca8b91612a7e565b8c61100d565b503d6111ae565b84513d8a823e3d90fd5b8682360312610631578b879186516111f8816125f7565b8435815282850135838201528785013588820152815201910190610fce565b81358152908201908201610f7a565b81356002811015610631578152908a01908a01610f24565b848334610219575060206101e09261125e611258366127dc565b9061497b565b918451948251865260018060a01b038584015116858701528083015190860152611290606083015160608701906124e4565b6080820151608086015260a082015160a086015260c082015160c08601528082015190850152610100808201519085015261012080820151151590850152610140808201511515908501526101608082015190850152610180809101511515908401526113026101a0840182516127fb565b01516101c0820152f35b8285346102f957816003193601126102f95760705490516001600160a01b039091168152602090f35b83858434610219576020366003190112610219578161021591843581526069602052209182549260018060a01b036001820154169460028201549060ff60038401541690830154600584015460ff60068601541691600786015493600887015495600a600989015498015498519b8c9b8c61277f565b83858434610219576020366003190112610219578161021591843581526067602052209182549260018060a01b036001820154169460028201549060ff60038401541690830154600584015460ff60068601541691600786015493600887015495600a600989015498015498519b8c9b8c61277f565b505091346104a05760803660031901126104a0576024359180358184101561068c5761144b6126e6565b606554845163c4aa304160e01b81526064359660209590939290916001600160a01b03918216919087818581865afa9081156115e557889183918d916115a8575b50163314928315611535575b5050506114a59150613cc1565b1561150157806114cd57509160676008926114c894875252842001918254613d64565b905580f35b9092906001146114df575b5050505080f35b60696008926114f694875252842001918254613d64565b9055388080806114d8565b61151d579160686007926114c894875252842001918254613d64565b91606a6007926114c894875252842001918254613d64565b9091925088519384809263477a86ef60e01b82525afa801561159e578990611568575b6114a59250163314388681611498565b508582813d8311611597575b61157e81836126af565b81010312610631576115926114a592612a7e565b611558565b503d611574565b87513d8b823e3d90fd5b928092508391503d83116115de575b6115c181836126af565b810103126115da57816115d48992612a7e565b3861148c565b8a80fd5b503d6115b7565b89513d8d823e3d90fd5b8285346102f95780606092611625611606366126f5565b919083858051611615816125f7565b8281528260208201520152612714565b90825260205220908051611638816125f7565b825492838252826002600183015492602085019384520154920191825282519384525160208401525190820152f35b505034610219578060031936011261021957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116c15760208251600080516020614d3e8339815191528152f35b6020608492519162461bcd60e51b8352820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152fd5b505091806003193601126104a05761173f6126d0565b906024356001600160401b03811161068c573660238201121561068c5761176f9036906024818701359101612748565b6001600160a01b0391907f000000000000000000000000000000000000000000000000000000000000000083166117a83082141561281f565b6117c5600080516020614d3e833981519152918583541614612880565b836065541693835180956334cc866d60e21b8252818960209889935afa908115611a70579082918a91611a38575b501633036119ff577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561183457505050505061038a91506128e1565b8592939495169084516352d1902d60e01b815286818981865afa8991816119d0575b506118b557855162461bcd60e51b8152808901889052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b969192949593960361197b57509085916118ce846128e1565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2845115801590611973575b61190a575b505050505080f35b611968948291660819985a5b195960ca1b865196611927886125f7565b602788527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c8389015287015281519101845af4611962612971565b916129a1565b503880808381611902565b5060016118fd565b845162461bcd60e51b8152908101839052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508781813d83116119f8575b6119e881836126af565b8101031261067757519038611856565b503d6119de565b835162461bcd60e51b81528088018690526013602482015272556e617574686f72697a65642061636365737360681b6044820152606490fd5b809250878092503d8311611a69575b611a5181836126af565b8101031261063157611a638291612a7e565b386117f3565b503d611a47565b85513d8b823e3d90fd5b8285346102f95780606092611a98611a91366126f5565b9190612714565b90825260205220805491600260018301549201549181519384526020840152820152f35b8280858734610ad457602080600319360112610acf57606554825163c4aa304160e01b81526001600160a01b03918216919083818781865afa908115610ac5579082918891611bad575b50163314918215611b35575b505090600193611b23606b93613cc1565b358552606a8152610a00838620613db3565b859250839085519687809263477a86ef60e01b82525afa948515610a83578695611b69575b50909316331483611b23611b12565b945091908185813d8311611ba6575b611b8281836126af565b8101031261049857611b23606b93611b9b600197612a7e565b965091929350611b5a565b503d611b78565b809250858092503d8311611bde575b611bc681836126af565b8101031261040557611bd88291612a7e565b89611b06565b503d611bbc565b849150833461049c576020908160031936011261068c57928493358452606c825280842091825491611c1683612808565b92611c23825194856126af565b8084528284018095885283882088915b838310611ccc575050505080519482860193838752518094528186019496915b848310611c605786860387f35b909192939484836001928a51848060a01b038151168252838101518483015285810151151586830152606080820151151590830152611ca7608080830151908401906124e4565b60a0808201519083015260c08091015190820152019801930191909694939296611c53565b600586600192611ce3859d999a9b9d9c989c613cfc565b8152019201920191909896959498979397611c33565b8280858734610ad457602080600319360112610acf57606554825163c4aa304160e01b81526001600160a01b03918216919083818781865afa908115610ac5579082918891611dea575b50163314918215611d72575b505090600193611d60606b93613cc1565b35855260678152610a00838620613d71565b859250839085519687809263477a86ef60e01b82525afa948515610a83578695611da6575b50909316331483611d60611d4f565b945091908185813d8311611de3575b611dbf81836126af565b8101031261049857611d60606b93611dd8600197612a7e565b965091929350611d97565b503d611db5565b809250858092503d8311611e1b575b611e0381836126af565b8101031261040557611e158291612a7e565b89611d43565b503d611df9565b60208560031986863683018513610219578135926001600160401b0384116102f95761016090843603011261021957607154336001600160a01b0391821614918215611f17575b8215611e8d575b505090611e80611e869392612b14565b01612c44565b9051908152f35b9091508286836065541687519283809263477a86ef60e01b82525afa918215611f0c578092611ec7575b5050163314611e80611e86611e70565b9091508682813d8311611f05575b611edf81836126af565b810103126102195750611e86939291611efa611e8092612a7e565b918193949550611eb7565b503d611ed5565b8651903d90823e3d90fd5b91508286826065541687519283809263c4aa304160e01b82525afa908115611f85579082918491611f4d575b5016331491611e69565b809250888092503d8311611f7e575b611f6681836126af565b810103126104a057611f788291612a7e565b88611f43565b503d611f5c565b86513d85823e3d90fd5b505091346104a05760208060031936011261049c57611fac6126d0565b916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116611fe43082141561281f565b612001600080516020614d3e833981519152918383541614612880565b858483606554168551928380926334cc866d60e21b82525afa9081156111d75790839189916121be575b501633036121855782519161203f83612694565b8783527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561207b57505050505061038a91506128e1565b8592939495169084516352d1902d60e01b815286818981865afa899181612156575b506120fc57855162461bcd60e51b8152808901889052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b969192949593960361197b5750908591612115846128e1565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a284511580159061214f5761190a57505050505080f35b50816118fd565b9091508781813d831161217e575b61216e81836126af565b810103126106775751903861209d565b503d612164565b825162461bcd60e51b81528087018590526013602482015272556e617574686f72697a65642061636365737360681b6044820152606490fd5b809250868092503d83116121ef575b6121d781836126af565b81010312610482576121e98391612a7e565b3861202b565b503d6121cd565b848484923461049c573660031901126104a057815190612215826125c6565b61221d6126d0565b8252602092602435848401526122316126e6565b8184015260643580151581036104985760608401526084358281101561049857608084015260a43560a084015260c43560c0840152606554815163c4aa304160e01b81526001600160a01b039182169591939190818184818a5afa9081156111d7579085918991612341575b501633149586156122bc575b8761038a876122b78a613cc1565b6145d6565b83829394959750519384809263477a86ef60e01b82525afa928315612338575085926122f9575b505061038a926122b791163314928580806122a9565b90809250813d8311612331575b61231081836126af565b8101031261049c5761038a926123286122b792612a7e565b918194506122e3565b503d612306565b513d87823e3d90fd5b809250838092503d8311612372575b61235a81836126af565b810103126104825761236c8591612a7e565b8961229d565b503d612350565b8285346102f957816003193601126102f95760655490516001600160a01b039091168152602090f35b8285346102f957816003193601126102f957606f5490516001600160a01b039091168152602090f35b83858434610219576123dc36612579565b91908152606c6020528281209081548310156102195750906123fd91612594565b5061245360018060a01b03825416936001830154936002840154916003850154940154948151968752602087015260ff821615159086015260ff8160081c161515606086015260ff608086019160101c166124e4565b60a083015260c0820152f35b839085873461049c57602036600319011261049c579061021591839482358152606a602052208054918460018060a01b036001840154169160028401549060ff60038601541690850154600586015460068701549160078801549360088901549560098a01549860ff600b600a8d01549c0154169b60ff808c60081c169b1699612507565b9060048210156124f15752565b634e487b7160e01b600052602160045260246000fd5b9b99979593919d9c9a98969492909d6101a08d019e8d52600160a01b600190031660208d015260408c015260608b0161253f916124e4565b60808a015260a089015260c088015260e0870152610100860152151561012085015215156101408401526101608301521515906101800152565b604090600319011261258f576004359060243590565b600080fd5b80548210156125b0576000526005602060002091020190600090565b634e487b7160e01b600052603260045260246000fd5b60e081019081106001600160401b038211176125e157604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176125e157604052565b61016081019081106001600160401b038211176125e157604052565b61014081019081106001600160401b038211176125e157604052565b6101a081019081106001600160401b038211176125e157604052565b604081019081106001600160401b038211176125e157604052565b6001600160401b0381116125e157604052565b602081019081106001600160401b038211176125e157604052565b90601f801991011681019081106001600160401b038211176125e157604052565b600435906001600160a01b038216820361258f57565b60443590811515820361258f57565b604090600319011261258f57600435600281101561258f579060243590565b60028110156124f157600052606e602052604060002090565b6001600160401b0381116125e157601f01601f191660200190565b9291926127548261272d565b9161276260405193846126af565b82948184528183011161258f578281602093846000960137010152565b979491936101409996936127b6929d9c9b98956101608b019e8b5260018060a01b031660208b015260408a015260608901906124e4565b608087015260a0860152151560c085015260e08401526101008301526101208201520152565b604090600319011261258f5760043590602435600481101561258f5790565b9060038210156124f15752565b6001600160401b0381116125e15760051b60200190565b1561282657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561288757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b803b1561291657600080516020614d3e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b3d1561299c573d906129828261272d565b9161299060405193846126af565b82523d6000602084013e565b606090565b91929015612a0357508151156129b5575090565b3b156129be5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612a165750805190602001fd5b60405162461bcd60e51b815260206004820152908190612a3a906024830190612a3e565b0390fd5b919082519283825260005b848110612a6a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612a49565b51906001600160a01b038216820361258f57565b5190811515820361258f57565b15612aa657565b60405162461bcd60e51b815260206004820152600d60248201526c37b7363ca837b7b620b236b4b760991b6044820152606490fd5b6000198114612aea5760010190565b634e487b7160e01b600052601160045260246000fd5b80518210156125b05760209160051b010190565b15612b1b57565b60405162461bcd60e51b815260206004820152601360248201527237b7363ca2bc32b1baba37b9132937baba32b960691b6044820152606490fd5b908161016091031261258f5760405190612b6f82612612565b80518252612b7f60208201612a7e565b6020830152612b9060408201612a7e565b6040830152612ba160608201612a7e565b6060830152612bb260808201612a92565b608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080820151908301526101208082015190830152610140809101519082015290565b903590601e198136030182121561258f57018035906001600160401b03821161258f5760200191813603831361258f57565b35801515810361258f5790565b60048210156124f15752565b80356001600160a01b038116810361258f57606554612c6d9082906001600160a01b0316614b8c565b606f54604051632f7ce47360e21b8152602084013560048201526001600160a01b039091169061016081602481855afa90811561369b57600091613909575b506080810151156138d95760036101008501351015918261258f576101008501356001036137ce575060208481013560009081527f136eb4aae73f7618d8559a84c5ff3678edc6b16994db052447ebc43c429b7d6f9091526040908190209051612d15816125f7565b815491828252600260018201549160208401928352015492604083019384526136b9575b5050505b600460408501351015908161258f5760408501351580156136a7575b6134fe575b60006060860135136134b5575b50600060c08501351315612e1d5761258f57612d8960a08401612c2b565b612d9660c0850135614ca5565b9060405193612da48561262e565b6001600160a01b0316845260208581013590850152612dca604080870135908601612c38565b6060850135606085015260808501356080850152151560a084015260c083015260e083013560e08301526000610100830152610120808401359083015261258f57610100612e1a92013590613fe3565b90565b600060c08594950135126000146133d95761258f57612e3f60c0830135614ca5565b612e4b60a08401612c2b565b9060405194612e598661262e565b6001600160a01b0316855260208481013590860152612e7f604080860135908701612c38565b606084013560608601526080840135608086015260a0850152151560c084015260e082013560e0840152600061010084015261012082013561012084015261258f576066549160018060a01b03815116926020820151604083015160048110156124f1576060840151608085015160a086015191612f2760e08801519460c08901511515966040519b612f118d61264a565b898d5260208d015260408c015260608b01612c38565b608089015260a088015260c0870152600060e087015261010086015261012085015260006101408501524261016085015260006101808501526101208201519060405191612f7483612666565b612f8361010086013584613fbf565b6020830152600052606b602052604060002090805160038110156124f15760019160209160ff801986541691161784550151910155604081015160048110156124f1576132195760c0810151151561014084015260665460005260686020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b8254161790556040840151600282015560608401519060048210156124f1576130366130d19260038301613fcb565b6080850151600482015560a0850151600582015560c0850151600682015560e0850151600782015561010085015160088201556130a96009820161308d6101208801511515829060ff801983541691151516179055565b610140870151815461ff00191690151560081b61ff0016179055565b610160850151600a820155600b610180860151151591019060ff801983541691151516179055565b6130dc606654612adb565b606655602083015160408401516101208501516060860151926001600160a01b03169190151560048410156124f1576131446131539488519260c08a01519460405196613128886125c6565b8752602087015260408601526000606086015260808501612c38565b60a083015260c0820152614556565b60018060a01b036020840151168351604083015160048110156124f1577f0aeaf4e3bbd479c5214fdf7ae70b422111bf2664b91f8d035d777512e094d11994848761320e93606061016098015160208401516080850151916131df60a08701519461012061014060c08a0151151598015115159801519a6040519c8d5260208d015260408c01906124e4565b60608a0152608089015260a088015260c087015260e086015261010085015261010061012085019101356127fb565b610140820152a15190565b604081015160048110156124f15760010361329e5760c081015115610140840152606654600052606a6020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b8254161790556040840151600282015560608401519060048210156124f1576130366132999260038301613fcb565b6130d1565b604081015160048110156124f15760020361331e5760c081015115610140840152606654600052606a6020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b8254161790556040840151600282015560608401519060048210156124f1576130366132999260038301613fcb565b604081015160048110156124f15760030361339f5760c08101511515610140840152606654600052606a6020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b8254161790556040840151600282015560608401519060048210156124f1576130366132999260038301613fcb565b60405162461bcd60e51b8152602060048201526012602482015271696e76616c6964207472616465207479706560701b6044820152606490fd5b606083949301351561347a5761258f576133f560a08401612c2b565b604051926134028461262e565b6001600160a01b0316835260208481013590840152613428604080860135908501612c38565b6060840135606084015260808401356080840152151560a0830152600060c083015260e083013560e08301526000610100830152610120808401359083015261258f57610100612e1a92013590613fe3565b60405162461bcd60e51b815260206004820152601360248201527218dbdb1b185d195c985b081c995c5d5a5c9959606a1b6044820152606490fd5b604001516134f8906001600160a01b03166134d36060870135614ca5565b606f549091906001600160a01b03166134f0610140890189612bf9565b939092613dfb565b38612d6b565b606f546040516330a66e1560e01b8152602087013560048201529061010090829060249082906001600160a01b03165afa90811561369b576000916135e4575b5060c08601356000811215613555575b5050612d5e565b80159182156135a7575b50501561356d57388061354e565b60405162461bcd60e51b8152602060048201526012602482015271696e76616c69642074726164652073697a6560701b6044820152606490fd5b9091506135b382614ca5565b6040820151111591826135ca575b5050388061355f565b60609192506135d890614ca5565b910151101538806135c1565b610100813d61010011613693575b8161360061010093836126af565b810103126102f95760405191826101008101106001600160401b036101008501111761367f575060e0906101008301604052805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152015160e08201523861353e565b634e487b7160e01b81526041600452602490fd5b3d91506135f2565b6040513d6000823e3d90fd5b50600091506040850135600114612d59565b60c08701356136c781614ca5565b8251111593846137c3575b508315613799575b50505061375457600080808060018060a01b03606f5416816040516136fe81612694565b5234905af161370b612971565b501561371957388080612d39565b60405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c88195d1a0819985a5b1959606a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74206e6574776f726b2066656500000000000000006044820152606490fd5b6137a591929350614ca5565b90511190816137b8575b503880806136da565b9050513410386137af565b5134109350386136d2565b600092506101008501356002146137e6575b50612d3d565b60018352606e60205260408320602086013584526020526040832060405161380d816125f7565b81549182825260026001820154916020840192835201549260408301938452613839575b5050506137e0565b60c088013561384781614ca5565b8251111593846138c9575b50831561389a575b50505061375457604082015161389191906001600160a01b0316613882610140880188612bf9565b92909161012089013590613dfb565b38808080613831565b6138a691929350614ca5565b90511190816138b9575b5038808061385a565b90505161012086013510386138b0565b516101208a013510935038613852565b60405162461bcd60e51b8152602060048201526008602482015267191a5cd8589b195960c21b6044820152606490fd5b61392d91506101603d61016011613933575b61392581836126af565b810190612b56565b38612cac565b503d61391b565b929392909115613b375761394e8282614743565b506020810180519091906001600160a01b039081168015613b2d57613977908260655416614b8c565b8083511690604090818401519461010085015115600090600014613b28575060808501515b60c0860151151590606087019788519660049788811015613b135790613a02949392918a516139f360e08d0151928b51976139d6896125c6565b8589528660208a01528c8901526001606089015260808801612c38565b60a086015260c085015261439e565b855184811015613afe57613ad25784516000526067602052613a2683600020613d71565b5116925193519180831015613abd5750927fa17b9023914ac67fce374ea74da20a2d3383a0dcbc348890794328a35a2a9cb0969792613a8e7f7e93a6b00cb3caacf000d7018943b12e2b4ad29e7849df14ebd51caf4fd739b893613ab8965193849384614374565b0390a15b613aa7604051948594855260208501906124e4565b606060408401526060830190612a3e565b0390a1565b602190634e487b7160e01b6000525260246000fd5b855184811015613afe57600103613a265784516000526069602052613af983600020613d71565b613a26565b602185634e487b7160e01b6000525260246000fd5b602189634e487b7160e01b6000525260246000fd5b61399c565b5050505050509050565b613b41828261497b565b506020810180519091906001600160a01b039081168015613b2d57613b6a908260655416614b8c565b8083511690604090818401519460e085015115600090600014613cbc575060808501515b610120860151151590606087019788519660049788811015613b135790613be6949392918a516139f360c08d0151928b5197613bc9896125c6565b8589528660208a01528c8901526000606089015260808801612c38565b855184811015613afe57613c7a5784516000526068602052613c0a83600020613db3565b5116925193519180831015613abd5750927fa17b9023914ac67fce374ea74da20a2d3383a0dcbc348890794328a35a2a9cb0969792613c727fb225fd6bcccad9342bc10ccc7e25ef77175b77348c8393d669ac2dbc98a1ae2993613ab8965193849384614374565b0390a1613a92565b855184811015613afe57600103613ca6578451600052606a602052613ca183600020613db3565b613c0a565b8451600052606a602052613ca183600020613db3565b613b8e565b15613cc857565b60405162461bcd60e51b815260206004820152600c60248201526b37b7363ca2bc32b1baba37b960a11b6044820152606490fd5b90604051613d09816125c6565b60c06004829460018060a01b03815416845260018101546020850152613d5360ff600283015481811615156040880152818160081c161515606088015260101c1660808601612c38565b600381015460a08501520154910152565b91908201809211612aea57565b600a6000918281558260018201558260028201558260038201558260048201558260058201558260068201558260078201558260088201558260098201550155565b600b60009182815582600182015582600282015582600382015582600482015582600582015582600682015582600782015582600882015582600982015582600a8201550155565b90929360018060a01b038092169060409485516370a0823160e01b9485825260009616928360048301526020988983602481895afa928315613fb557908a95949392918993613f7d575b5083613ee4575b5050602491613e5a91613d64565b9487519485938492835260048301525afa928315613ed95792613eaa575b5011613e82575050565b60649250519062461bcd60e51b825260048201526002602482015261746360f01b6044820152fd5b9091508381813d8311613ed2575b613ec281836126af565b8101031261258f57519038613e78565b503d613eb8565b8451903d90823e3d90fd5b909192939450333b15610482578160a489928b5194859384926316e95edb60e31b84528b60048501528960248501528a604485015260806064850152816084850152848401378181018301859052601f01601f1916810103018183335af18015613f7357908994939291613f59575b80613e4c565b91613e5a9197613f6a602494612681565b97915091613f53565b88513d89823e3d90fd5b8092935086919495963d8311613fae575b613f9881836126af565b8101031261048257908994939291519138613e45565b503d613f8e565b89513d8a823e3d90fd5b60038210156124f15752565b9060048110156124f15760ff80198354169116179055565b6066549160018060a01b03825116926020830151604084015160048110156124f1576060850151608086015160a087015115159161403360c08901519460e08a0151966040519b612f118d612612565b608089015260a088015260c087015260e0860152600061010086015261012085015242610140850152610120830151906040519161407083612666565b61407a8484613fbf565b6020830152600052606b602052604060002090805160038110156124f15760019160209160ff801986541691161784550151910155604082015160048110156124f1576142a15760665460005260676020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b82541617905560408401516002820155606084015160048110156124f15761411c9060038301613fcb565b6080840151600482015560a0840151600582015561414f60c08501511515600683019060ff801983541691151516179055565b60e0840151600782015561010084015160088201556101208401516009820155600a6101408501519101555b614186606654612adb565b6066556020830151604084015160c08501516060860151926001600160a01b03169190151560048410156124f1576131446141ed9488519260e08a015194604051966141d1886125c6565b8752602087015260408601526001606086015260808501612c38565b60018060a01b03602084015116835160208401519260408501519060048210156124f15785610140956142969360607ff40f6abc9c6c249d1ee271694fe4367e2f308812fff71b773c7024b8708ed1b799015161427760808501519260a086015115159461012060c0880151970151996040519b8c5260208c015260408b015260608a01906124e4565b608088015260a087015260c086015260e08501526101008401906127fb565b610120820152a15190565b604082015160048110156124f15760010361339f5760665460005260696020526040600020835181556001810160018060a01b036020860151166001600160601b0360a01b82541617905560408401516002820155606084015160048110156124f1576143119060038301613fcb565b6080840151600482015560a0840151600582015561434460c08501511515600683019060ff801983541691151516179055565b60e0840151600782015561010084015160088201556101208401516009820155600a61014085015191015561417b565b6001600160a01b039091168152602081019190915260608101929161439c91604001906124e4565b565b926143ab909291926145d6565b6000918282136143bc575b50505050565b606f54604051632f7ce47360e21b8152600481018390526001600160a01b039182169190610160908181602481875afa9182156144955761440e9284926040928a92614478575b505001511694614ca5565b90823b1561049857608492869594928692604051998a978896634f7a10db60e11b88526004880152602487015216604485015260648401525af190811561446c575061445d575b8080806143b6565b61446690612681565b38614455565b604051903d90823e3d90fd5b61448e9250803d106139335761392581836126af565b3880614403565b6040513d89823e3d90fd5b91906145405760018060a01b038151166001600160601b0360a01b8354161782556020810151600183015560028201906144ec60408201511515839060ff801983541691151516179055565b6060810151825461ff00191690151560081b61ff001617825560808101519060048210156124f1578260c09262ff0000600495549160101b169062ff0000191617905560a081015160038501550151910155565b634e487b7160e01b600052600060045260246000fd5b8051602082015160408301516145799290151591906001600160a01b0316614cd5565b600090808252606c6020526040822054606d6020526040832060a0850151845260205260408320558152606c60205260408120805491600160401b83101561367f5750816145d091600161439c9594018155612594565b906144a0565b805160208083015160408085015192949390926145ff92901515916001600160a01b0316614cd5565b92600093808552606d825260a08386209401938451865282528285205493818652606c835283862054946000199586810190811161472f5781106146bc575b5090606c9291818752606d83528487209051875282528584812055855252822090815480156146a85701916146738383612594565b61469457808260049255826001820155826002820155826003820155015555565b634e487b7160e01b82526004829052602482fd5b634e487b7160e01b84526031600452602484fd5b828752606c845284872080549087820191821161471b57610d67606c96959493926146e692612594565b8389528585526146fc816145d0848a8d20612594565b838952606d855260a0878a20910151895284528588205590919261463e565b634e487b7160e01b89526011600452602489fd5b634e487b7160e01b88526011600452602488fd5b91909160409081519061475582612612565b600094858352602092868482015286858201528660608201528660808201528660a08201528660c08201528660e082015261010091878383015261012090888284015261014092898482015250888688516147af81612666565b82815201526004811015614967578693929190806148875750600a906001958a5260678752848a20908551946147e486612612565b82548652878060a01b0388840154168987015260028301548787015261481460ff60038501541660608801612c38565b60048301546080870152600583015460a087015260ff600684015416151560c0870152600783015460e0870152600883015490860152600982015490850152015490820152955b86518152606b84522092519261487084612666565b61487e60ff82541685613fbf565b01549082015290565b92949193509160010361492e5791600a6001949287948a5260698752848a20908551946148b386612612565b82548652878060a01b038884015416898701526002830154878701526148e360ff60038501541660608801612c38565b60048301546080870152600583015460a087015260ff600684015416151560c0870152600783015460e08701526008830154908601526009820154908501520154908201529561485b565b855162461bcd60e51b8152602060048201526012602482015271696e76616c6964207472616465207479706560701b6044820152606490fd5b634e487b7160e01b89526021600452602489fd5b91909160409081519361498d8561264a565b600094858152602092868483015286858301528660608301528660808301528660a08301528660c08301528660e0830152610100928784840152610120918883850152610140908982860152610160928a848701528a610180809701528a888a516149f781612666565b82815201526004811015614b78579388959360ff9384888e600b9660019c9a15600014614ad357815260688d522093895198614a328a61264a565b85548a528b8060a01b038c870154168d8b015260028601548b8b0152614a618360038801541660608c01612c38565b600486015460808b0152600586015460a08b0152600686015460c08b0152600786015460e08b01526008860154908a01526009850154908282161515908a015260081c16151590870152600a820154908601520154161515908201529586518152606b84522092519261487084612666565b8152606a8d522093895198614ae78a61264a565b85548a528b8060a01b038c870154168d8b015260028601548b8b0152614b168360038801541660608c01612c38565b600486015460808b0152600586015460a08b0152600686015460c08b0152600786015460e08b01526008860154908a01526009850154908282161515908a015260081c16151590870152600a820154908601520154161515908201529561485b565b634e487b7160e01b8b52602160045260248bfd5b60405162435da560e01b8152602092916001600160a01b039084908390600490829085165afa92831561369b578492600094614c68575b5060405163b36d691960e01b815290821660048201529283916024918391165afa90811561369b57600091614c33575b50614bfb5750565b6064906040519062461bcd60e51b825260048201526011602482015270189b1858dadb1a5cdd081858d8dbdd5b9d607a1b6044820152fd5b908282813d8311614c61575b614c4981836126af565b810103126102195750614c5b90612a92565b38614bf3565b503d614c3f565b919282819592953d8311614c9e575b614c8181836126af565b810103126102195750906024614c978593612a7e565b9390614bc3565b503d614c77565b6000808212614cb2575090565b600160ff1b8214614cc1570390565b634e487b7160e01b81526011600452602490fd5b9091600160401b831015614d125760009015614d0a575060ff60015b169160201b906001600160601b03199060601b16171790565b60ff90614cf1565b60405162461bcd60e51b81526020600482015260036024820152621c1d1b60ea1b6044820152606490fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209390613312e1426d66fe74f4907e7004cab77d24216947aa798670fbc02f03db64736f6c63430008130033