0 txs
10.7k calls
constructor
constructor(address _vault, (string name, string details, address accessManager, address configurationManager, address asset, uint256 depositCap, uint256 maxRebalanceOutflow, uint256 maxRebalanceInflow, bool requiresKeeperData, uint256 maxDepositPercentageOfTVL) _params)
functions
ADMIRALS_QUARTERS_ROLE
viewfunction ADMIRALS_QUARTERS_ROLE() view returns (bytes32)
asset
viewfunction asset() view returns (address)
commander
viewfunction commander() view returns (address)
config
viewfunction config() view returns (address commander, address raft, address asset, uint256 depositCap, uint256 maxRebalanceOutflow, uint256 maxRebalanceInflow, string name, string details, bool requiresKeeperData, uint256 maxDepositPercentageOfTVL)
configurationManager
viewfunction configurationManager() view returns (address)
DECAY_CONTROLLER_ROLE
viewfunction DECAY_CONTROLLER_ROLE() view returns (bytes32)
depositCap
viewfunction depositCap() view returns (uint256)
details
viewfunction details() view returns (string)
fleetCommanderRewardsManagerFactory
viewfunction fleetCommanderRewardsManagerFactory() view returns (address)
generateRole
purefunction generateRole(uint8 roleName, address roleTargetContract) pure returns (bytes32)
getConfig
viewfunction getConfig() view returns (tuple)
GOVERNOR_ROLE
viewfunction GOVERNOR_ROLE() view returns (bytes32)
GUARDIAN_ROLE
viewfunction GUARDIAN_ROLE() view returns (bytes32)
harborCommand
viewfunction harborCommand() view returns (address)
hasAdmiralsQuartersRole
viewfunction hasAdmiralsQuartersRole(address account) view returns (bool)
maxDepositPercentageOfTVL
viewfunction maxDepositPercentageOfTVL() view returns (uint256)
maxRebalanceInflow
viewfunction maxRebalanceInflow() view returns (uint256)
maxRebalanceOutflow
viewfunction maxRebalanceOutflow() view returns (uint256)
name
viewfunction name() view returns (string)
raft
viewfunction raft() view returns (address)
requiresKeeperData
viewfunction requiresKeeperData() view returns (bool)
SUPER_KEEPER_ROLE
viewfunction SUPER_KEEPER_ROLE() view returns (bytes32)
tipJar
viewfunction tipJar() view returns (address)
totalAssets
viewfunction totalAssets() view returns (uint256 assets)
treasury
viewfunction treasury() view returns (address)
vault
viewfunction vault() view returns (address)
withdrawableTotalAssets
viewfunction withdrawableTotalAssets() view returns (uint256)
board
nonpayablefunction board(uint256 amount, bytes boardData)
disembark
nonpayablefunction disembark(uint256 amount, bytes disembarkData)
harvest
nonpayablefunction harvest(bytes additionalData) returns (address[] rewardTokens, uint256[] rewardAmounts)
move
nonpayablefunction move(uint256 amount, address receiverArk, bytes boardData, bytes disembarkData)
registerFleetCommander
nonpayablefunction registerFleetCommander()
setDepositCap
nonpayablefunction setDepositCap(uint256 newDepositCap)
setMaxDepositPercentageOfTVL
nonpayablefunction setMaxDepositPercentageOfTVL(uint256 newMaxDepositPercentageOfTVL)
setMaxRebalanceInflow
nonpayablefunction setMaxRebalanceInflow(uint256 newMaxRebalanceInflow)
setMaxRebalanceOutflow
nonpayablefunction setMaxRebalanceOutflow(uint256 newMaxRebalanceOutflow)
sweep
nonpayablefunction sweep(address[] tokens) returns (address[] sweptTokens, uint256[] sweptAmounts)
unregisterFleetCommander
nonpayablefunction unregisterFleetCommander()
events
ArkHarvested
event ArkHarvested(address[] indexed rewardTokens, uint256[] indexed rewardAmounts)
ArkPoked
event ArkPoked(uint256 currentPrice, uint256 timestamp)
ArkSwept
event ArkSwept(address[] indexed sweptTokens, uint256[] indexed sweptAmounts)
Boarded
event Boarded(address indexed commander, address token, uint256 amount)
DepositCapUpdated
event DepositCapUpdated(uint256 newCap)
Disembarked
event Disembarked(address indexed commander, address token, uint256 amount)
FleetCommanderRegistered
event FleetCommanderRegistered(address commander)
FleetCommanderUnregistered
event FleetCommanderUnregistered(address commander)
MaxDepositPercentageOfTVLUpdated
event MaxDepositPercentageOfTVLUpdated(uint256 newMaxDepositPercentageOfTVL)
MaxRebalanceInflowUpdated
event MaxRebalanceInflowUpdated(uint256 newMaxInflow)
MaxRebalanceOutflowUpdated
event MaxRebalanceOutflowUpdated(uint256 newMaxOutflow)
Moved
event Moved(address indexed from, address indexed to, address token, uint256 amount)
RaftUpdated
event RaftUpdated(address newRaft)
errors
CallerIsNotAdmin
error CallerIsNotAdmin(address caller)
CallerIsNotAuthorizedToBoard
error CallerIsNotAuthorizedToBoard(address caller)
CallerIsNotCommander
error CallerIsNotCommander(address caller)
CallerIsNotContractSpecificRole
error CallerIsNotContractSpecificRole(address caller, bytes32 role)
CallerIsNotCurator
error CallerIsNotCurator(address caller)
CallerIsNotDecayController
error CallerIsNotDecayController(address caller)
CallerIsNotFoundation
error CallerIsNotFoundation(address caller)
CallerIsNotGovernor
error CallerIsNotGovernor(address caller)
CallerIsNotGuardian
error CallerIsNotGuardian(address caller)
CallerIsNotGuardianOrGovernor
error CallerIsNotGuardianOrGovernor(address caller)
CallerIsNotKeeper
error CallerIsNotKeeper(address caller)
CallerIsNotRaft
error CallerIsNotRaft(address caller)
CallerIsNotRaftOrCommander
error CallerIsNotRaftOrCommander(address caller)
CallerIsNotSuperKeeper
error CallerIsNotSuperKeeper(address caller)
CannotAddCommanderToArkWithCommander
error CannotAddCommanderToArkWithCommander()
CannotDeployArkWithEmptyName
error CannotDeployArkWithEmptyName()
CannotDeployArkWithoutConfigurationManager
error CannotDeployArkWithoutConfigurationManager()
CannotDeployArkWithoutRaft
error CannotDeployArkWithoutRaft()
CannotDeployArkWithoutToken
error CannotDeployArkWithoutToken()
CannotRemoveCommanderFromArkWithAssets
error CannotRemoveCommanderFromArkWithAssets()
CannotUseKeeperDataWhenNotRequired
error CannotUseKeeperDataWhenNotRequired()
ConfigurationManagerZeroAddress
error ConfigurationManagerZeroAddress()
DirectGrantIsDisabled
error DirectGrantIsDisabled(address caller)
DirectRevokeIsDisabled
error DirectRevokeIsDisabled(address caller)
ERC4626AssetMismatch
error ERC4626AssetMismatch()
FleetCommanderAlreadyRegistered
error FleetCommanderAlreadyRegistered()
FleetCommanderNotRegistered
error FleetCommanderNotRegistered()
InvalidAccessManagerAddress
error InvalidAccessManagerAddress(address invalidAddress)
InvalidBoardData
error InvalidBoardData()
InvalidDisembarkData
error InvalidDisembarkData()
InvalidVaultAddress
error InvalidVaultAddress()
KeeperDataRequired
error KeeperDataRequired()
MaxDepositPercentageOfTVLTooHigh
error MaxDepositPercentageOfTVLTooHigh()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60e0806040523461050457612b93803803809161001c82856107dc565b833981019060408183031261050457610034816107ff565b602082015190916001600160401b0382116105045701610140818403126105045760405192610062846107c0565b81516001600160401b038111610504578161007e918401610813565b84526020820151906001600160401b0382116105045761009f918301610813565b90602084019182526100b3604082016107ff565b918260408601526100c6606083016107ff565b948560608201526100d9608084016107ff565b936080820194855260a08401519460a0830195865260c08501519060c0840191825260e08601519260e085019384526101206101186101008901610868565b61010087019081529701516101208601908152996001600160a01b03908116911680156107ad576040516301ffc9a760e01b815263261c910560e21b6004820152602081602481855afa908115610510575f91610773575b50156107615760805280156107525760a05280516001600160a01b0316156107435783515115610734576001600160a01b036101aa610875565b16156107255768056bc75e2d6310000089511161071657516001600160a01b03166101d3610875565b9651915192519351945195511515985196610120604051916101f4836107c0565b5f8084526001600160a01b03919091166020840181905260408401859052606084018690526080840187905260a0840188905260c0840189905260e08401998a5261010084019c8d529190920198895281546001600160a01b031990811690925560018054831690911790556002805490911690911790556003556004556005558051906001600160401b0382116106195760065490600182811c9216801561070c575b60208310146105fb5781601f84931161069e575b50602090601f8311600114610638575f9261062d575b50508160011b915f199060031b1c1916176006555b5180519093906001600160401b03811161061957600754600181811c9116801561060f575b60208210146105fb57601f8111610598575b50602094601f8211600114610535579481929394955f9261052a575b50508160011b915f199060031b1c1916176007555b51151560ff8019600854169116176008555160095560018060a01b0316801561051b5760c08190526040516338d52e0f60e01b8152602081600481855afa908115610510575f916104d2575b506002546001600160a01b0390811691168190036104c3576040519060205f81840163095ea7b360e01b815285602486015281196044860152604485526103d36064866107dc565b84519082855af15f513d826104a7575b505015610462575b604051612258908161093b82396080518181816103890152610b07015260a05181818161022d015281816105d601528181610c54015281816113b00152818161143e0152611dbe015260c0518181816101d5015281816108270152818161167d015281816118a1015281816119970152611f4d0152f35b61049a61049f936040519063095ea7b360e01b602083015260248201525f6044820152604481526104946064826107dc565b826108e2565b6108e2565b5f80806103eb565b9091506104bb5750803b15155b5f806103e3565b6001146104b4565b632df548ff60e11b5f5260045ffd5b90506020813d602011610508575b816104ed602093836107dc565b81010312610504576104fe906107ff565b5f61038b565b5f80fd5b3d91506104e0565b6040513d5f823e3d90fd5b630306120160e01b5f5260045ffd5b015190505f8061032a565b601f1982169560075f52805f20915f5b88811061058057508360019596979810610568575b505050811b0160075561033f565b01515f1960f88460031b161c191690555f808061055a565b91926020600181928685015181550194019201610545565b60075f527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f830160051c810191602084106105f1575b601f0160051c01905b8181106105e6575061030e565b5f81556001016105d9565b90915081906105d0565b634e487b7160e01b5f52602260045260245ffd5b90607f16906102fc565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102c2565b60065f9081528281209350601f198516905b818110610686575090846001959493921061066e575b505050811b016006556102d7565b01515f1960f88460031b161c191690555f8080610660565b9293602060018192878601518155019501930161064a565b60065f529091507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c81019160208510610702575b90601f859493920160051c01905b8181106106f457506102ac565b5f81558493506001016106e7565b90915081906106d9565b91607f1691610298565b634ef9dfe360e01b5f5260045ffd5b633a4f9cdb60e21b5f5260045ffd5b63268c072960e01b5f5260045ffd5b637ff57ef160e11b5f5260045ffd5b63f1634df960e01b5f5260045ffd5b6347bd7c1d60e01b5f5260045260245ffd5b90506020813d6020116107a5575b8161078e602093836107dc565b810103126105045761079f90610868565b5f610170565b3d9150610781565b6347bd7c1d60e01b5f525f60045260245ffd5b61014081019081106001600160401b0382111761061957604052565b601f909101601f19168101906001600160401b0382119082101761061957604052565b51906001600160a01b038216820361050457565b81601f82011215610504578051906001600160401b0382116106195760405192610847601f8401601f1916602001856107dc565b8284526020838301011161050457815f9260208093018386015e8301015290565b5190811515820361050457565b60a051604051628bec5760e51b815290602090829060049082906001600160a01b03165afa908115610510575f916108ab575090565b90506020813d6020116108da575b816108c6602093836107dc565b81010312610504576108d7906107ff565b90565b3d91506108b9565b905f602091828151910182855af115610510575f513d61093157506001600160a01b0381163b155b6109115750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b6001141561090a56fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301e1d114146119755750806306fdde031461195a578063117d8ae01461192e57806313c408f81461183157806324ea54f4146117f75780632db6d399146115bd578063303dbaf31461159b5780633194549e1461157e578063372709361461155757806338d52e0f1461152f5780634fc7fac3146114b9578063565974d31461148a5780635b0f83f31461141957806361d027b31461138b57806361f5cd8b1461132157806366e943f1146112e757806369b3054b14611286578063780469bb14610d5157806379502c5514610ca05780637aaceb9514610c2e5780638665120314610bd55780638a8b997614610a9e57806392f5e83214610a32578063a89f38a3146109f7578063ad5a356f146109d9578063bdcdd882146109bb578063c0b534c214610980578063c38a6f0b1461077f578063c3f909d414610605578063c9c667e3146105c0578063ccc5749014610585578063ce5c7f6114610440578063d570ee471461041d578063dbd5edc7146103ff578063ebc136d01461031f578063ebf31131146102b2578063f7e533ec146102075763fbfa77cf146101c0575f80fd5b346102045780600319360112610204576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034610204578060031936011261020457604051633df94cfb60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102a7576020929161027a575b506040516001600160a01b039091168152f35b61029a9150823d84116102a0575b6102928183611b3b565b810190611d8b565b5f610267565b503d610288565b6040513d84823e3d90fd5b503461020457806003193601126102045780546001600160a01b0381163303610310576001600160a01b03191681556040513381527f7cb941d7b1708e5b3bcd35ca960d6c6311188cec18886e5b67630552676b048790602090a180f35b63430da47160e01b8252600482fd5b5034610204576020366003190112610204576004356001600160a01b038116908190036103fb57604051632474521560e21b81527fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d600482015260248101919091526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102a757602092916103ce575b506040519015158152f35b6103ee9150823d84116103f4575b6103e68183611b3b565b810190611e30565b5f6103c3565b503d6103dc565b5080fd5b50346102045780600319360112610204576020600354604051908152f35b50346102045780600319360112610204576020610438611f2c565b604051908152f35b5034610204576020366003190112610204576004356001600160401b0381116103fb57610471903690600401611aa9565b5050604051628bec5760e51b8152602081600481305afa9081156102a7578291610566575b506001600160a01b03163303610553576104ae61202d565b60409061054f82516104c08482611b3b565b60018152601f19840190813660208301378451916104de8684611b3b565b60018352366020840137836104f282611e7a565b52836104fd83611e7a565b5261050781611eaf565b9361051183611ef2565b95519586957f3e3e7958121b3e39c7a49392d1aa9cdce870c2a059744f9e15cf66fff78654558380a35f5160206122035f395f51905f525d83611b73565b0390f35b631184b31b60e21b815233600452602490fd5b61057f915060203d6020116102a0576102928183611b3b565b5f610496565b503461020457806003193601126102045760206040517f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f558152f35b50346102045780600319360112610204576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102045780600319360112610204578061012060405161062681611b1f565b8281528260208201528260408201528260608201528260808201528260a0820152606060c0820152606060e08201528261010082015201526040519061066b82611b1f565b546001600160a01b03908116825260015481166020830190815260025490911660408301908152600354606084019081526004546080850190815260055460a0860190815293949391929161076a9190610756906106c7611bee565b9060c088019182526106d7611cd0565b60e089810191825260085460ff1615156101008b019081526009546101208c019081526040805160208082529d516001600160a01b039081169e82019e909e529d518d16908e01529851909a1660608c0152975160808b0152935160a08a01525160c08901525161014095880195909552869594610160870190611a85565b9051858203601f1901610100870152611a85565b91511515610120840152516101408301520390f35b50346102045760803660031901126102045760043561079c611b09565b6044356001600160401b038111610927576107bb903690600401611aa9565b6064939193356001600160401b03811161097c576107dd903690600401611aa9565b86549091906001600160a01b03163303610969578692916107fd91612062565b604051632d182be560e21b81526004810184905230602482018190526044820152602081606481867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561095e5761092f575b506002546001600160a01b0316936108758482876120ed565b6001600160a01b031694853b1561092b5781606484926040519485938492632db6d39960e01b845289600485015260406024850152816044850152848401378181018301859052601f01601f1916810103018183895af180156102a757610912575b505061090c7f9f784fc02a186f1c98b2d9f15fda084da27cdd291a3785d978f91911d880516b91604051918291309583611e15565b0390a380f35b8161091c91611b3b565b61092757835f6108d7565b8380fd5b8280fd5b6109509060203d602011610957575b6109488183611b3b565b810190611d7c565b505f61085c565b503d61093e565b6040513d85823e3d90fd5b631564c0e160e11b875233600452602487fd5b8580fd5b503461020457806003193601126102045760206040517f025d8bbf3268be680d2605ebf6da15063b9915615bf1087dab336efc1bf970cb8152f35b50346102045780600319360112610204576020600954604051908152f35b50346102045780600319360112610204576020600554604051908152f35b503461020457806003193601126102045760206040517fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d8152f35b5034610204576020366003190112610204578054600435906001600160a01b03163303610a8b576020817fb6ac66853c4e59c71e118d25ab494bb847c4e5eb0c8894898c5343e6f61afc1292600555604051908152a180f35b631564c0e160e11b825233600452602482fd5b5034610204578060031936011261020457604051600160f91b602082019081523060601b6001600160601b03191660218301526015825290610ae1603582611b3b565b519020604051632474521560e21b815260048101919091523360248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102a7578291610bb6575b5015610ba35780546001600160a01b038116610b94576001600160a01b0319163390811782556040519081527f55489ce0259bd691120d8860861be1c401c7c16a3cd268d21045756af4ecc5ca90602090a180f35b636a79b97d60e11b8252600482fd5b631564c0e160e11b815233600452602490fd5b610bcf915060203d6020116103f4576103e68183611b3b565b5f610b3f565b5034610204576020366003190112610204578054600435906001600160a01b03163303610a8b576020817f333b26cca69716ad4680ddb07663f5bfb4f06045671f336af9a83690a3ae00f992600355604051908152a180f35b5034610204578060031936011261020457604051637aaceb9560e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102a7576020929161027a57506040516001600160a01b039091168152f35b5034610204578060031936011261020457546001546002546003546004546005546001600160a01b0394851695851694929390921691610d3e9190610d3090610ce7611bee565b90610cf0611cd0565b9360ff6008541697600954976040519b8c9b8c5260208c015260408b015260608a0152608089015260a088015261014060c0880152610140870190611a85565b9085820360e0870152611a85565b9115156101008401526101208301520390f35b5034610fac576020366003190112610fac576004356001600160401b038111610fac5736602382011215610fac578060040135610d8d81611b5c565b91610d9b6040519384611b3b565b8183526024602084019260051b82010190368211610fac57602401915b818310611266575050604051628bec5760e51b81529050602081600481305afa90811561114c575f91611247575b506001600160a01b0316330361123457610dfe61202d565b610e088151611e48565b90610e138151611e48565b6002545f5460405163c8169aa160e01b81529294926001600160a01b0392831692909160209183916004918391165afa90811561114c575f91611215575b506040516370a0823160e01b8152306004820152602081602481865afa90811561114c575f916111e3575b501515806111d0575b61105a575b5050835b82518110156110015760249060206001600160a01b03610eae8387611e9b565b5116604051938480926370a0823160e01b82523060048301525afa918215610ff6578692610fc3575b5081610ee8575b6001915001610e8e565b6001600160a01b03610efa8286611e9b565b5116916024610f07611daa565b9360206001600160a01b03610f1c868a611e9b565b5116604051938480926370a0823160e01b82523060048301525afa918215610fb8578992610f80575b5090600194610f53926120b3565b828060a01b03610f638387611e9b565b5116610f6f8386611e9b565b52610f7a8287611e9b565b52610ede565b91506020823d8211610fb0575b81610f9a60209383611b3b565b81010312610fac579051906001610f45565b5f80fd5b3d9150610f8d565b6040513d8b823e3d90fd5b9091506020813d8211610fee575b81610fde60209383611b3b565b81010312610fac5751905f610ed7565b3d9150610fd1565b6040513d88823e3d90fd5b848261054f8661101083611eaf565b9261101a82611ef2565b946040519586957f46b8771620f6acf56cb03d3e835ea8024c7dcbcf05fcc3f6ade9e19d1a3e212b8380a35f5160206122035f395f51905f525d83611b73565b6040516370a0823160e01b8152306004820152602081602481865afa90811561114c575f9161119d575b5081611095602092602494866120ed565b6040516370a0823160e01b81523060048201526001600160a01b0391909116939092839182905afa90811561114c575f9161116b575b50604051602081018181106001600160401b03821117611157576040525f8152823b15610fac57611122925f9283604051809681958294632db6d39960e01b84526004840152604060248401526044830190611a85565b03925af1801561114c57611137575b80610e8a565b6111449194505f90611b3b565b5f925f611131565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b90506020813d602011611195575b8161118660209383611b3b565b81010312610fac57515f6110cb565b3d9150611179565b90506020813d6020116111c8575b816111b860209383611b3b565b81010312610fac57516024611084565b3d91506111ab565b50306001600160a01b0382161415610e85565b90506020813d60201161120d575b816111fe60209383611b3b565b81010312610fac57515f610e7c565b3d91506111f1565b61122e915060203d6020116102a0576102928183611b3b565b5f610e51565b631184b31b60e21b5f523360045260245ffd5b611260915060203d6020116102a0576102928183611b3b565b5f610de6565b82356001600160a01b0381168103610fac57815260209283019201610db8565b34610fac576040366003190112610fac576004356003811015610fac576020906112ae611b09565b604051908382019260f81b835260018060601b03199060601b166021820152601581526112dc603582611b3b565b519020604051908152f35b34610fac575f366003190112610fac5760206040517f0d186688925976bbe6755ae984501c8e3e2b103a7af59fd803ab9c6d891ae7e08152f35b34610fac576020366003190112610fac575f54600435906001600160a01b03163303611378576020817ffbe2d5c01ea8ba5596d6c4e6c82c6d4a0a0ee1128689993a4a5ba0169273d69f92600455604051908152a1005b631564c0e160e11b5f523360045260245ffd5b34610fac575f366003190112610fac576040516361d027b360e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561114c576020915f916113fc57506040516001600160a01b039091168152f35b6114139150823d84116102a0576102928183611b3b565b82610267565b34610fac575f366003190112610fac57604051635b0f83f360e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561114c576020915f916113fc57506040516001600160a01b039091168152f35b34610fac575f366003190112610fac5761054f6114a5611cd0565b604051918291602083526020830190611a85565b34610fac576020366003190112610fac575f54600435906001600160a01b031633036113785768056bc75e2d631000008111611520576020817fd3c6d0ab315f2f1352f036cd9f401b49e38e1b90907e195225e8105f9a0b6f0292600955604051908152a1005b634ef9dfe360e01b5f5260045ffd5b34610fac575f366003190112610fac576002546040516001600160a01b039091168152602090f35b34610fac575f366003190112610fac575f546040516001600160a01b039091168152602090f35b34610fac575f366003190112610fac576020600454604051908152f35b34610fac575f366003190112610fac57602060ff600854166040519015158152f35b34610fac576115cb36611ad6565b6115d361202d565b604051631b93849b60e11b8152602081600481305afa90811561114c575f916117d8575b506001600160a01b031633810361171c575b5061161391612062565b60018060a01b0360025416906116596040516323b872dd60e01b602082015233602482015230604482015282606482015260648152611653608482611b3b565b836121aa565b604051636e553f6560e01b815260048101829052306024820152906020826044815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561114c577fcbaa1442ac205415c9d69643e7b60ec73d1de35dbc807c21ec288c70ddc4207b926116e8926116fd575b50604051918291339583611e15565b0390a25f5f5160206122035f395f51905f525d005b6117159060203d602011610957576109488183611b3b565b50846116d9565b604051628bec5760e51b8152602081600481305afa90811561114c575f916117b9575b506001600160a01b031633146116095760206024916040519283809263d206a05960e01b82523360048301525afa90811561114c575f9161179a575b50156117875783611609565b638f7a567d60e01b5f523360045260245ffd5b6117b3915060203d6020116103f4576103e68183611b3b565b8461177b565b6117d2915060203d6020116102a0576102928183611b3b565b8561173f565b6117f1915060203d6020116102a0576102928183611b3b565b846115f7565b34610fac575f366003190112610fac5760206040517f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50418152f35b34610fac5761183f36611ad6565b5f546001600160a01b03163303611378576118619161185c61202d565b612062565b600254604051632d182be560e21b815260048101839052306024820181905260448201526001600160a01b03918216929091602090839060649082905f907f0000000000000000000000000000000000000000000000000000000000000000165af190811561114c577fd5e872c5ecfb1bb8820b2e6a20e31b883682282da886621541f71e31ec11947e926116e89261190f575b506119018133866120b3565b604051918291339583611e15565b6119279060203d602011610957576109488183611b3b565b50846118f5565b34610fac575f366003190112610fac576020611948611daa565b6040516001600160a01b039091168152f35b34610fac575f366003190112610fac5761054f6114a5611bee565b34610fac575f366003190112610fac576370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f90602081602481865afa90811561114c575f91611a53575b50806119eb575b602082604051908152f35b602091506024604051809481936303d1689d60e11b835260048301525afa801561114c575f90611a20575b60209150826119e0565b506020813d602011611a4b575b81611a3a60209383611b3b565b81010312610fac5760209051611a16565b3d9150611a2d565b90506020813d602011611a7d575b81611a6e60209383611b3b565b81010312610fac5751836119d9565b3d9150611a61565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f84011215610fac578235916001600160401b038311610fac5760208381860195010111610fac57565b906040600319830112610fac5760043591602435906001600160401b038211610fac57611b0591600401611aa9565b9091565b602435906001600160a01b0382168203610fac57565b61014081019081106001600160401b0382111761115757604052565b90601f801991011681019081106001600160401b0382111761115757604052565b6001600160401b0381116111575760051b60200190565b604081016040825282518091526020606083019301905f5b818110611bcf575050506020818303910152602080835192838152019201905f5b818110611bb95750505090565b8251845260209384019390920191600101611bac565b82516001600160a01b0316855260209485019490920191600101611b8b565b604051905f6006548060011c9160018216918215611cc6575b602084108314611cb2578386528592908115611c935750600114611c34575b611c3292500383611b3b565b565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310611c77575050906020611c3292820101611c26565b6020919350806001915483858901015201910190918492611c5f565b60209250611c3294915060ff191682840152151560051b820101611c26565b634e487b7160e01b5f52602260045260245ffd5b92607f1692611c07565b604051905f6007548060011c9160018216918215611d72575b602084108314611cb2578386528592908115611c935750600114611d1357611c3292500383611b3b565b5060075f90815290917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b818310611d56575050906020611c3292820101611c26565b6020919350806001915483858901015201910190918492611d3e565b92607f1692611ce9565b90816020910312610fac575190565b90816020910312610fac57516001600160a01b0381168103610fac5790565b604051628bec5760e51b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561114c575f91611df9575090565b611e12915060203d6020116102a0576102928183611b3b565b90565b6001600160a01b039091168152602081019190915260400190565b90816020910312610fac57518015158103610fac5790565b90611e5282611b5c565b611e5f6040519182611b3b565b8281528092611e70601f1991611b5c565b0190602036910137565b805115611e875760200190565b634e487b7160e01b5f52603260045260245ffd5b8051821015611e875760209160051b010190565b6040518091829160208251919201905f5b818110611ed05750505003902090565b82516001600160a01b0316845285945060209384019390920191600101611ec0565b6040518091829160208251919201905f5b818110611f135750505003902090565b8251845285945060209384019390920191600101611f03565b60ff60085416612029576040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa90811561114c575f91611ff7575b50611f96575090565b60405163ce96cb7760e01b81523060048201529150602090829060249082905afa90811561114c575f91611fc8575090565b90506020813d602011611fef575b81611fe360209383611b3b565b81010312610fac575190565b3d9150611fd6565b90506020813d602011612021575b8161201260209383611b3b565b81010312610fac57515f611f8d565b3d9150612005565b5f90565b5f5160206122035f395f51905f525c6120535760015f5160206122035f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b50158015806120a6575b612097578061208b575b61207c57565b63332863a960e11b5f5260045ffd5b5060ff60085416612076565b630cd0fdf960e01b5f5260045ffd5b5060ff600854161561206c565b6120e8611c3293926120da60405194859263a9059cbb60e01b602085015260248401611e15565b03601f198101845283611b3b565b6121aa565b91909160205f60405193612124856121168582019363095ea7b360e01b85528960248401611e15565b03601f198101875286611b3b565b84519082855af15f513d82612185575b50501561214057505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044808501919091528352611c32926120e89061217f606482611b3b565b826121aa565b9091506121a257506001600160a01b0381163b15155b5f80612134565b60011461219b565b905f602091828151910182855af11561114c575f513d6121f957506001600160a01b0381163b155b6121d95750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156121d256fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212202edda50102b2db947c9b872f2249b28bac6a84f3c9650584b4f6c680c947c3a164736f6c634300081c00330000000000000000000000004a03f37e7d3fc243e3f99341d36f4b829bee5e03000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000f389bcea078acd9516414f5dabe3ddd5f7e396940000000000000000000000008ae7fbaecfbdb21c28b1854272bb7a3a813e2a66000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb90000000000000000000000000000000000000000000000000000000005f5e100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000018455243343632362d466c7569642d757364742d3432313631000000000000000000000000000000000000000000000000000000000000000000000000000000ed7b2270726f746f636f6c223a22466c756964222c2274797065223a2245524334363236222c226173736574223a22307866643038366263376364356334383164636339633835656265343738613163306236396663626239222c226d61726b65744173736574223a22307866643038366263376364356334383164636339633835656265343738613163306236396663626239222c22706f6f6c223a22307834413033463337653764336643323433653366393933343164333666346238323942456535453033222c22636861696e4964223a34323136312c227661756c744e616d65223a22466c756964227d00000000000000000000000000000000000000