0 txs
25 calls
constructor
constructor()
functions
addresses
viewfunction addresses() view returns (address, address[], address, address, address)
balanceOf
viewfunction balanceOf(address user) view returns (uint256)
balances
viewfunction balances(address user) view returns (uint256, uint256, uint256)
commissionfee
viewfunction commissionfee(uint256 productId) view returns (uint256)
currentEpoch
viewfunction currentEpoch() view returns (uint256)
getPythPrice
viewfunction getPythPrice(uint256 timestamp, uint256 productId) view returns (uint64)
oneMinOrders
viewfunction oneMinOrders(uint256[] idx) view returns (tuple[])
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
treasuryAmount
viewfunction treasuryAmount() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addOperator
nonpayablefunction addOperator(address _operatorAddress)
closeOneMinOrder
nonpayablefunction closeOneMinOrder(uint256 idx, uint256 price)
closeOneMinOrders
nonpayablefunction closeOneMinOrders(tuple[] closingOrders)
initialize
nonpayablefunction initialize(address _usdcAddress, address _adminAddress, address _operatorAddress, address _clearingHouseAddress)
pause
nonpayablefunction pause()
removeOperator
nonpayablefunction removeOperator(address _operatorAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
retrieveMisplacedETH
nonpayablefunction retrieveMisplacedETH()
retrieveMisplacedTokens
nonpayablefunction retrieveMisplacedTokens(address _token)
setAdmin
nonpayablefunction setAdmin(address _adminAddress)
setCommissionfee
nonpayablefunction setCommissionfee(uint256 productId, uint256 _commissionfee)
setPythLazer
nonpayablefunction setPythLazer(address _pythLazer)
settleOneMinOrders
nonpayablefunction settleOneMinOrders(uint256[] orderIds) returns (uint256[])
setToken
nonpayablefunction setToken(address _token)
setVault
nonpayablefunction setVault(address _vault)
submitOneMinOrders
nonpayablefunction submitOneMinOrders(tuple[] orders)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updatePrice
payablefunction updatePrice(tuple priceLazerData, uint64 timestamp) payable
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
DebugLog
event DebugLog(string message)
DepositCoupon
event DepositCoupon(address indexed to, address from, uint256 amount, uint256 expirationEpoch, uint256 result)
EndRound
event EndRound(uint256 indexed epoch, uint256 productId, uint256 price, uint256 timestamp)
Initialized
event Initialized(uint64 version)
OrderSettled
event OrderSettled(address indexed user, uint256 indexed idx, uint256 epoch, uint256 closingPrice, uint256 closingTime, uint256 settleAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PriceIdAdded
event PriceIdAdded(uint256 indexed productId, bytes32 priceId, string symbol)
RoundSettled
event RoundSettled(uint256 indexed epoch, uint256 orderCount, uint256 collectedFee)
StartRound
event StartRound(uint256 indexed epoch, uint256 productId, uint256 price, uint256 timestamp)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadySettled
error AlreadySettled()
EnforcedPause
error EnforcedPause()
EpochHasNotStartedYet
error EpochHasNotStartedYet()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance()
InsufficientEscrowBalance
error InsufficientEscrowBalance(address user, uint256 available, uint256 required)
InsufficientVerificationFee
error InsufficientVerificationFee(uint256 required, uint256 provided)
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
InvalidChannel
error InvalidChannel()
InvalidCommissionFee
error InvalidCommissionFee()
InvalidEpoch
error InvalidEpoch()
InvalidId
error InvalidId()
InvalidIndex
error InvalidIndex()
InvalidInitDate
error InvalidInitDate()
InvalidInitialization
error InvalidInitialization()
InvalidPriceId
error InvalidPriceId()
InvalidProductId
error InvalidProductId()
InvalidRound
error InvalidRound()
InvalidRoundPrice
error InvalidRoundPrice()
InvalidStrike
error InvalidStrike()
InvalidSymbol
error InvalidSymbol()
InvalidTime
error InvalidTime()
InvalidTokenAddress
error InvalidTokenAddress()
NotInitializing
error NotInitializing()
OnlyAdmin
error OnlyAdmin()
OnlyOperator
error OnlyOperator()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PriceIdAlreadyExists
error PriceIdAlreadyExists()
PriceLengthMismatch
error PriceLengthMismatch()
ProductIdAlreadyExists
error ProductIdAlreadyExists()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VaultCannotDeposit
error VaultCannotDeposit()
creation bytecode
0x60a08060405234620000d157306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000c257506001600160401b036002600160401b0319828216016200007c575b604051613d9b9081620000d7823960805181818161256001526126bd0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806200005c565b63f92ee8a960e01b8152600490fd5b600080fdfe6080604052600436101561001257600080fd5b60e060003560e01c90816309b5ab7d14612ccf57816310cbdcd314612c12578163144fa6d714612ba257816327e235e314612a955781632f7e262414612a42578163368acb09146129b25781633f4ba83a1461292f578163447701a21461289c5781634f1ef2861461267f578163503e512f146125ca57816352d1902d1461254d5781635657154c146125025781635c975abb146124d25781636817031b1461246e578163704b6c021461241057816370a0823114612377578163715018a61461230d57816376671808146122c25781637f938a2314612038575080638456cb5914611fb25780638da5cb5b14611f7c5780638e61c6b2146117525780638f552f2114610f66578063930767de14610e105780639870d7fe14610dc6578063ac8a584a14610ca6578063ad3cb1cc14610c5c578063b1f3c5221461061a578063c1684715146105bf578063da0321cd1461048c578063f2fde38b146104615763f8c8765e1461018057600080fd5b3461045c57608036600319011261045c576101996134a3565b602435906001600160a01b03808316830361045c57604435818116810361045c576064359282841680940361045c577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009485549460ff8660401c1615956001600160401b03811680159081610454575b600114908161044a575b159081610441575b5061042f5767ffffffffffffffff198116600117885561035b95610356946102d09289610410575b5061024c613ba1565b610254613ba1565b61025c613ba1565b610265336138e1565b61026d613ba1565b610275613ba1565b61027d613ba1565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055600080516020613c468339815191528054919092166001600160a01b03166001600160a01b0319909116179055565b600080516020613ce683398151915280546001600160a01b031990811690921790557f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c038054821673acea761c27a909d4d3895128ebe6370fde2df481179055600080516020613d4683398151915280549091166001600160a01b03909216919091179055565b613896565b7f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c066020526103e87fa4289d95d4b91b82016b8c2856b76529eef739e7c2911b219e67d43ae473713181905560016000527f8df120d8c045e85af4912fb71e7f63eac7cc5f10907c75633d71ffbf894fd4bf556103d357005b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001178a5538610243565b60405163f92ee8a960e01b8152600490fd5b9050153861021b565b303b159150610213565b889150610209565b600080fd5b3461045c57602036600319011261045c5761048a61047d6134a3565b610485613aea565b6138e1565b005b3461045c57600036600319011261045c5760018060a01b0380600080516020613d46833981519152541681600080516020613cc683398151915254169082600080516020613ce6833981519152541683600080516020613c468339815191525416906040519384600080516020613d268339815191529486865480845260208094019081986000527fd19cff02ca355fd0c9db5958ad629c332914b223c578b317139e4a132f00e3259060005b8c8282106105a7575050505090610551910388613519565b6040519660a0880191885260a060208901525180915260c08701959160005b82811061059157505050508495506040850152606084015260808301520390f35b83518a1688529681019692810192600101610570565b83541684528b94509286019260019283019201610539565b3461045c576105cd366134b9565b906000527f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c0760205260406000209060005260205260206001600160401b0360406000205416604051908152f35b3461045c57602036600319011261045c576001600160401b0360043581811161045c573660238201121561045c57806004013591821161045c576101a0913660248483028401011161045c577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00916002835414610c4a5760028355600080600080516020613d2683398151915254905b818110610c15575b505015610c035760005b8281106106c95760018455005b602485820283010135600052600080516020613ca6833981519152602052604060002054610b8757600080516020613ce6833981519152546001600160a01b031661071a82870284016064016138cd565b813b1561045c5760405163649a9dab60e11b81523060048201526001600160a01b03909116602480830191909152838802850160c48181013560448086019190915282013560648501529101356084830152600160a483015290916000918391829084905af19081610b78575b506108345780600080516020613c6683398151915261082a6107b26024896001960287010135613955565b6108166041604051809365027b93232b9160d51b60208301527f202d2075736572206c6f636b496e457363726f77206661696c65640000000000602691610802815180926020868801910161359c565b830191820152036021810184520182613519565b6040519182916020835260208301906135bf565b0390a15b016106bc565b600080516020613ce683398151915254600080516020613cc683398151915254828702840160e40135916001600160a01b039182169116803b1561045c5760405163649a9dab60e11b81529160009183918290849082906108ae908a8f028c0160248101359160449190910135908b90306004870161382f565b03925af19081610b69575b506109ec5750600080516020613c668339815191526109466108e2602488850286010135613955565b6108166042604051809365027b93232b9160d51b60208301527f202d207661756c74206c6f636b496e457363726f77206661696c656400000000602691610932815180926020868801910161359c565b830191820152036022810184520182613519565b0390a1600080516020613ce6833981519152546001600160a01b03169061097386820284016064016138cd565b91803b1561045c57604051631b47f29b60e01b81529260009184918290849082906109b8908d89028b0160c4810135916024820135916044013590306004870161382f565b03925af19182156109e0576001926109d1575b5061082e565b6109da906134cf565b866109cb565b6040513d6000823e3d90fd5b858202830160248101356000818152600080516020613ca6833981519152602052604090209081556044820135600182015592919060028401906001600160a01b0390610a3b906064016138cd565b82546001600160a01b031916911617905581870284016084810135600385015560a40135906004840190600283101561045c57815460ff93841660ff1991821617909255838902860160c481013560058701556006860191909155610104810135600786015561012481013560088601556101448101356009860155610164810135600a860155610184810135600b8601556101a4013580151594600c919082019086900361045c57600195600080516020613c6683398151915294610b61948354169116179055610816602c610b1960248c88028a010135613955565b92604051809465027b93232b9160d51b60208301526508185919195960d21b602691610b4e815180926020868801910161359c565b8301918201520390810184520182613519565b0390a161082e565b610b72906134cf565b876108b9565b610b81906134cf565b86610787565b80600080516020613c66833981519152610b61610bad6024896001960287010135613955565b6108166035604051809365027b93232b9160d51b60208301526e20616c72656164792065786973747360881b602691610bef815180926020868801910161359c565b830191820152036015810184520182613519565b60405163e6c4247b60e01b8152600490fd5b610c1e816135e4565b90543360039290921b1c6001600160a01b031614610c3e576001016106aa565b505050600185806106b2565b604051633ee5aeb560e01b8152600490fd5b3461045c57600036600319011261045c57610ca2604051610c7c816134fe565b60058152640352e302e360dc1b60208201526040519182916020835260208301906135bf565b0390f35b3461045c57602036600319011261045c57610cbf6134a3565b600080516020613d46833981519152546001600160a01b03919082163303610c035781600091165b600080516020613d26833981519152918254928382101561048a57849383610d0e846135e4565b979054600398891b1c1614610d2b57509293506001019150610ce7565b9093925060001991828201918211610db057610d5a84610d4d610d78946135e4565b905490891b1c16916135e4565b90919060018060a01b038084549260031b9316831b921b1916179055565b82548015610d9a570192610d8b846135e4565b8154921b9290921b1916905555005b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b3461045c57602036600319011261045c57610ddf6134a3565b600080516020613d46833981519152546001600160a01b039081163303610c0357811615610c035761048a90613896565b3461045c5760208060031936011261045c57610e2a6134a3565b9060018060a01b0380600080516020613d46833981519152541690813303610c035780600080516020613c4683398151915254169316809314610f54576040516370a0823160e01b8152306004820152908282602481875afa9182156109e057600092610f25575b50604051918383019163a9059cbb60e01b8352602484015260448301526044825260808201918083106001600160401b03841117610f0f57600092604052519082855af1156109e0576000513d610f065750803b155b610eee57005b60249060405190635274afe760e01b82526004820152fd5b60011415610ee8565b634e487b7160e01b600052604160045260246000fd5b9091508281813d8311610f4d575b610f3d8183613519565b8101031261045c57519084610e92565b503d610f33565b604051630f58058360e11b8152600490fd5b60031960403682011261045c57600435906001600160401b03821161045c57604090823603011261045c57602435906001600160401b038216820361045c57600080600080516020613d2683398151915254905b81811061171d575b505015610c0357603c6001600160401b0383160661170b5760405190610fe7826134fe565b80600401356001600160401b03811161045c5761100a9060043691840101613555565b82526024810135906001600160401b03821161045c57013660238201121561045c57600481013561103a8161363d565b916110486040519384613519565b8183526024602084019260061b8201019036821161045c57602401915b8183106116da57505050602082015260018060a01b0390817f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c0354166040519063bac12f8760e01b8252602082600481845afa9182156109e0576000926116a6575b508134106116875760006110fb83928551604051948580948193630cbf0d2d60e11b83526020600484015260248301906135bf565b03925af19384156109e0576000946115fc575b50508034116115ce575b506040516307bdfb3160e21b815260206004820152916080838061113f60248201856135bf565b038173cda8d12dfe97da09a1685b9b9b13f68a8ec9cb8f5af480156109e057600090600094600091611567575b5090600481101561141c57600103611555576000905b60ff851660ff831610156114d9579060606111b29260405180948192633edc80ed60e21b83528760048401613b7f565b038173cda8d12dfe97da09a1685b9b9b13f68a8ec9cb8f5af49182156109e05760009260009160009161147c575b509260009160009060005b60ff821660ff82161061130e575050806112fc575b611213575b505060010160ff1690611182565b919496929093956000199660005b60208a015180518210156112e6578161123991613875565b515163ffffffff86161461124f57600101611221565b600192985060ff945095602061126e8b999398828897999d0151613875565b5101515b60018101611284575b50509250611205565b6001600160401b038b166000527f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c076020526040600020906000526020526001600160401b03604060002091166001600160401b0319825416179055898061127b565b50509460ff935095839294989660019298611272565b506001600160401b0382161515611200565b604080516353677f7f60e01b8152978890819061132f908c60048401613b7f565b038173cda8d12dfe97da09a1685b9b9b13f68a8ec9cb8f5af480156109e057600097600091611432575b508097600581101561141c5715611377575b5060010160ff166111eb565b604080516367974a5f60e11b815298509295509092508690819061139f908a60048401613b7f565b038173cda8d12dfe97da09a1685b9b9b13f68a8ec9cb8f5af480156109e0576000956000916113d5575b5094926001918261136b565b9550506040853d604011611414575b816113f160409383613519565b8101031261045c5761140e602061140787613b4e565b9601613b70565b8a6113c9565b3d91506113e4565b634e487b7160e01b600052602160045260246000fd5b9750506040873d604011611474575b8161144e60409383613519565b8101031261045c57865196600588101561045c57602061146e9101613b70565b8c611359565b3d9150611441565b935050506060823d6060116114d1575b8161149960609383613519565b8101031261045c57815163ffffffff8116810361045c576114c860406114c160208601613b62565b9401613b70565b909290886111e0565b3d915061148c565b600080516020613c668339815191526115506114fd6001600160401b038916613955565b610816603d60405180937f5072696365207570646174656420666f722074696d657374616d703a200000006020830152611540815180926020868601910161359c565b810103601d810184520182613519565b0390a1005b60405163ea3a9a3960e01b8152600490fd5b945050506080833d6080116115c6575b8161158460809383613519565b8101031261045c5761159583613b4e565b50602083015192600484101561045c576115bd60606115b660408401613b62565b9201613b70565b9390938661116c565b3d9150611577565b600080806115dd819434613889565b8181156115f3575b3390f1156109e05783611118565b506108fc6115e5565b909193503d806000843e6116108184613519565b82019160408184031261045c5780516001600160401b03811161045c5781019083601f8301121561045c578151916116478361353a565b946116556040519687613519565b8386526020848301011161045c576020926116759184808801910161359c565b01519081160361045c5791848061110e565b60405163477f725360e01b815260048101839052346024820152604490fd5b9091506020813d6020116116d2575b816116c260209383613519565b8101031261045c575190856110c6565b3d91506116b5565b60408336031261045c57602060409182516116f4816134fe565b853581528286013583820152815201920191611065565b6040516337bf561360e11b8152600490fd5b611726816135e4565b90543360039290921b1c6001600160a01b03161461174657600101610fba565b50505060018380610fc2565b3461045c57602036600319011261045c576001600160401b03806004351161045c5736602360043501121561045c57600435600401351161045c573660246004356004013560071b60043501011161045c57600080600080516020613d2683398151915254905b818110611f47575b505015610c035760005b6004356004013581106117da57005b8060071b6004350190602482013580600052600080516020613ca683398151915260205260406000209081548015611f1d5760ff600c84015416611ef35760028301546001600160a01b0316908115611ec85760058401549283158015611ebc575b611e8e57604487013515611e055742606488013511611d735750600060848701359081128015918503858113929092169185131617610db0576000608487013584031315611abb575050600080516020613ce683398151915254600080516020613cc683398151915254600184015484546006860154936001600160a01b03938416939192911690813b1561045c57600080946118f060405197889687958694631b47f29b60e01b8652306004870161382f565b03925af180156109e057611aac575b50600080516020613ce6833981519152546002830154600080516020613cc683398151915254600185015485546001600160a01b03928316959383169490921691823b1561045c57886119776000969287936084956040519a8b998a98899763875ab05360e01b8952013590039230600488016137ed565b03925af180156109e057611a9d575b50600080516020613ce683398151915254600282015460018301548354959290916001600160a01b039081169116803b1561045c576119e79660008094604051998a9586948593631b47f29b60e01b855260848b013592306004870161382f565b03925af19384156109e057600194611a8e575b505b6044810135600983018190556064820135600a8401819055608490920135600b8401819055600c8401805460ff191687179055600284015484549487015460408051918252602082019490945292830193909352606082015260a085901b859003909116907fa15779a7b66856c8539d52d6e89beef2a2229d642158ec7a873b24067daa1bd790608090a35b016117cb565b611a97906134cf565b846119fa565b611aa6906134cf565b83611986565b611ab5906134cf565b846118ff565b600060848794970135870312600014611c9d57505060848101358403600160ff1b14610db057600080516020613ce6833981519152546002830154600184015484546005860154936001600160a01b03938416939192911690813b1561045c5760008094611b4060405197889687958694631b47f29b60e01b8652306004870161382f565b03925af180156109e057611c8e575b50600080516020613ce683398151915254600080516020613cc6833981519152546002840154600185015485546001600160a01b039283169490938316921690813b1561045c57600086611bc882968c966084956040519a8b998a98899763875ab05360e01b89520135900387039230600488016137ed565b03925af180156109e057611c7f575b5060018060a01b03600080516020613ce683398151915254169360018060a01b03600080516020613cc6833981519152541690600184015495611c2a855492608486013590036000036006870154613889565b96813b1561045c5760008094611c576040519a8b9687958694631b47f29b60e01b8652306004870161382f565b03925af19384156109e057600194611c70575b506119fc565b611c79906134cf565b84611c6a565b611c88906134cf565b84611bd7565b611c97906134cf565b84611b4f565b60018060a09794971b03600080516020613ce683398151915254166001850154813b1561045c5760008094611ce960405197889687958694631b47f29b60e01b8652306004870161382f565b03925af180156109e057611d64575b50600080516020613ce683398151915254600080516020613cc68339815191525460018301548354600685015496936001600160a01b03938416939192911690813b1561045c5760008094611c576040519a8b9687958694631b47f29b60e01b8652306004870161382f565b611d6d906134cf565b83611cf8565b905060019550600080516020613c668339815191529350611dfd9250611d999150613955565b610816603e604051809365027b93232b9160d51b60208301527f206861732066757475726520636c6f73696e672074696d650000000000000000602691611de9815180926020868801910161359c565b83019182015203601e810184520182613519565b0390a1611a88565b905060019550600080516020613c668339815191529350611dfd9250611e2b9150613955565b61081660408051809365027b93232b9160d51b60208301527f2068617320696e76616c696420636c6f73696e67207072696365000000000000602691611e7a815180926020868801910161359c565b830191820152036020810184520182613519565b60019650600080516020613c668339815191529450611dfd93506108169250611eb79150613955565b613798565b5060068501541561183c565b505060019350600080516020613c668339815191529150610816611eee611dfd92613955565b613745565b5060019350600080516020613c668339815191529150610816611f18611dfd92613955565b6136ee565b5060019350600080516020613c668339815191529150610816611f42611dfd92613955565b613696565b611f50816135e4565b90543360039290921b1c6001600160a01b031614611f70576001016117b9565b505050600181806117c1565b3461045c57600036600319011261045c57600080516020613c86833981519152546040516001600160a01b039091168152602090f35b3461045c57600036600319011261045c57611fcb613b23565b600080516020613d46833981519152546001600160a01b03163303610c0357611ff2613b23565b600080516020613d06833981519152600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461045c5761204636613457565b906120508261363d565b9061205e6040519283613519565b82825261206a8361363d565b60209390601f19018460005b82811061224d5750505060005b81811061216257505050604051918083018184528251809152816040850193019160005b8281106120b45785850386f35b9091929384519081518152838201518482015260018060a01b0360408301511660408201526060808301519082015260808083015191600283101561141c5760019386936101a09383015260a0808201519083015260c080820151908301528a8101518b8301526101008082015190830152610120808201519083015261014080820151908301526101608082015190830152610180809101511515908201520195019101929190926120a7565b61216d818385613686565b35600052600080516020613ca68339815191528552604060002090604051612194816134e2565b825481526001830154878201526002808401546001600160a01b0316604083015260038401546060830152600484015460ff919082169081101561141c57600194600c916080850152600581015460a0850152600681015460c085015260078101548b85015260088101546101008501526009810154610120850152600a810154610140850152600b810154610160850152015416151561018082015261223b8287613875565b526122468186613875565b5001612083565b604051612259816134e2565b60008152600083820152600060408201526000606082015260006080820152600060a0820152600060c082015260008982015260006101008201526000610120820152600061014082015260006101608201526000610180820152828288010152018590612076565b3461045c57600036600319011261045c57636858990042106122fb5763685898ff194201428111610db057602090603c60405191048152f35b60405163cec504ff60e01b8152600490fd5b3461045c57600036600319011261045c57612326613aea565b600080516020613c8683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461045c5760208060031936011261045c576123916134a3565b600080516020613ce683398151915254604051630988931960e21b81526001600160a01b03928316600482015291839183916024918391165afa9081156109e0576000916123e3575b50604051908152f35b90508181813d8311612409575b6123fa8183613519565b8101031261045c5751826123da565b503d6123f0565b3461045c57602036600319011261045c576124296134a3565b612431613aea565b6001600160a01b03811615610c0357600080516020613d4683398151915280546001600160a01b0319166001600160a01b03909216919091179055005b3461045c57602036600319011261045c576124876134a3565b600080516020613d46833981519152546001600160a01b03919082163303610c0357168015610c0357600080516020613cc683398151915280546001600160a01b0319169091179055005b3461045c57600036600319011261045c57602060ff600080516020613d0683398151915254166040519015158152f35b3461045c57602036600319011261045c576004356000527f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c066020526020604060002054604051908152f35b3461045c57600036600319011261045c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036125b85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b3461045c576125d8366134b9565b90600080600080516020613d2683398151915254905b81811061264a575b505015610c03576113888211612638576000527f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c06602052604060002055600080f35b60405163115dada760e21b8152600490fd5b612653816135e4565b90543360039290921b1c6001600160a01b031614612673576001016125ee565b505050600183806125f6565b604036600319011261045c576126936134a3565b6024356001600160401b03811161045c576126b2903690600401613555565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811630811490811561286e575b506125b8576126f6613aea565b6040516352d1902d60e01b8152908216916020918281600481875afa6000918161283f575b5061273957604051634c9c8ce360e01b815260048101859052602490fd5b9284937f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908181036128275750823b1561280e5780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156127f45750600080848461048a96519101845af4903d156127eb573d6127ce8161353a565b906127dc6040519283613519565b8152600081943d92013e613be2565b60609250613be2565b92505050346127ff57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d8311612867575b6128578183613519565b8101031261045c5751908661271b565b503d61284d565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415846126e9565b3461045c576128aa366134b9565b90600080600080516020613d2683398151915254905b8181106128fa575b505015610c0357600052600080516020613ca68339815191526020526040600020906009820155600a42910155600080f35b612903816135e4565b90543360039290921b1c6001600160a01b031614612923576001016128c0565b505050600183806128c8565b3461045c57600036600319011261045c57612948613abe565b600080516020613d46833981519152546001600160a01b03163303610c035761296f613abe565b600080516020613d0683398151915260ff1981541690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b3461045c57600036600319011261045c57600080516020613ce68339815191525460405163368acb0960e01b815290602090829060049082906001600160a01b03165afa80156109e057600090612a0f575b602090604051908152f35b506020813d602011612a3a575b81612a2960209383613519565b8101031261045c5760209051612a04565b3d9150612a1c565b3461045c57600036600319011261045c57600080516020613d46833981519152546001600160a01b031633819003610c03576000808080934790828215612a8c575bf1156109e057005b506108fc612a84565b3461045c5760208060031936011261045c57612aaf6134a3565b600080516020613ce683398151915254604051630988931960e21b81526001600160a01b03928316600482018190529190921692908183602481875afa9283156109e057600093612b73575b5081906024604051809681936325a5fb8960e11b835260048301525afa80156109e057600090612b45575b60609350612b348184613868565b916040519384528301526040820152f35b508083813d8311612b6c575b612b5b8183613519565b8101031261045c5760609251612b26565b503d612b51565b9092508181813d8311612b9b575b612b8b8183613519565b8101031261045c57519181612afb565b503d612b81565b3461045c57602036600319011261045c57612bbb6134a3565b600080516020613d46833981519152546001600160a01b03919082163303610c0357168015610c0357600080516020613c4683398151915280546001600160a01b0319166001600160a01b03909216919091179055005b3461045c57602036600319011261045c57612c2b6134a3565b612c33613abe565b600080600080516020613d2683398151915254905b818110612c9a575b505015610c03576001600160a01b03168015610c03577f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c0380546001600160a01b0319169091179055005b612ca3816135e4565b90543360039290921b1c6001600160a01b031614612cc357600101612c48565b50505060018280612c50565b3461045c57612cdd36613457565b600080600080516020613d2683398151915254905b818110613422575b505015610c0357600080516020613cc6833981519152546001600160a01b03168015610c03579190612d2b81613654565b926000926000925b808410612db5578585612d4581613654565b9160005b828110612d9657836040518091602080830160208452825180915260206040850193019160005b828110612d7f57505050500390f35b835185528695509381019392810192600101612d70565b80612da360019284613875565b51612dae8287613875565b5201612d49565b90919293612dc4858385613686565b35156133e857612dd5858385613686565b35600052600080516020613ca68339815191526020526040600020805480156133bf5760ff600c830154166133965760028201546001600160a01b031690811561336c57600583015491821561333b57600184015490603c808302908382041483151715610db0576368589900818101809111610db0576368589978820110610db05763685899788101421061328b57636858997881016000527f8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c07602052604060002060038701546000526020526001600160401b03604060002054169081156131db5763685899789082600989015501600a870155600786015480821191826131c1575b8215613197575b5050156130b2575050600080516020613ce68339815191525460028401546001850154600686015486549095509350916001600160a01b039081169116813b1561045c5760008a612f4b82966040519889978896879563875ab05360e01b875230600488016137ed565b03925af180156109e0576130a3575b50600080516020613ce6833981519152546002820154600183015483546005850154936001600160a01b03938416939192911690813b1561045c5760008094612fba60405197889687958694631b47f29b60e01b8652306004870161382f565b03925af180156109e057613094575b50612fdd6005820154600683015490613868565b600b8201555b600160ff19600c8301541617600c82015560018060a01b036002820154167fa15779a7b66856c8539d52d6e89beef2a2229d642158ec7a873b24067daa1bd78254926001810154613061600983015492600b600a82015491015490604051948594859094939260609260808301968352602083015260408201520152565b0390a361306f858385613686565b3561307a8288613875565b526000198114610db0576001809101945b01929190612d33565b61309d906134cf565b87612fc9565b6130ac906134cf565b87612f5a565b600080516020613ce6833981519152546001600160a01b031690813b1561045c5760008a916130fa82966040519889978896879563875ab05360e01b875230600488016137ed565b03925af180156109e057613188575b50600080516020613ce683398151915254600182015482546006840154926001600160a01b0316803b1561045c57600092838a61315d60405197889687958694631b47f29b60e01b8652306004870161382f565b03925af180156109e057613179575b506000600b820155612fe3565b613182906134cf565b8761316c565b613191906134cf565b87613109565b109050806131a7575b8c80612ee1565b5060ff600486015416600281101561141c576001146131a0565b915060ff600488015416600281101561141c571591612eda565b505050600194989350600080516020613c66833981519152925061081661320d61320761328394613955565b92613955565b6040519265027b93232b9160d51b602085015283602691613237815180926020868601910161359c565b8101927f202d20436c6f73696e67207072696365206973203020666f722065706f63682083850152604693613275825180936020888501910161359c565b010390810184520182613519565b0390a161308b565b5050600194989350600080516020613c668339815191529250610816603f6f081a5cc81b9bdd08199a5b9a5cda195960821b926132d36132cd61328396613955565b91613955565b9060405194859265027b93232b9160d51b602085015268010169022b837b1b4160bd1b60269361330c815180926020888a01910161359c565b850193840152602f92613328825180936020878501910161359c565b019182015203601f810184520182613519565b505050509380600080516020613c66833981519152613283610816611eb7613366600196888a613686565b35613955565b5050509380600080516020613c66833981519152613283610816611eee613366600196888a613686565b50509380600080516020613c66833981519152613283610816611f18613366600196888a613686565b50509380600080516020613c66833981519152613283610816611f42613366600196888a613686565b9380600080516020613c6683398151915261328361340f611f42613366600196888a613686565b60405191829160208084528301906135bf565b61342b816135e4565b90543360039290921b1c6001600160a01b03161461344b57600101612cf2565b50505060018380612cfa565b90602060031983011261045c576004356001600160401b039283821161045c578060238301121561045c57816004013593841161045c5760248460051b8301011161045c576024019190565b600435906001600160a01b038216820361045c57565b604090600319011261045c576004359060243590565b6001600160401b038111610f0f57604052565b6101a081019081106001600160401b03821117610f0f57604052565b604081019081106001600160401b03821117610f0f57604052565b90601f801991011681019081106001600160401b03821117610f0f57604052565b6001600160401b038111610f0f57601f01601f191660200190565b81601f8201121561045c5780359061356c8261353a565b9261357a6040519485613519565b8284526020838301011161045c57816000926020809301838601378301015290565b60005b8381106135af5750506000910152565b818101518382015260200161359f565b906020916135d88151809281855285808601910161359c565b601f01601f1916010190565b600080516020613d268339815191528054821015613627576000527fd19cff02ca355fd0c9db5958ad629c332914b223c578b317139e4a132f00e3250190600090565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610f0f5760051b60200190565b9061365e8261363d565b61366b6040519182613519565b828152809261367c601f199161363d565b0190602036910137565b91908110156136275760051b0190565b906136ec6035604051809465027b93232b9160d51b60208301526136c481518092602060268601910161359c565b81016e08191bd95cc81b9bdd08195e1a5cdd608a1b6026820152036015810185520183613519565b565b906136ec6036604051809465027b93232b9160d51b602083015261371c81518092602060268601910161359c565b81016f08185b1c9958591e481cd95d1d1b195960821b6026820152036016810185520183613519565b906136ec6032604051809465027b93232b9160d51b602083015261377381518092602060268601910161359c565b81016b103430b9903737903ab9b2b960a11b6026820152036012810185520183613519565b906136ec6034604051809465027b93232b9160d51b60208301526137c681518092602060268601910161359c565b81016d081a185cc81b9bc8185b5bdd5b9d60921b6026820152036014810185520183613519565b6001600160a01b039182168152918116602083015290911660408201526060810191909152608081019190915260a0810191909152600060c082015260e00190565b6001600160a01b03918216815291166020820152604081019190915260608101919091526080810191909152600060a082015260c00190565b91908201809211610db057565b80518210156136275760209160051b010190565b91908203918211610db057565b600080516020613d268339815191529081549168010000000000000000831015610f0f5782610d5a9160016136ec950190556135e4565b356001600160a01b038116810361045c5790565b6001600160a01b0390811690811561393c57600080516020613c8683398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000080821015613ab0575b506d04ee2d6d415b85acef810000000080831015613aa1575b50662386f26fc1000080831015613a92575b506305f5e10080831015613a83575b5061271080831015613a74575b506064821015613a64575b600a80921015613a5a575b60019081602160018601956139ef8761353a565b966139fd6040519889613519565b808852613a0c601f199161353a565b01366020890137860101905b613a24575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215613a5557919082613a18565b613a1d565b91600101916139db565b91906064600291049101916139d0565b600491939204910191386139c5565b600891939204910191386139b8565b601091939204910191386139a9565b60209193920491019138613997565b60409350810491503861397e565b60ff600080516020613d06833981519152541615613ad857565b604051638dfc202b60e01b8152600490fd5b600080516020613c86833981519152546001600160a01b03163303613b0b57565b60405163118cdaa760e01b8152336004820152602490fd5b60ff600080516020613d068339815191525416613b3c57565b60405163d93c066560e01b8152600490fd5b51906001600160401b038216820361045c57565b519060ff8216820361045c57565b519061ffff8216820361045c57565b9061ffff613b9a6020929594956040855260408501906135bf565b9416910152565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615613bd057565b604051631afcd79f60e31b8152600490fd5b90613c095750805115613bf757805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580613c3c575b613c1a575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15613c1256fe8be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c004be5e2ddd7b814bfc07153581bbbda6ea3d62d61c270f9788cae2f0297e18ae89016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c088be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c098be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c02cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033008be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c058be1692dc372f8902eb9c7cd5d19a5bdd4af3b9d33c637a94997c776bf7c1c04a2646970667358221220e1952ddd7fbb1a91488d3cdd5c49813dc909eafb214417afa583c21a3e94c20464736f6c63430008160033