0 txs
1 call
constructor
No constructor.
functions
_checkpointAtId
viewfunction _checkpointAtId(tuple context, uint256 timestamp) view returns (tuple checkpoint)
accounts
viewfunction accounts(address account) view returns (tuple)
asset
viewfunction asset() view returns (address)
checkpoints
viewfunction checkpoints(uint256 id) view returns (tuple)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
factory
viewfunction factory() view returns (address)
name
viewfunction name() view returns (string)
parameter
viewfunction parameter() view returns (tuple)
registrations
viewfunction registrations(uint256 marketId) view returns (tuple)
totalAssets
viewfunction totalAssets() view returns (int256)
totalMarkets
viewfunction totalMarkets() view returns (uint256)
totalShares
viewfunction totalShares() view returns (uint256)
initialize
nonpayablefunction initialize(address asset_, address initialMarket, uint256 initialDeposit, string name_)
rebalance
nonpayablefunction rebalance(address account)
register
nonpayablefunction register(address market)
settle
nonpayablefunction settle(address account)
update
nonpayablefunction update(address account, uint256 depositAssets, uint256 redeemShares, uint256 claimAssets)
updateLeverage
nonpayablefunction updateLeverage(uint256 marketId, uint256 newLeverage)
updateParameter
nonpayablefunction updateParameter(tuple newParameter)
updateWeights
nonpayablefunction updateWeights(uint256[] newWeights)
events
Initialized
event Initialized(uint256 version)
MarketRegistered
event MarketRegistered(uint256 indexed marketId, address market)
MarketUpdated
event MarketUpdated(uint256 indexed marketId, uint256 newWeight, uint256 newLeverage)
ParameterUpdated
event ParameterUpdated((uint256 maxDeposit, uint256 minDeposit) newParameter)
Updated
event Updated(address indexed sender, address indexed account, uint256 version, uint256 depositAssets, uint256 redeemShares, uint256 claimAssets)
errors
AccountStorageInvalidError
error AccountStorageInvalidError()
AccountStorageInvalidError
error AccountStorageInvalidError()
CheckpointStorageInvalidError
error CheckpointStorageInvalidError()
CheckpointStorageInvalidError
error CheckpointStorageInvalidError()
DivisionByZero
error DivisionByZero()
Fixed6OverflowError
error Fixed6OverflowError(uint256 value)
InitializableAlreadyInitializedError
error InitializableAlreadyInitializedError(uint256 version)
InitializableNotInitializingError
error InitializableNotInitializingError()
InitializableZeroVersionError
error InitializableZeroVersionError()
InstanceNotFactoryError
error InstanceNotFactoryError(address sender)
InstanceNotOwnerError
error InstanceNotOwnerError(address sender)
InstancePausedError
error InstancePausedError()
MappingStorageInvalidError
error MappingStorageInvalidError()
RegistrationStorageInvalidError
error RegistrationStorageInvalidError()
RegistrationStorageInvalidError
error RegistrationStorageInvalidError()
StrategyLibInsufficientAssetsError
error StrategyLibInsufficientAssetsError()
StrategyLibInsufficientAssetsError
error StrategyLibInsufficientAssetsError()
StrategyLibInsufficientCollateralError
error StrategyLibInsufficientCollateralError()
StrategyLibInsufficientCollateralError
error StrategyLibInsufficientCollateralError()
UFixed6UnderflowError
error UFixed6UnderflowError(int256 value)
VaultAggregateWeightError
error VaultAggregateWeightError()
VaultCurrentOutOfSyncError
error VaultCurrentOutOfSyncError()
VaultDepositLimitExceededError
error VaultDepositLimitExceededError()
VaultExistingOrderError
error VaultExistingOrderError()
VaultIncorrectAssetError
error VaultIncorrectAssetError()
VaultInsufficientMinimumError
error VaultInsufficientMinimumError()
VaultMarketDoesNotExistError
error VaultMarketDoesNotExistError()
VaultMarketExistsError
error VaultMarketExistsError()
VaultNotMarketError
error VaultNotMarketError()
VaultNotOperatorError
error VaultNotOperatorError()
VaultNotSingleSidedError
error VaultNotSingleSidedError()
VaultParameterStorageInvalidError
error VaultParameterStorageInvalidError()
VaultParameterStorageInvalidError
error VaultParameterStorageInvalidError()
VaultRedemptionLimitExceededError
error VaultRedemptionLimitExceededError()
creation bytecode
0x6080806040523461001657614659908161001b8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806301e1d114146116ee57806306fdde031461160557806307a2d13a146115cc5780631d20c1621461139057806321c28191146112cb57806330f916191461110f57806338d52e0f146110e75780633a98ef39146110cd5780634420e48614610f705780635e5c06e214610ef15780636a256b2914610e385780638162486b14610e1b5780639fec600b14610b88578063a24159d314610a53578063ad4d4e2914610a10578063b8a2425214610982578063c45a01551461094e578063c6e6f59214610903578063d2c3aaf2146102d2578063ea2a5a411461015b5763f4ddb5be14610100575f80fd5b3461015757602036600319011261015757610119611c37565b506004355f526004602052606061013260405f206133e6565b6040805182516001600160a01b03168152602080840151908201529181015190820152f35b5f80fd5b346101575760403660031901126101575760405161017a60408261174f565b600435815260206024358183015260018060a01b03805f80516020614584833981519152541690604051638da5cb5b60e01b81528381600481865afa90811561027a575f9161029d575b50163303610285578160049160405192838092635c975abb60e01b82525afa91821561027a575f92610244575b50506102325761023090610203611e94565b61022b5f61021081611fb6565b61021a8282612352565b61022682808084612576565b613241565b6136c7565b005b604051634b94d2bb60e01b8152600490fd5b90809250813d8311610273575b61025b818361174f565b810103126101575761026c90611b2f565b82806101f1565b503d610251565b6040513d5f823e3d90fd5b604051634d193d1f60e01b8152336004820152602490fd5b90508381813d83116102cb575b6102b4818361174f565b81010312610157576102c590611b3c565b856101c4565b503d6102aa565b34610157576080366003190112610157576004356001600160a01b0381169003610157575f8051602061458483398151915254604051635c975abb60e01b815260643591602090829060049082906001600160a01b03165afa90811561027a575f916108c9575b5061023257610346611e94565b610351600435611fb6565b61035d60043582612352565b610120810151518082525f52600660205261037a60405f20611cfc565b918260e08301526020820180516101008095015110610858575b50604435905f1960016103a78284613fa2565b14610847575b6103bb600191604435613fa2565b14610836575b336004356001600160a01b03161415806107a3575b6107915760016104116103f4836103ef86602435611e87565b611e87565b84602435115f1461078b576024355b848111156107835790613fa2565b036107715783830151604081015115159081610745575b501561070957600261043d5f5b602435613fa2565b146106f757602435151580806106dc575b6106815782151580958196610693575b5061068157610140840151602081519101510361066f576105976105a5916105606102309760606101208901510151155f1461062c575f925b6104af888a818a610120830151602435935190613fde565b6104c7888a818a610140830151602435935190613fde565b60e089015182826104db6024358451611e87565b602084016104ea8d8251611e87565b90528352610617575b610602575b5060015461054b906001600160a01b0316610514602435614024565b90604051916323b872dd60e01b602084015233602484015230604484015260648301526064825261054660848361174f565b614391565b90602435156105fa575b508260243589612576565b6001546001600160a01b0316906105469061057a90614024565b60405163a9059cbb60e01b602082015293849133602484016119a0565b03601f19810184528361174f565b82519160405192835260243560208401526040830152606082015260018060a01b0360043516907ecdda35b21914cc89ca2689f6ada564ebad3ad81f233699e25e44e13ab73f4960803392a360043590613241565b905089610555565b60e00161060f81516137e7565b90528a6104f8565b60c0820161062581516137e7565b90526104f3565b61065f61063c60a08a0151611e3a565b6101208a01516060015190818110156106655761065a905b89611e56565b611e69565b92610497565b5061065a81610654565b60405163392ca54960e21b8152600490fd5b604051633cbefbb160e21b8152600490fd5b90508401516040810151155f146106c057506106b9835b602060c0870151015190613fa2565b158661045e565b6106d7816106d1866106b99461403e565b9061405e565b6106aa565b506106f1602060c08601510151602435613fa2565b1561044e565b60405163a9785d3d60e01b8152600490fd5b600261043d61074060c08601515161073a61072a610725611879565b611e3a565b60806101208a0151015190611e87565b9061388b565b610435565b610755915060605f9101516140b7565b8015908115610766575b5085610428565b60019150148561075f565b60405163a65ac9fb60e01b8152600490fd5b508390613fa2565b84610403565b604051637eb267c760e01b8152600490fd5b505f805160206145848339815191525460405163131bac4760e11b81526001600160a01b0360048035821690830152336024830152909160209183916044918391165afa90811561027a575f916107fc575b50156103d6565b90506020813d60201161082e575b816108176020938361174f565b810103126101575761082890611b2f565b856107f5565b3d915061080a565b6101408301516040015191506103c1565b6101408401516060015191506103ad565b5f9061086484516137e7565b845260e0840151905161012085015161089661088f6040830151926060608082015191015190611e87565b85196141ee565b60608401526040830152858201528160e08201528160c08201528160a08201528160808201528160208201525283610394565b90506020813d6020116108fb575b816108e46020938361174f565b81010312610157576108f590611b2f565b82610339565b3d91506108d7565b34610157576020366003190112610157576020600435610924610725611879565b61092c611b60565b8061093c5750505b604051908152f35b61065a9061094993611e56565b610934565b34610157575f366003190112610157575f80516020614584833981519152546040516001600160a01b039091168152602090f35b346101575760203660031901126101575761099b611bf1565b506004355f5260066020526101206109b560405f20611cfc565b60405190805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008091015190820152f35b34610157575f366003190112610157575f6020604051610a3160408261174f565b8281520152610a4f610a436002613779565b60405191829182611863565b0390f35b34610157576040366003190112610157575f8051602061458483398151915254604051638da5cb5b60e01b815260048035926020926001600160a01b03918216928490829081865afa90811561027a575f91610b53575b50163303610285578160049160405192838092635c975abb60e01b82525afa91821561027a575f92610b1d575b505061023257610ae5611e94565b610af25f61021081611fb6565b600354811015610b0c5761023090602435905f19906132b4565b6040516288cffd60e31b8152600490fd5b90809250813d8311610b4c575b610b34818361174f565b8101031261015757610b4590611b2f565b8280610ad7565b503d610b2a565b90508381813d8311610b81575b610b6a818361174f565b8101031261015757610b7b90611b3c565b85610aaa565b503d610b60565b34610157576080366003190112610157576001600160a01b0360043581811690819003610157576024918235908116810361015757606435926001600160401b039081851161015757366023860112156101575784600401359182116101575736818387010111610157576001947f6fee9688c285c5c5c97d6a1a29adced674e6b2ad0888b8ad2116b58a8b3ea2488681541015610e03578690557f2801b00eb06461cf9fcb9758b5fafd884ff06a86177386f73b6c49f0bf5a5af094868655303b151580610dfc575b610dea57335f805160206145848339815191525586546001600160a01b0319161786555f54610c809061191a565b601f8111610d98575b505f90601f8411600114610d095793835f9460209794610cd2945f805160206145e48339815191529a988893610cfc575b50505081871b9186199060031b1c1916178455613457565b610cf2604051610ce360408261174f565b604435815283868201526136c7565b55604051908152a1005b0101359050898080610cba565b5f8080525f805160206145c483398151915293919290601f1986169060205b828210610d7f5750509460209794610cd2948a98945f805160206145e48339815191529b94845f9a10610d64575b50505050811b018455613457565b891960f88660031b161c199201013516905589808080610d56565b808b8598878395978a0101358155019701930190610d28565b5f80525f805160206145c4833981519152601f850160051c81019160208610610de0575b601f0160051c019087905b828110610dd5575050610c89565b5f8155018790610dc7565b9091508190610dbc565b60405163b9a621e160e01b8152600490fd5b505f610c52565b604051631edb9c6d60e11b8152600481018890528390fd5b34610157575f366003190112610157576020600354604051908152f35b34610157576020366003190112610157576004356001600160a01b0380821682036101575760206004915f80516020614584833981519152541660405192838092635c975abb60e01b82525afa90811561027a575f91610eb7575b506102325761023090610ea4611e94565b610ead81611fb6565b6102268282612352565b90506020813d602011610ee9575b81610ed26020938361174f565b8101031261015757610ee390611b2f565b82610e93565b3d9150610ec5565b34610157576020366003190112610157576004356001600160a01b0381169081900361015757610f1f611bbf565b505f52600560205260c0610f3560405f20611c57565b60a0604051918051835260208101516020840152604081015160408401526060810151606084015260808101516080840152015160a0820152f35b3461015757602080600319360112610157576004356001600160a01b038082169081830361015757805f805160206145848339815191525416604051638da5cb5b60e01b81528581600481855afa801561027a5783915f91611095575b50163303610285578460049160405192838092635c975abb60e01b82525afa90811561027a575f91611060575b5061023257611007611e94565b6110145f61021081611fb6565b600354935f5b85811061102a5761023085613457565b805f5260048252838361103f60405f206133e6565b51161461104e5760010161101a565b60405163499943cd60e01b8152600490fd5b90508481813d831161108e575b611077818361174f565b810103126101575761108890611b2f565b85610ffa565b503d61106d565b809250878092503d83116110c6575b6110ae818361174f565b81010312610157576110c08391611b3c565b87610fcd565b503d6110a4565b34610157575f366003190112610157576020610934611b60565b34610157575f366003190112610157576001546040516001600160a01b039091168152602090f35b3461015757602080600319360112610157576001600160401b0390600435908282116101575736602383011215610157578160040135928311610157576024820191602436918560051b010111610157575f8051602061458483398151915254604051638da5cb5b60e01b81526001600160a01b0391821691908381600481865afa90811561027a575f91611296575b50163303610285578160049160405192838092635c975abb60e01b82525afa91821561027a575f92611260575b5050610232576111da611e94565b6111e75f61021081611fb6565b6003906003548303610b0c576001925f91825b845484101561123957611231869161121f5f19611218888888611b50565b35886132b4565b61122a868686611b50565b3590611e87565b9301926111fa565b611247620f42408792613fa2565b0361124e57005b6040516306dedbb160e51b8152600490fd5b90809250813d831161128f575b611277818361174f565b810103126101575761128890611b2f565b83806111cc565b503d61126d565b90508381813d83116112c4575b6112ad818361174f565b81010312610157576112be90611b3c565b8661119f565b503d6112a3565b34610157576020366003190112610157576004356001600160a01b0380821682036101575760206004915f80516020614584833981519152541660405192838092635c975abb60e01b82525afa90811561027a575f91611356575b506102325761023090611337611e94565b61134081611fb6565b61134a8282612352565b6102265f808084612576565b90506020813d602011611388575b816113716020938361174f565b810103126101575761138290611b2f565b82611326565b3d9150611364565b346101575760031960403682011261015757600435906001600160401b03808311610157576104c08336039283011261015757604051926113d36101608561174f565b80600401358452602490602093828201358587015260448201356040870152606482013584811161015757820193366023860112156101575760048501359461141b86611786565b90611429604051928361174f565b86825287820186606080990283010191368311610157578701905b82821061157f57505050858801526084830135908111610157578201366023820112156101575760048101359061147a82611786565b91611488604051938461174f565b808352858884019160051b830101913683116101575786899101915b83831061156f5750505050608087015260a482013560a0870152604060c3199091011261015757608094839261154061154d936040516114e560408261174f565b60c4820135815260e48201358982015260c085015261150836610104830161179d565b60e085015261151b36610224830161179d565b61010085015261152f366103448301611811565b610120850152610404369101611811565b61014083015235906119bb565b6040519381518552808201519085015260408101516040850152015190820152f35b82358152918101918991016114a4565b888236031261015757604051906115968a8361174f565b8235906001600160a01b038216820361015757828c928c9452828501358382015260408501356040820152815201910190611444565b346101575760203660031901126101575760206004356115ed610725611879565b6115f5611b60565b908161093c575050604051908152f35b34610157575f366003190112610157576040516020907302832b932b73734b0b6102b19102b30bab63a1d160651b602082015260345f925f54916116488361191a565b926001908181169081156116c45750600114611682575b610a4f85611676818903601f19810183528261174f565b60405191829182611708565b90919294505f805260205f205f905b8682106116b1575050505050611676816034610a4f94820101938561165f565b8054868301850152908401908201611691565b9050610a4f96508593506034925061167694915060ff19168284015280151502820101938561165f565b34610157575f366003190112610157576020610934611879565b602080825282518183018190529093925f5b82811061173b57505060409293505f838284010152601f8019910116010190565b81810186015184820160400152850161171a565b601f909101601f19168101906001600160401b0382119082101761177257604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381116117725760051b60200190565b8092916101209182910312610157576117b9604051918261174f565b8092803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e083015261010080910135910152565b91908260c09103126101575760405161182b60c08261174f565b60a080829480358452602081013560208501526040810135604085015260608101356060850152608081013560808501520135910152565b9190916020806040830194805184520151910152565b5f8052600560209081526118995f80516020614604833981519152611c57565b01515f5260066020526118ae60405f20611cfc565b6060810151906118be8151611dda565b915f8382019384129112908015821691151617611906576118e78160206118ec93015190611e03565b611dda565b905f82820392128183128116918313901516176119065790565b634e487b7160e01b5f52601160045260245ffd5b90600182811c92168015611948575b602083101461193457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611929565b6040519061196160808361174f565b5f6060838281528260208201528260408201520152565b805182101561198c5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b039091168152602081019190915260400190565b906119c4611952565b905f90606092606081019260209660208301915b868801518051821015611b23576001600160a01b03906119f9908390611978565b51516040805163066ff5fd60e11b8152926004926080929183918691168180611a258e308a84016119a0565b03915afa938415611b19575f94611abf575b50505087519189810151925f8482019485129112908015821691151617611aac578651918151925f8482019485129112908015821691151617611a99575091899391611a8b6001948e895191015190611e87565b8752875288520190506119d8565b601190634e487b7160e01b5f525260245ffd5b601182634e487b7160e01b5f525260245ffd5b90918093945081813d8311611b12575b611ad9818361174f565b810103126101575781611aef8c9351948561174f565b815184528d8201518e8501528082015190840152015189820152905f8080611a37565b503d611acf565b50513d5f823e3d90fd5b50509550509450505050565b5190811515820361015757565b51906001600160a01b038216820361015757565b919081101561198c5760051b0190565b5f805260056020908152611b805f80516020614604833981519152611c57565b01515f526006602052611bbc611b9860405f20611cfc565b6020611bb36040830151611bad845185613368565b90611e87565b910151906133d9565b90565b60405190611bce60c08361174f565b5f60a0838281528260208201528260408201528260608201528260808201520152565b60405190611c016101208361174f565b5f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b60405190611c4660608361174f565b5f6040838281528260208201520152565b611c5f611bbf565b5060c0604051611c7060e08261174f565b8254600163ffffffff94858316958685528360201c1692836020860152828060401b031916604085015201549160018060401b039182841691826060820152838560401c16938460808301528560801c16948560a0830152861c958691015260405195611cde60c08861174f565b8652602086015260408501526060840152608083015260a082015290565b611d04611bf1565b5060408051611d156101408261174f565b825460018060401b03808216918284528181861c16918260208601526001818360801c1692838888015260c01d60070b978860608801520154968760070b9182608088015288881c16928360a088015263ffffffff97888a60801c16958660c08a0152898b60a01c16998a60e08b01528b60c01c169761010099898b820152610120809d63ffffffff60e01b16910152611db183519c8d61174f565b8b5260208b01528901526060880152608087015260a086015260c085015260e084015282015290565b6001600160ff1b038111611deb5790565b6024906040519063eecaa25d60e01b82526004820152fd5b611bbc91611e1560e0830151836137f5565b916040810151155f14611e28575061388b565b6106d1611e35928261403e565b61388b565b611e445f826140b7565b611e4d57505f90565b611bbc906138ac565b8181029291811591840414171561190657565b8115611e73570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161190657565b5f905b600354821015611f1a57815f526004918260205260409260018060a01b03611ec0855f206133e6565b511690813b15610157575f916024839287519485938492636a256b2960e01b845230908401525af18015611f10576001939450611f00575b500190611e97565b5f611f0a9161174f565b5f611ef8565b84513d5f823e3d90fd5b9050565b9081602091031261015757516001600160a01b03811681036101575790565b919082606091031261015757604051611f5760608261174f565b6040611f73818395805185526020810151602086015201611b2f565b910152565b9081608091031261015757606060405191611f9460808461174f565b8051835260208101516020840152604081015160408401520151606082015290565b9060405191611fc76101608461174f565b5f83525f60208401525f6040840152606080840152606060808401525f60a084015260c0830192604051611ffc60408261174f565b5f81525f6020820152845261200f611bf1565b60e0820152610100810191612022611bf1565b835261202c611bbf565b61012083015261203a611bbf565b610140830152819461204c6002613779565b90525f1960408301819052602083015260035461206881611786565b612075604051918261174f565b818152601f1961208483611786565b015f5b81811061233b575050606084015261209e81611786565b6120ab604051918261174f565b818152601f196120ba83611786565b0136602083013760808401525f5b8181106121395750602092610120929091506001600160a01b03168061211b575b505f8052600583526120fd60405f20611c57565b918291015201515f52600660205261211760405f20611cfc565b9052565b5f526005835261212d60405f20611c57565b6101408201525f6120e9565b805f52600460205261214d60405f206133e6565b612167826060870151836121618383611978565b52611978565b5080516040516307dc0d1d60e41b815290602090829060049082906001600160a01b03165afa90811561027a576004916080915f9161230c575b50604051631006976960e11b815292839182906001600160a01b03165afa90811561027a575f905f926122cb575b5060408701519051808210156122c457505b604087015260208601515f1981036122a3575060249160809160208801525b51604051635b4b969560e01b815230600482015292839182906001600160a01b03165afa801561027a576040915f91612274575b5001908151612247826080880151611978565b5260a08501519151915f83820193841291129080158216911516176119065760019160a0860152016120c8565b612296915060803d60801161229c575b61228e818361174f565b810190611f78565b5f612234565b503d612284565b036122b2576080602491612200565b604051632856c2eb60e11b8152600490fd5b90506121e1565b91505060803d608011612305575b6122e3818361174f565b8101608082820312610157576122fb60609183611f3d565b910151905f6121cf565b503d6122d9565b61232e915060203d602011612334575b612326818361174f565b810190611f1e565b5f6121a1565b503d61231c565b602090612346611c37565b82828601015201612087565b91909161235d611bf1565b925b610120820180519081516020809301518091119081612540575b5015612453576101009061239082880151866119bb565b60609081890180519083830151915f8382019384129112908015821691151617611906575284815191608092838c0152015160a090818b01528351958087019384519560018701809711611906578c9861244b978a9761243b6006976124316124249a8c8a998151978b830151975288016124108151611bad8985611e03565b9160409e8f8b0191611bad8b845192613368565b90525286019485516133d9565b94019182516133d9565b9052525101515f52525f20613966565b83015261235f565b50929392506001600160a01b03161561253c576101408101908151602081519101518111918261250f575b5050612488575050565b518051916124f76124ef608084019384519060a0810194855197602083015260608201906124e560406124d68451611bad8d6124c56001886137f5565b9085880151155f146124fc5761388b565b940191611bad868451926140c8565b90525284516133d9565b9382516133d9565b905252565b612509611e35918961403e565b8861405e565b909350604091500151915f52600660205261252c60405f20611cfc565b9161010083015111155f8061247e565b5050565b96505060409586850151966001820180921161190657612567915f52600684525f20611cfc565b9561010087015111155f612379565b939291926125885f60a08701516140b7565b1561323a57606085015194604051936125a260808661174f565b5f85525f60208601525f604086015260608086015286516125c281611786565b906125d0604051928361174f565b8082526125df601f1991611786565b015f5b81811061322357505060608601525f5b8751811015612e11576126058189611978565b516004612610613bcb565b828152825160405163ad4d4e2960e01b8152919391926101409184919082906001600160a01b03165afa801561027a575f90612d5f575b60208401528051604051634549a62960e01b815292506102e090839060049082906001600160a01b03165afa801561027a575f90612c13575b602492506040840152608060018060a01b0382511660405193848092635b4b969560e01b82523060048301525afa801561027a576004925f91612bf4575b50606084015280516040516307dc0d1d60e41b81529260209184919082906001600160a01b03165afa91821561027a576004926060915f91612bd5575b506040516352bfe78960e01b815293849182906001600160a01b03165afa91821561027a575f92612b9a575b50805160405163055f575160e41b815230600482015290608090829060249082906001600160a01b03165afa90811561027a575f91612b7b575b508060a0850152612770611952565b5080519060208101519060606040820151910151916040519361279460808661174f565b84526020840152604083015260608201526080840152602461018060018060a01b038351166040519283809262dc326d60e71b82523060048301525afa801561027a5760049361288b925f92612b55575b506020906127f7836080890151614218565b61284861282b61280a60a08a0151614343565b611bad612820606088015160a089015190611e87565b60e088015190611e87565b6040890151805184908015612b4a5761012090925b0151926144a0565b610100880152015160e086015261288561286560a0870151614343565b9161010061287c608083015160c084015190611e87565b91015190611e87565b906133d9565b610120840152805160405163e20ccec360e01b8152926101809184919082906001600160a01b03165afa90811561027a576004925f92612b14575b50516040516309218e9160e01b81529260809184919082906001600160a01b03165afa801561027a57612906925f91612af5575b508060c0850152614218565b60206080820151015160c082015191602083015191612935606061292d6040870151611dda565b950151611dda565b905f82128583810312811690868481031390151617611906576129c49486946129819361296c925f82820312612aec57039061388b565b61012084015180821015612ae457509061388b565b6101408201526129ae602060808301510151611bad608060408501510151602060c086015101519061388b565b6101608201526060890151906121618383611978565b506129e486516101006129db8460608b0151611978565b51015190611e87565b8652602086015190604060606129fd83828b0151611978565b510151015180808401125f84129080158216911516176119065760019201602088015260408701516040612a31838c611978565b510151158015612ace575b15612a5f575f5b80821115612a5857505b6040880152016125f2565b9050612a4d565b612ac28a6020612ab985612ab38d61065a60e0612a93856060610140612a888383890151611978565b510151950151611978565b5101515f8112612ac7575b6040612aaa868a611978565b51015192611e56565b93611978565b510151906141af565b612a43565b5f03612a9e565b506020612adb838c611978565b51015115612a3c565b90509061388b565b035f039061388b565b612b0e915060803d60801161229c5761228e818361174f565b5f6128fa565b6080919250612b3c906101803d61018011612b43575b612b34818361174f565b81019061411b565b91906128c6565b503d612b2a565b506101205f92612840565b6020919250612b74906101803d61018011612b4357612b34818361174f565b91906127e5565b612b94915060803d60801161229c5761228e818361174f565b5f612761565b90915060603d606011612bce575b612bb2818361174f565b810160608282031261015757612bc791611f3d565b905f612727565b503d612ba8565b612bee915060203d60201161233457612326818361174f565b5f6126fb565b612c0d915060803d60801161229c5761228e818361174f565b5f6126be565b506102e03d6102e011612d58575b612c2b818461174f565b8201828103906102e082126101575760405191612c4a6101a08461174f565b8451835260208501516020840152612c6582604087016140dd565b604084015260c094606060bf198301126101575760405190612c8860608361174f565b868101518252606060e09384830151602085015261010093848401516040820152828801526101209485840151608089015261014084015160a0890152610160998a85015190890152612ce0610180978886016140dd565b908801526101ff19011261015757602496612d4f936102c09360405190612d0860608361174f565b610200850151825261022085015160208301526102408501516040830152880152610260830151908701526102808201516101408701526102a08201519086015201611b2f565b90820152612680565b503d612c21565b50610140823d61014011612e09575b81612d7c610140938361174f565b8101031261015757604051600492612d966101408361174f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0808201519083015260e08082015190830152610100612dee818301611b2f565b90830152612e00610120809201611b2f565b90820152612647565b3d9150612d6e565b509194839650612ead90611e35612e9f620f4240612e8e86612e886040612e82610120612e70612eb49c9f9e61073a612e628d61073a612e5460a08c0151611e3a565b916060888d01510151611e87565b916080858a015101516133d9565b94015160a08101519283910151611e87565b906141ce565b90611e56565b0460606101208a0151015190611e87565b986103ef6020880151611e3a565b958661388b565b91612ec0815187613fa2565b1561321157612ed3604082015184613fa2565b156131ff5760608101515193612ee885611786565b94612ef6604051968761174f565b808652612f05601f1991611786565b015f5b8181106131da5750505f925f935b606084015180518610156130c55785612f2e91611978565b5184519160405190612f4160408361174f565b5f825260208201915f8352612f7b8d620f4240612f74612f68610100998a8a0151946133d9565b60208951015190611e56565b0490611e87565b92620f4240612f8f6020875101518d611e56565b0462124f8080860290868204148615171561190657620f42409004808210156130bd5750945b85612fbf86611dda565b96604060608401510151975f8982039912818a128116918a1390151617611906576001986130849886526130176040850151620f424061301061012083015192602060408a51015191015190611e56565b04906141ce565b906020850151015115918215926130ab575b50506130a4575b6130556101609161065a60408551015160e08601515f8112155f1461309c5792611e56565b610140830151808211156130945750915b01518082101561308c5750905b5261307e898c611978565b52611e87565b940193612f16565b905090613073565b905091613066565b5f0392611e56565b505f613030565b6130b59250613fa2565b155f80613029565b905094612fb5565b5092909793506060919450015151613197575b50505f5b60608201515181101561313657806131015f6130fa60019487611978565b51516140b7565b1561310d575b016130dc565b6131318661311f836060870151611978565b5161312a8488611978565b5190613cfe565b613107565b505f5b60608201515181101561319057806131575f6130fa60019487611978565b60028114908115613186575b5061316f575b01613139565b6131818661311f836060870151611978565b613169565b839150145f613163565b5050509050565b6118e76131b0916131a85f87611978565b5151936133d9565b905f8282019283129112908015821691151617611906576131d15f84611978565b51525f806130d8565b6020906040516131eb60408261174f565b5f81525f8382015282828a01015201612f08565b60405163fd9cbca560e01b8152600490fd5b604051634bb1a89160e11b8152600490fd5b60209061322e613bcb565b828286010152016125e2565b9350505050565b613292916001600160a01b031680613294575b505f8052600560205261012081015161327a905f80516020614604833981519152613d77565b80515f52600660205260e060405f2091015190613966565b565b5f5260056020526132ae60405f2061014083015190613d77565b5f613254565b91907f19de27a5967d3c5ffdfa85f8f33ed63fcae289e86abc970d013e0ae2bc8bb27f91835f5260046020526040916132ee835f206133e6565b915f199160016132fe8483613fa2565b0361335c5750600161331d6020850151935b6020860194855283613fa2565b03613352575061334283830151925b848101938452865f526004602052845f20613f04565b51905182519182526020820152a2565b613342909261332c565b61331d60019193613310565b6040810151156133d55761338060c0820151826137f5565b9061338f5f60608301516140b7565b80159081156133ca575b50156133a95750611bbc9161388b565b9061073a906133c46133be611bbc9585613fbe565b8461405e565b92613fbe565b60019150145f613399565b5090565b9190820391821161190657565b6133ee611c37565b50604051906133fe60808361174f565b5460018060a01b0381169182815263ffffffff906060828460a01c16928360208401528460c01c169384604084015263ffffffff60e01b169101526040519261344860608561174f565b83526020830152604082015290565b5f8051602061458483398151915254604080516306ae709560e01b815260209391926004926001600160a01b0391869084908690829086165afa92831561363e579086915f9461368d575b509082602481938851948593849263032bb44360e01b84521697888a840152165afa90811561363e575f91613658575b5015613648578351637e062a3560e11b815285818581865afa90811561363e575f91613609575b50816001541691829116036135f957845f91604486518094819363095ea7b360e01b83528789840152811960248401525af18015611f10576135a8575b50905f805160206145a4833981519152613292945f949360035494859461355c866137e7565b600355858852835261358a81882082519061357860608361174f565b84825289868301528984830152613f04565b51908152a2801582146135a157620f4240906132b4565b81906132b4565b848181959493953d83116135f2575b6135c1818361174f565b8101031261015757613292945f946135e65f805160206145a483398151915293611b2f565b50929394509450613536565b503d6135b7565b835163addc4c0d60e01b81528390fd5b90508581813d8311613637575b613620818361174f565b810103126101575761363190611b3c565b5f6134f9565b503d613616565b85513d5f823e3d90fd5b8351637c04a01960e01b81528390fd5b90508581813d8311613686575b61366f818361174f565b810103126101575761368090611b2f565b5f6134d2565b503d613665565b8281939295503d83116136c0575b6136a5818361174f565b810103126101575751818116810361015757918590826134a2565b503d61369b565b60018060401b0360026136db828451613fa2565b1461376757602082019160026136f2838551613fa2565b14613767577f6d16bacecc275c7c47f1a3dd996ba3c9c27a560e1279b822b6ad4ca2cf2dbafc92825f60406137629585511693519281519061373560608361174f565b858252841660208201520152604090811b600160401b600160801b03169091176002555191829182611863565b0390a1565b604051630f9f8b1960e01b8152600490fd5b6040905f6020835161378b858261174f565b828152015281519061379e60608361174f565b546001600160401b0380821680845282851c909116602084018190526001600160801b0319909216928401929092528251929091906137dd908461174f565b8252602082015290565b5f1981146119065760010190565b9061380960c083015160e084015190611e87565b91620f42409081840293808504831490151715611906578361382d57505050505f90565b60a00151918181029181830414901517156119065761384b91611e56565b90816138575750505f90565b5f1982019182116119065761386b91611e69565b6001810180911115611bbc57634e487b7160e01b5f52601160045260245ffd5b9060026138988383613fa2565b036138a35750505f90565b611bbc916133d9565b5f81126138b65790565b6024906040519063b02ef08760e01b82526004820152fd5b8054600160401b600160801b03191660409290921b600160401b600160801b0316919091179055565b8054600160801b600160c01b03191660809290921b600160801b600160c01b0316919091179055565b805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b60028061397a60018060401b038551613fa2565b14613bb95760208301518190613998906001600160401b0390613fa2565b14613bb957604083015181906139b6906001600160401b0390613fa2565b14613bb957600180603f1b03816139d18260608701516140b7565b14613bb957606084015160016001603f1b031991906139f19083906140b7565b15613bb957613a05839160808701516140b7565b14613bb957613a189060808501516140b7565b15613bb95760a0830151613a34906001600160401b0390613fa2565b14613bb95763ffffffff60c083015111613bb95763ffffffff60e083015111613bb95763ffffffff61010083015111613bb957815160208301516040848101516060860151608087015160a088015160c08901516101008a015160e0909a015195516001600160401b039889169a63ffffffff9788169a971698919792821696939593949382169290911690613acc6101408261174f565b8a81528160208201528260408201528360070b60608201528560070b60808201528660a082015263ffffffff881660c08201528860e082015289610100820152610120015f9052600160401b6001900319998a855416178455613b2f90846138ce565b613b3990836138f7565b81546001600160c01b031660c09190911b6001600160c01b03191617815560010180546001600160401b0390921691909616178555613b7890856138ce565b835463ffffffff60801b191660809190911b63ffffffff60801b16178355613ba09083613920565b613baa9082613943565b80546001600160e01b03169055565b604051635d4288b560e11b8152600490fd5b6040905f825161018090613bdf828261174f565b828195613bea611c37565b83528181518161014093613bfe858461174f565b81835281602084015281818401528160608401528160808401528160a08401528160c08401528160e08401526101009082828501526101209383858201526020890152805190613c506101a08361174f565b838252836020830152613c61611952565b81830152613c6d611c37565b60608301528360808301528360a08301528360c0830152613c8c611952565b60e0830152613c99611c37565b8383015283858301528387830152836101609a818c850152830152880152613cbf611952565b6060880152613ccc611952565b6080880152613cd9611952565b60a0880152613ce6611952565b60c08801528160e08801528601528401528201520152565b516001600160a01b03169115613d6f576020810151905b51823b156101575760c45f9283604051958694859363123dd9c560e31b8552306004860152602485015282604485015282606485015260848401528160a48401525af1801561027a57613d655750565b5f6132929161174f565b5f1990613d15565b9063ffffffff9081815111613ef2576020810182815111613ef2576040928383019460018060401b03926002613dae858951613fa2565b14613ee15760608501926002613dc5868651613fa2565b14613ed05760808601946002613ddc828851613fa2565b14613ebf5760a08701966002613df3838a51613fa2565b14613eae578180848193511695519b5116965116965116965197805192613e1b60e08561174f565b8484528a166020808501919091525f91840191909152606083018690526080830187905260a0830188905290881660c0909201919091529690961b63ffffffff60201b169095178555600190940180546001600160401b0319169094178455613e8490846138ce565b613e8e90836138f7565b81546001600160c01b031660c09190911b6001600160c01b031916179055565b885163b8a0949960e01b8152600490fd5b875163b8a0949960e01b8152600490fd5b865163b8a0949960e01b8152600490fd5b855163b8a0949960e01b8152600490fd5b60405163b8a0949960e01b8152600490fd5b906020810163ffffffff916002613f1c848451613fa2565b14613f9057604081016002613f32858351613fa2565b14613f905783613baa94613f8a9360018060a01b03905116945116915116925f6060604051613f6260808261174f565b8381526020810185905260408101879052015285546001600160a01b03191617855584613920565b82613943565b6040516349781e4360e11b8152600490fd5b818111613fb75710613fb357600190565b5f90565b5050600290565b9061065a611bbc92613fd860606040830151920151611e3a565b92611e56565b949291908552613ff3606086019182516133d9565b91614003604087019182516133d9565b9052526124f760a061401a60808601948551611e87565b9401918251611e87565b64e8d4a51000908181029181830414901517156119065790565b9061065a611bbc9260406140556060830151611e3a565b91015192611e56565b6140718151611bad60208401518461403e565b90608061407d83611dda565b910151905f8282039212818312811691831390151617611906576140a090611e3a565b816140aa57505090565b61065a90611bbc93611e56565b818113613fb75712613fb357600190565b6040810151156133d5576133806001826137f5565b9190826080910312610157576040516140f760808261174f565b60608082948051845260208101516020850152604081015160408501520151910152565b8091610180928391031261015757614136604051928361174f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201519083015261012080820151908301526101408082015190830152610160809101519082015290565b90620f42409182810292818404149015171561190657611bbc91611e69565b90806141e557506141e057620f424090565b5f1990565b611bbc916141af565b5f811361420e575f1361420057505f90565b61420990611dda565b5f0390565b50611bbc90611dda565b81518152602081019061422b8251611dda565b6142386060850151611dda565b906142466080860151611dda565b915f8382039312818412811691841390151617611906575f82820192831291129080158216911516176119065761427c906138ac565b92604082019061428c8251611dda565b61429960a0830151611dda565b906142a760c0840151611dda565b915f8382039312818412811691841390151617611906575f8282019283129112908015821691151617611906576142df6060916138ac565b9301906142ec8251611dda565b6143076101006142ff60e0850151611dda565b930151611dda565b915f8382039312818412811691841390151617611906575f82820192831291129080158216911516176119065761433d906138ac565b90525252565b6020604082015160608301518082115f1461436e5750915b015180821115614369575090565b905090565b90509161435b565b6001600160401b03811161177257601f01601f191660200190565b602091614417916001600160a01b03165f806143ac86614376565b936143ba604051958661174f565b8685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af13d15614498573d916143fc83614376565b9261440a604051948561174f565b83523d5f8785013e6144ee565b80518061442357505050565b8183918101031261015757816144399101611b2f565b156144415750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6060916144ee565b9182156144e65760206144d09201515f8112155f146144de57925b6144ca620f4240948592611e56565b04611e56565b049080821115614369575090565b5f03926144bb565b505050505f90565b919290156145505750815115614502575090565b3b1561450b5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145635750805190602001fd5b60405162461bcd60e51b815290819061457f9060048301611708565b0390fdfe0aec74a1754fb10877b53c31a29be82096082042eb1fb374ec96fac88c0e621b07796b317344e6f18fa32ed89b6074ad66549cee7fb7b8c3e9f1c42c496f1c5c290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563be9b076dc5b65990cca9dd9d7366682482e7817a6f6bc7f4faf4dc32af497f3205b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bca2646970667358221220b18a1137ba60586d88c9f7459a02c10ed5e0977af9236f00af706ba91b3ca52d64736f6c63430008180033