147 txs
185 calls
constructor
constructor(address _symmioAddress, address admin, (uint256 symbolAddition, uint256 tradingFee, uint256 validationState, uint256 maxLeverage, uint256 acceptableValues, uint256 fundingState, uint256 forceCloseGapRatio) _limits, uint256 _minForceCloseGapRatio, uint256 _maxForceCloseGapRatio)
functions
addedSymbolHashes
viewfunction addedSymbolHashes(bytes32) view returns (bool)
dailyLimits
viewfunction dailyLimits() view returns (uint256 symbolAddition, uint256 tradingFee, uint256 validationState, uint256 maxLeverage, uint256 acceptableValues, uint256 fundingState, uint256 forceCloseGapRatio)
dailyOperations
viewfunction dailyOperations() view returns (uint256 symbolAddition, uint256 tradingFee, uint256 validationState, uint256 maxLeverage, uint256 acceptableValues, uint256 fundingState, uint256 forceCloseGapRatio)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getDailyLimits
viewfunction getDailyLimits() view returns (tuple)
getDailyOperations
viewfunction getDailyOperations() view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
lastResetTimestamp
viewfunction lastResetTimestamp() view returns (uint256)
maxForceCloseGapRatio
viewfunction maxForceCloseGapRatio() view returns (uint256)
minForceCloseGapRatio
viewfunction minForceCloseGapRatio() view returns (uint256)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
SETTER_ROLE
viewfunction SETTER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
SYMBOL_ADDER_ROLE
viewfunction SYMBOL_ADDER_ROLE() view returns (bytes32)
SYMBOL_FORCE_CLOSE_GAP_RATIO_MANAGER_ROLE
viewfunction SYMBOL_FORCE_CLOSE_GAP_RATIO_MANAGER_ROLE() view returns (bytes32)
SYMBOL_FUNDING_STATE_MANAGER_ROLE
viewfunction SYMBOL_FUNDING_STATE_MANAGER_ROLE() view returns (bytes32)
SYMBOL_MAX_LEVERAGE_MANAGER_ROLE
viewfunction SYMBOL_MAX_LEVERAGE_MANAGER_ROLE() view returns (bytes32)
SYMBOL_MIN_ACCEPTABLE_VALUES_MANAGER_ROLE
viewfunction SYMBOL_MIN_ACCEPTABLE_VALUES_MANAGER_ROLE() view returns (bytes32)
SYMBOL_REMOVER_ROLE
viewfunction SYMBOL_REMOVER_ROLE() view returns (bytes32)
SYMBOL_TRADING_FEE_MANAGER_ROLE
viewfunction SYMBOL_TRADING_FEE_MANAGER_ROLE() view returns (bytes32)
symbolHashes
viewfunction symbolHashes(uint256) view returns (bytes32)
symmioAddress
viewfunction symmioAddress() view returns (address)
UNPAUSER_ROLE
viewfunction UNPAUSER_ROLE() view returns (bytes32)
activateSymbols
nonpayablefunction activateSymbols(uint256[] symbolIds)
addSymbols
nonpayablefunction addSymbols(tuple[] symbols)
clearSymbolHashes
nonpayablefunction clearSymbolHashes()
deactivateSymbols
nonpayablefunction deactivateSymbols(uint256[] symbolIds)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
loadSymmioSymbols
nonpayablefunction loadSymmioSymbols(uint256 start, uint256 size)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDailyLimits
nonpayablefunction setDailyLimits(tuple _limits)
setForceCloseGapRatioBatch
nonpayablefunction setForceCloseGapRatioBatch(uint256[] symbolIds, uint256[] forceCloseGapRatios)
setForceCloseGapRatioBounds
nonpayablefunction setForceCloseGapRatioBounds(uint256 _minForceCloseGapRatio, uint256 _maxForceCloseGapRatio)
setSymbolAcceptableValuesBatch
nonpayablefunction setSymbolAcceptableValuesBatch(uint256[] symbolIds, uint256[] minAcceptableQuoteValues, uint256[] minAcceptablePortionLFs)
setSymbolFundingStateBatch
nonpayablefunction setSymbolFundingStateBatch(uint256[] symbolIds, uint256[] fundingRateEpochDurations, uint256[] fundingRateWindowTimes)
setSymbolMaxLeverageBatch
nonpayablefunction setSymbolMaxLeverageBatch(uint256[] symbolIds, uint256[] maxLeverages)
setSymbolTradingFeeBatch
nonpayablefunction setSymbolTradingFeeBatch(uint256[] symbolIds, uint256[] tradingFees)
unpause
nonpayablefunction unpause()
events
BatchOperationExecuted
event BatchOperationExecuted(string operationType, uint256[] symbolIds)
DailyLimitsUpdated
event DailyLimitsUpdated((uint256 symbolAddition, uint256 tradingFee, uint256 validationState, uint256 maxLeverage, uint256 acceptableValues, uint256 fundingState, uint256 forceCloseGapRatio) limits)
DailyOperationsReset
event DailyOperationsReset()
ForceCloseGapRatioBoundsUpdated
event ForceCloseGapRatioBoundsUpdated(uint256 min, uint256 max)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SymbolHashesCleared
event SymbolHashesCleared(address account)
SymbolsAdded
event SymbolsAdded(uint256 count)
SymmioSymbolsLoaded
event SymmioSymbolsLoaded(uint256 start, uint256 size)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
DailyLimitExceeded
error DailyLimitExceeded(string operation, uint256 attempted, uint256 remaining)
DuplicateSymbol
error DuplicateSymbol(string name)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidArrayLengths
error InvalidArrayLengths()
InvalidForceCloseGapRatio
error InvalidForceCloseGapRatio(uint256 value, uint256 min, uint256 max)
InvalidForceCloseGapRatioBounds
error InvalidForceCloseGapRatioBounds(uint256 min, uint256 max)
InvalidSymbolsList
error InvalidSymbolsList()
creation bytecode
0x3462000241576080601f62002c9538819003918201601f19168301926001600160401b03841190841017620002465781906040938452608039610160811262000241576200004e60806200027c565b9060e06200005d60a06200027c565b91603f19011262000241577f680e03eac51626498bd9830d073020ad4aee97df015036fcead66d2ea5a4aca5917f49331fa7a6bff36fa9ee03260e240f734d38c03e1a3dc05a9694a70e2e40d4f28460e093620000b96200025c565b938260800151918286526060608001518060208801526080800151808689015260a0608001518060608a015260c060800151908160808b01528a60800151928360a08c015261010060800151948560c08d01526101206080015198610140608001519860025490610100600160a81b039060081b169060018060a81b0319161760025542601155600355600455600555600655600755600855600955620001608162000291565b62000217575b5060c0620001736200025c565b600091818380935282602082015282878201528260608201528260808201528260a0820152015280600a5580600b5580600c5580600d5580600e5580600f55601055816012558060135582519182526020820152a160c084519180518352602081015160208401528581015186840152606081015160608401526080810151608084015260a081015160a0840152015160c0820152a1516128e59081620003b08239f35b6000808052600160205284902062000239916001600160a01b03169062000322565b503862000166565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519060e082016001600160401b038111838210176200024657604052565b51906001600160a01b03821682036200024157565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200031e57818052816020526040822081835260205260408220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b5090565b91906001830160009082825280602052604082205415600014620003a957845494680100000000000000008610156200039557600186018082558610156200038157836040949596828552602085200155549382526020522055600190565b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b5092505056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714611f3e575080630e69284c14611f03578063170fa79e14611ee557806317e4260614611eaa5780631a184e3714611df75780631d3f237014611dc0578063248a9ca314611d915780632e6debf914611c2b5780632f2ff15d14611bd157806336568abe14611b985780633d681b9314611b225780633f4ba83a14611a7257806359d39194146117ba5780635c975abb146117975780635f7ffe531461175c5780637278b28f1461172f5780637a56387f146115815780637c1f83ec146115505780638456cb591461149d57806387fcb7341461147f5780638b12f00c146114445780639010d07c146113fd57806391d14854146113bd5780639603f6d11461124757806396a92c231461120c5780639d72f28214611135578063a2011b3f146110fa578063a217fddf146110de578063a21d44e314611074578063a3246ad314610fcb578063af09f2b314610f73578063b343a0df14610f55578063b383e70e14610dd9578063b7342b3114610ca1578063bda9380214610c66578063c108c5ae14610bfa578063ca15c87314610bce578063d547741f14610b9b578063d84c7447146109bb578063db3a4df6146106f2578063e0d243e91461069a578063e63ab1e91461065f578063e983af1514610289578063f27ffaa71461024e5763fb1bb9de1461020e57600080fd5b346102495760003660031901126102495760206040517f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a8152f35b600080fd5b346102495760003660031901126102495760206040517f774540d7ea6f3ff938ed6681b7751a82a5d45f277dd39fba599c84c891c2385f8152f35b34610249576020366003190112610249576001600160401b03600435116102495736602360043501121561024957600435600401356102c7816120ac565b906102d56040519283612026565b8082526020820191829160249336858360051b600435010111610249578460043501905b858360051b6004350101821061054157505050610314612601565b61031c6122b6565b805191821561052f5761035c600354600a54908560405161033c8161200b565b600e81526d39bcb6b137b620b23234ba34b7b760911b60208201526126bd565b600a5560005b8381106104ab575060025460081c6001600160a01b031691823b156102495760405163e983af1560e01b81526020600482015290519481018590529384916044600583901b84018101929060009085015b82821061041f57505050509181600081819503925af1908115610413577f02d915045c40f236a14ec71bf730c43a032516e72dfc2c3596752f59d0cd03b792602092610404575b50604051908152a1005b61040d90611fdc565b836103fa565b6040513d6000823e3d90fd5b9193600191939550602080916043198b820301855287519081518152610452838301516101208086850152830190612675565b91604081015115156040830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e081015160e08301526101008091015191015296019201920187949391926103b3565b6104b5818461263e565b51906104c0826127fa565b91826000526014908160205260ff604060002054166105025750826000526020526104fc6040600020926001938460ff19825416179055612466565b01610362565b6020889101519061052b604051928392632286298360e01b845260206004850152830190612675565b0390fd5b60405163068189f960e41b8152600490fd5b8135906001600160401b03821161024957610120600435830136036023190112610249576040519161057283611fef565b6004358101808901358452604401356001600160401b038111610249573660438284600435010101121561024957888183600435010101356105b38161223f565b916105c16040519384612026565b8183523660448383876004350101010111610249578160009260446020938760043501010183860137830101526020840152606481600435010135918215158303610249576040840192909252600435016084810135606084015260a4810135608084015260c481013560a084015260e481013560c084015261010481013560e08401526101240135610100830152908152602091820191016102f9565b346102495760003660031901126102495760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b3461024957600036600319011261024957600354600454600554600654600754600854600954604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e090f35b346102495760446107023661218d565b9061070b61225a565b60025460405163430c3f7b60e01b8152600481018390526024810184905293600091859190829060081c6001600160a01b03165afa928315610413576000936107e8575b5060005b83518110156107b6578061077361076d610797938761263e565b516127fa565b80600052601460205260406000209081549160ff83161561079c575b5050506127b7565b610753565b60016107ae9360ff1916179055612466565b85808061078f565b7fb630b7582a23ba07cd534e4d4d9feeac5f5888bec83b4f00ae8b2b055c1330ae6040838582519182526020820152a1005b9092503d90816000823e6107fc8282612026565b6020818381010312610249578051906001600160401b03821161024957828101601f838301011215610249578181015190610836826120ac565b936108446040519586612026565b828552602085019080830160208560051b87860101011161024957602085840101915b60208560051b8786010101831061088557505050505050918361074f565b8251906001600160401b03821161024957610120858801830184870103601f19011261024957604051906108b882611fef565b858801830160208101518352604001516001600160401b03811161024957848701603f82868c8b010101011215610249578060208a9286848b01010101518860408284896109058361223f565b976109128551998a612026565b8389528c860195010101010111610249578a604061093a938860208701938d01010101612652565b602083015260609081848a89010101519283151584036102495760408101939093528689019093016080818101519284019290925260a0808201519284019290925260c0808201519284019290925260e080820151928401929092526101008082015192840192909252610120015190820152815260209283019201610867565b34610249576109c9366121a3565b91906109d3612601565b3360009081527f03eda775379a70bf93d9b0f8c57caac78faeddc3884569828f9554bede72d5b760205260409020547fde98bf799ad91187f9db6fbbb4f35ce3742bf88cf2723df0a20c4d051674c8b19060ff1615610b7d575081518151811490811591610b71575b50610b5f578151916008610a7c8154600f549060405196610a5c8861200b565b600c88526b66756e64696e67537461746560a01b978860208201526126bd565b600f5560005b8251811015610b1f57600254821c6001600160a01b031690610aa4818561263e565b51610aaf828761263e565b5192610abb838a61263e565b5190803b15610249576040516380e2bfb560e01b8152600481019390935260248301949094526044820152916000908390606490829084905af191821561041357610b0b92610b10575b506127b7565b610a82565b610b1990611fdc565b87610b05565b6000805160206128b98339815191528386610b5a60405192839260408452600c604085015260608401526080602084015260808301906127c6565b0390a1005b60405163a9854bc960e01b8152600490fd5b90508351141584610a3c565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461024957610bcc610bac36612167565b90806000526000602052610bc7600160406000200154612312565b6123b6565b005b346102495760203660031901126102495760043560005260016020526020604060002054604051908152f35b3461024957600036600319011261024957610c13612880565b5060e0604051610c2281611fab565b6003548152600454602082015260055460408201526006546060820152600754608082015260085460a082015260095460c0820152610c6460405180926121fe565bf35b346102495760003660031901126102495760206040517f9501768145874aebf3fee107acfb648c6c69caba38643cf94a0327c0006e2db68152f35b34610249576020366003190112610249576004356001600160401b03811161024957610cd19036906004016120c3565b610cd9612601565b610ce16122b6565b8051610d1d600554600c549060405193610cfa8561200b565b600f85526e616374697661746553796d626f6c7360881b948560208201526126bd565b600c5560005b8251811015610d9e5760025460081c6001600160a01b031690610d46818561263e565b51823b156102495760009260448492604051958693849263c678739d60e01b84526004840152600160248401525af191821561041357610d8a92610d8f57506127b7565b610d23565b610d9890611fdc565b84610b05565b6000805160206128b98339815191528383610b5a60405192839260408452600f604085015260608401526080602084015260808301906127c6565b34610249576020366003190112610249576004356001600160401b03811161024957610e099036906004016120c3565b610e11612601565b3360009081527fc55f0df96dc7536831836bad96b824f3f43f10e1db236e1b1937dd8958cbd6c060205260409020547fabe45d3ffa8e7957cb1f4fe9201a7a90db465109923e4742fbf4914a0b2ce03e9060ff1615610b7d57508051610ea9600554600c549060405193610e848561200b565b60118552706465616374697661746553796d626f6c7360781b948560208201526126bd565b600c5560005b8251811015610f1a5760025460081c6001600160a01b031690610ed2818561263e565b51823b156102495760009260448492604051958693849263c678739d60e01b845260048401528160248401525af191821561041357610f1592610d8f57506127b7565b610eaf565b6000805160206128b98339815191528383610b5a604051928392604084526011604085015260608401526080602084015260808301906127c6565b34610249576000366003190112610249576020601154604051908152f35b3461024957600036600319011261024957600a54600b54600c54600d54600e54600f54601054604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e090f35b34610249576020806003193601126102495760043560005260019081815260406000209160405191828185549182815201908195600052826000209060005b8181106110615750505083611020910384612026565b60405192818401908285525180915260408401949160005b8281106110455785870386f35b83516001600160a01b0316875295810195928101928401611038565b825484529284019291850191850161100a565b346102495760003660031901126102495761108d612880565b5060e060405161109c81611fab565b600a548152600b546020820152600c546040820152600d546060820152600e546080820152600f5460a082015260105460c0820152610c6460405180926121fe565b3461024957600036600319011261024957602060405160008152f35b346102495760003660031901126102495760206040517f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda8152f35b346102495760003660031901126102495761114e61225a565b60005b60155481101561118e578061116861118992612047565b90549060031b1c6000526014602052604060002060ff1981541690556127b7565b611151565b6015546000601555806111c8575b7f94397e7fcdc0e77956da2ce1dacfa26267328b4ffa17d51ebf0da05a1e8dfe766020604051338152a1005b60156000527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475908101905b818110611200575061119c565b600081556001016111f3565b346102495760003660031901126102495760206040517fd7f50c0c87ac9d4dec94dff0a0f72b5367d528200aa0845bb3ca5ed946d3724a8152f35b346102495761125536612121565b61125d612601565b3360009081527f2c72091e82fe650aca0db18dad828af33de21e77b63033e8280a46f963c50f4660205260409020547f774540d7ea6f3ff938ed6681b7751a82a5d45f277dd39fba599c84c891c2385f9060ff1615610b7d57508151815103610b5f578151906112f9600654600d5490604051946112da8661200b565b600b86526a6d61784c6576657261676560a81b958660208201526126bd565b600d5560005b83518110156113825760025460081c6001600160a01b031690611322818661263e565b5161132d828561263e565b51833b1561024957604460009283604051968794859363644282c760e11b8552600485015260248401525af19182156104135761136e9261137357506127b7565b6112ff565b61137c90611fdc565b85610b05565b6000805160206128b98339815191528484610b5a60405192839260408452600b604085015260608401526080602084015260808301906127c6565b34610249576113cb36612167565b90600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610249576040366003190112610249576004356000526001602052602061142b6024356040600020612094565b905460405160039290921b1c6001600160a01b03168152f35b346102495760003660031901126102495760206040517fc96bc1293f8de3c6565243d1980dd8ffb6bf88a9f964896f883a1acb386eefec8152f35b34610249576000366003190112610249576020601254604051908152f35b34610249576000366003190112610249576114b6612601565b3360009081527ff7c9542c591017a21c74b6f3fab6263c7952fc0aaf9db4c22a2a04ddc7f8674f60205260409020547f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9060ff1615610b7d57611517612601565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610249576020366003190112610249576004356000526014602052602060ff604060002054166040519015158152f35b346102495761158f366121a3565b9190611599612601565b3360009081527f63ca23104548da64cc10f475002f0fdca2f7ef0eaa9d22b5cf2058ac849ddc6c60205260409020547f9501768145874aebf3fee107acfb648c6c69caba38643cf94a0327c0006e2db69060ff1615610b7d575081518151811490811591611723575b50610b5f57815191611645600754600e5490604051956116218761200b565b601087526f61636365707461626c6556616c75657360801b968760208201526126bd565b600e5560005b81518110156116e85760025460081c6001600160a01b03169061166e818461263e565b51611679828661263e565b5192611685838961263e565b5190803b156102495760405163167f438d60e31b8152600481019390935260248301949094526044820152916000908390606490829084905af1918215610413576116d4926116d957506127b7565b61164b565b6116e290611fdc565b86610b05565b6000805160206128b98339815191528285610b5a604051928392604084526010604085015260608401526080602084015260808301906127c6565b90508351141584611602565b346102495760003660031901126102495760025460405160089190911c6001600160a01b03168152602090f35b346102495760003660031901126102495760206040517fde98bf799ad91187f9db6fbbb4f35ce3742bf88cf2723df0a20c4d051674c8b18152f35b3461024957600036600319011261024957602060ff600254166040519015158152f35b34610249576117c836612121565b906117d1612601565b3360009081527fef26873428e76e235f7bcc6bf5bda6d205f5fd9365ecd65d0e3f7693b2735c0e60209081526040909120547f79b1c0e6f43125c252d7ea3bee476c7bea59b692534afee76f0e220ffbdca5a09060ff1615610b7d57508151835103610b5f57829060009060009360125460018060a01b0394600295865481600891821c16985b8551811015611956578461186c828661263e565b51108015611941575b611905578987611885838961263e565b51602460405180948193630239019960e31b835260048301525afa908115610413576000916118d8575b506118c3575b6118be906127b7565b611858565b966118d06118be916127b7565b9790506118b5565b90508781813d83116118fe575b6118ef8183612026565b8101031261024957518b6118af565b503d6118e5565b61191085918561263e565b5161052b6013546040519384936346ac05c760e01b8552600485016040919493926060820195825260208201520152565b5061194c818561263e565b5160135410611875565b50859350878780611a2f575b5060005b86518110156119e057838254841c1690611980818961263e565b5161198b828861263e565b51833b15610249576044600092836040519687948593631954f28760e31b8552600485015260248401525af1918215610413576119cc926119d157506127b7565b611966565b6119da90611fdc565b88610b05565b6000805160206128b9833981519152608087610b5a8a604051938493604085526012604086015271666f726365436c6f7365476170526174696f60701b606086015284015260808301906127c6565b611a699060095460105491604051611a468161200b565b6012815271666f726365436c6f7365476170526174696f60701b8a8201526126bd565b60105586611962565b3461024957600036600319011261024957611a8b61261f565b3360009081527f770bdc288ee5ebd346714a4f85d8d94878b226ea302eab9b7e299fdec2bb0a4160205260409020547f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a9060ff1615610b7d57611aec61261f565b60ff19600254166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b3461024957611b303661218d565b90611b3961225a565b81811015611b7b57807f49331fa7a6bff36fa9ee03260e240f734d38c03e1a3dc05a9694a70e2e40d4f2926040926012558060135582519182526020820152a1005b6044916040519163711c9d6f60e11b835260048301526024820152fd5b3461024957611ba636612167565b336001600160a01b03821603611bbf57610bcc916123b6565b60405163334bd91960e11b8152600490fd5b3461024957611bdf36612167565b816000526000602052611bf9600160406000200154612312565b611c038183612338565b611c0957005b600091825260016020526040909120610bcc916001600160a01b0316906124a3565b3461024957611c3936612121565b611c41612601565b3360009081527f8b02642085e51f9c5ea7e1165bd7eed44d0f34bdb8ea4b43dd029a27282f239160205260409020547fd7f50c0c87ac9d4dec94dff0a0f72b5367d528200aa0845bb3ca5ed946d3724a9060ff1615610b7d57508151815103610b5f57815190611cdc600454600b549060405194611cbe8661200b565b600a86526974726164696e6746656560b01b958660208201526126bd565b600b5560005b8351811015611d565760025460081c6001600160a01b031690611d05818661263e565b51611d10828561263e565b51833b156102495760446000928360405196879485936360a3886160e01b8552600485015260248401525af191821561041357611d519261137357506127b7565b611ce2565b6000805160206128b98339815191528484610b5a60405192839260408452600a604085015260608401526080602084015260808301906127c6565b346102495760203660031901126102495760043560005260006020526020600160406000200154604051908152f35b346102495760203660031901126102495760043560155481101561024957611de9602091612047565b90546040519160031b1c8152f35b346102495760e0366003190112610249577f680e03eac51626498bd9830d073020ad4aee97df015036fcead66d2ea5a4aca560e0604051611e3781611fab565b60043581526020810160243581526040820160443581526060830160643581526080840190608435825260a085019260a435845260c086019460c4358652611e7d61225a565b8651600355516004555160055551600655516007555160085551600955611ea760405180926121fe565ba1005b346102495760003660031901126102495760206040517fabe45d3ffa8e7957cb1f4fe9201a7a90db465109923e4742fbf4914a0b2ce03e8152f35b34610249576000366003190112610249576020601354604051908152f35b346102495760003660031901126102495760206040517f79b1c0e6f43125c252d7ea3bee476c7bea59b692534afee76f0e220ffbdca5a08152f35b34610249576020366003190112610249576004359063ffffffff60e01b821680920361024957602091635a05180f60e01b8114908115611f80575b5015158152f35b637965db0b60e01b811491508115611f9a575b5083611f79565b6301ffc9a760e01b14905083611f93565b60e081019081106001600160401b03821117611fc657604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111611fc657604052565b61012081019081106001600160401b03821117611fc657604052565b604081019081106001600160401b03821117611fc657604052565b90601f801991011681019081106001600160401b03821117611fc657604052565b60155481101561207e5760156000527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750190600090565b634e487b7160e01b600052603260045260246000fd5b805482101561207e5760005260206000200190600090565b6001600160401b038111611fc65760051b60200190565b81601f82011215610249578035916120da836120ac565b926120e86040519485612026565b808452602092838086019260051b820101928311610249578301905b828210612112575050505090565b81358152908301908301612104565b906040600319830112610249576001600160401b03600435818111610249578361214d916004016120c3565b9260243591821161024957612164916004016120c3565b90565b604090600319011261024957600435906024356001600160a01b03811681036102495790565b6040906003190112610249576004359060243590565b6060600319820112610249576001600160401b039160043583811161024957826121cf916004016120c3565b9260243581811161024957836121e7916004016120c3565b9260443591821161024957612164916004016120c3565b60c08091805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b6001600160401b038111611fc657601f01601f191660200190565b3360009081527f637999432676374d4ea036a5e1ac845bfb5900b653d4393f12108092e01503ce60205260409020547f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda9060ff1615610b7d5750565b3360009081527fc172c807c85f5736423f60a4895b3f90982c66070a8169940fdde304b5489f3060205260409020547fc96bc1293f8de3c6565243d1980dd8ffb6bf88a9f964896f883a1acb386eefec9060ff1615610b7d5750565b80600052600060205260406000203360005260205260ff6040600020541615610b7d5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146123b157808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b6123c082826123f1565b91826123cb57505090565b6000918252600160205260409091206123ed916001600160a01b031690612511565b5090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146123b15780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b601554600160401b811015611fc65761248881600161249f9301601555612047565b819391549060031b91821b91600019901b19161790565b9055565b9190600183016000908282528060205260408220541560001461250b57845494600160401b8610156124f757836124e7612488886001604098999a01855584612094565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b906001820190600092818452826020526040842054908115156000146125fa57600019918083018181116125e6578254908482019182116125d25781810361259d575b505050805480156125895782019161256c8383612094565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6125bd6125ad6124889386612094565b90549060031b1c92839286612094565b90558652846020526040862055388080612554565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b60ff6002541661260d57565b60405163d93c066560e01b8152600490fd5b60ff600254161561262c57565b604051638dfc202b60e01b8152600490fd5b805182101561207e5760209160051b010190565b60005b8381106126655750506000910152565b8181015183820152602001612655565b9060209161268e81518092818552858086019101612652565b601f01601f1916010190565b919082018092116126a757565b634e487b7160e01b600052601160045260246000fd5b93929091936011546201518081018091116126a757421015612735575b846126e5848461269a565b116126f6575061216492935061269a565b925083039283116126a7576040516324f7fd3f60e11b815260606004820152928392612726906064850190612675565b91602484015260448301520390fd5b905060c060405161274581611fab565b60009181838093528260208201528260408201528260608201528260808201528260a0820152015280600a5580600b5580600c5580600d5580600e5580600f5580601055426011557f46d28b1cbff17e1d8d604b62a816c7f0dfed976495feb13b06f678090db9054a8180a1906126da565b60001981146126a75760010190565b90815180825260208080930193019160005b8281106127e6575050505090565b8351855293810193928101926001016127d8565b80519061287a60208201519160608101519260808201519360a083015160c084015160e0850151906101008096015192604051988996602088019b8c5261284b81518092602060408c019101612652565b87019560408701526060860152608085015260a084015260c083015260e08201520360e0810184520182612026565b51902090565b6040519061288d82611fab565b8160c06000918281528260208201528260408201528260608201528260808201528260a0820152015256fe444598a1ed15c4fe56936a492d0af645f1b7a4b982f342fa51af3bf1852149fca164736f6c6343000814000a0000000000000000000000008f06459f184553e5d04f07f868720bdacab393950000000000000000000000009bc9ca7e6a8f013f40617c4585508a988db7c1c7000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000470de4df820000