0 txs
17 calls
constructor
constructor(address _bridgeRouter, address _crossChainRegistry, uint16 _satelliteChainId, (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)
bridgeRouter
viewfunction bridgeRouter() 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)
CROSS_CHAIN_REGISTRY
viewfunction CROSS_CHAIN_REGISTRY() view returns (address)
crossChainRegistry
viewfunction crossChainRegistry() view returns (address)
DECAY_CONTROLLER_ROLE
viewfunction DECAY_CONTROLLER_ROLE() view returns (bytes32)
defaultGasLimit
viewfunction defaultGasLimit() view returns (uint256)
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)
getSupportedOperationTypes
viewfunction getSupportedOperationTypes() view returns (uint8[] supportedTypes)
getTargetProxy
viewfunction getTargetProxy() view returns (address)
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)
inflightAssets
viewfunction inflightAssets() view returns (uint256)
isExecutor
viewfunction isExecutor(address executor) view returns (bool)
lastRemoteAssetBalance
viewfunction lastRemoteAssetBalance() view returns (uint256)
latestOutgoingTransferId
viewfunction latestOutgoingTransferId() view returns (bytes32)
maxDepositPercentageOfTVL
viewfunction maxDepositPercentageOfTVL() view returns (uint256)
maxRebalanceInflow
viewfunction maxRebalanceInflow() view returns (uint256)
maxRebalanceOutflow
viewfunction maxRebalanceOutflow() view returns (uint256)
name
viewfunction name() view returns (string)
pendingTransferOptions
viewfunction pendingTransferOptions() view returns (address specifiedAdapter, uint64 gasLimit, uint32 calldataSize, uint128 msgValue, bytes options)
pendingTransferParams
viewfunction pendingTransferParams() view returns (address originator, uint16 destinationChainId, address target, address asset, uint256 amount, bytes message, address refundAddress)
raft
viewfunction raft() view returns (address)
requiresKeeperData
viewfunction requiresKeeperData() view returns (bool)
satelliteChainId
viewfunction satelliteChainId() view returns (uint16)
SUPER_KEEPER_ROLE
viewfunction SUPER_KEEPER_ROLE() view returns (bytes32)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
tipJar
viewfunction tipJar() view returns (address)
totalAssets
viewfunction totalAssets() view returns (uint256 assets)
treasury
viewfunction treasury() view returns (address)
withdrawableTotalAssets
viewfunction withdrawableTotalAssets() view returns (uint256)
board
nonpayablefunction board(uint256 amount, bytes boardData)
disembark
nonpayablefunction disembark(uint256 amount, bytes disembarkData)
executeTransferAssets
payablefunction executeTransferAssets() payable
forceUpdateInflightAssets
nonpayablefunction forceUpdateInflightAssets(uint256 amount)
harvest
nonpayablefunction harvest(bytes additionalData) returns (address[] rewardTokens, uint256[] rewardAmounts)
move
nonpayablefunction move(uint256 amount, address receiverArk, bytes boardData, bytes disembarkData)
receiveOperation
nonpayablefunction receiveOperation(uint8 operationType, bytes encodedParams)
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()
updateInflightAssets
nonpayablefunction updateInflightAssets(uint256 amount)
whitelistMerklOperator
nonpayablefunction whitelistMerklOperator(address operator)
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)
AssetsReceived
event AssetsReceived(address indexed token, uint256 amount, uint16 sourceChainId)
Boarded
event Boarded(address indexed commander, address token, uint256 amount)
CrossChainOperationReceived
event CrossChainOperationReceived(uint8 indexed operationType, bytes32 indexed operationId, uint16 indexed sourceChainId)
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)
InflightAssetsUpdated
event InflightAssetsUpdated(uint256 amount)
InvalidTransferId
event InvalidTransferId(bytes32 latestTransferReceivedInFleetProxy, bytes32 latestOutgoingTransferId)
MaxDepositPercentageOfTVLUpdated
event MaxDepositPercentageOfTVLUpdated(uint256 newMaxDepositPercentageOfTVL)
MaxRebalanceInflowUpdated
event MaxRebalanceInflowUpdated(uint256 newMaxInflow)
MaxRebalanceOutflowUpdated
event MaxRebalanceOutflowUpdated(uint256 newMaxOutflow)
MessageContentNotExpected
event MessageContentNotExpected()
Moved
event Moved(address indexed from, address indexed to, address token, uint256 amount)
PendingTransferQueued
event PendingTransferQueued((address originator, uint16 destinationChainId, address target, address asset, uint256 amount, bytes message, address refundAddress) params, (address specifiedAdapter, uint64 gasLimit, uint32 calldataSize, uint128 msgValue, bytes options) options)
RaftUpdated
event RaftUpdated(address newRaft)
RemoteAssetBalanceUpdated
event RemoteAssetBalanceUpdated(uint256 newBalance, bytes32 requestId)
RemoteAssetBalanceUpdateRequested
event RemoteAssetBalanceUpdateRequested(bytes32 indexed queueId, uint16 targetChainId, address targetProxy)
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()
CrossChainConfigManagerZeroAddress
error CrossChainConfigManagerZeroAddress()
CrossChainRegistryZeroAddress
error CrossChainRegistryZeroAddress()
DirectGrantIsDisabled
error DirectGrantIsDisabled(address caller)
DirectRevokeIsDisabled
error DirectRevokeIsDisabled(address caller)
ERC4626AssetMismatch
error ERC4626AssetMismatch()
FleetCommanderAlreadyRegistered
error FleetCommanderAlreadyRegistered()
FleetCommanderNotRegistered
error FleetCommanderNotRegistered()
InsufficientAssets
error InsufficientAssets(uint256 requestedAmount, uint256 availableAmount)
InvalidAccessManagerAddress
error InvalidAccessManagerAddress(address invalidAddress)
InvalidAmount
error InvalidAmount()
InvalidAsset
error InvalidAsset()
InvalidBoardData
error InvalidBoardData()
InvalidBridgeRouter
error InvalidBridgeRouter()
InvalidCrossChainRegistry
error InvalidCrossChainRegistry()
InvalidDisembarkData
error InvalidDisembarkData()
InvalidMessageId
error InvalidMessageId()
InvalidRecipient
error InvalidRecipient()
InvalidRequestId
error InvalidRequestId()
InvalidRequestor
error InvalidRequestor()
InvalidSatelliteChain
error InvalidSatelliteChain()
InvalidSender
error InvalidSender()
InvalidSourceChain
error InvalidSourceChain()
InvalidVaultAddress
error InvalidVaultAddress()
KeeperDataRequired
error KeeperDataRequired()
MaxDepositPercentageOfTVLTooHigh
error MaxDepositPercentageOfTVLTooHigh()
NoPendingTransferQueued
error NoPendingTransferQueued()
OnlyAuthorizedExecutor
error OnlyAuthorizedExecutor()
OnlyBridgeRouter
error OnlyBridgeRouter()
PendingTransferAlreadyQueued
error PendingTransferAlreadyQueued()
ReceiveMessageWithAssetsNotSupported
error ReceiveMessageWithAssetsNotSupported()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
UnsupportedOperationType
error UnsupportedOperationType()
creation bytecode
0x61010080604052346106f657614743803803809161001d828561073c565b83398101906080818303126106f6576100358161075f565b6100416020830161075f565b60408301519361ffff8516938486036106f6576060810151906001600160401b0382116106f6570190610140828203126106f6576040519061008282610720565b82516001600160401b0381116106f6578161009e918501610773565b82526020830151906001600160401b0382116106f6576100bf918401610773565b91602082019283526100d36040820161075f565b928360408401526100e66060830161075f565b928360608201526100f96080840161075f565b946080820195865260a08401519560a0830196875260c08501519060c0840191825260e08601519260e0850193845261012061013861010089016107c8565b61010087019081529701516101208601908152976001600160a01b039081169116801561070d576040516301ffc9a760e01b815263261c910560e21b6004820152602081602481855afa908115610702575f916106c4575b50156106b25760805280156106a35760a05280516001600160a01b0316156106945783515115610685576001600160a01b036101ca6107d5565b16156106765768056bc75e2d6310000087511161066757516001600160a01b03166101f36107d5565b97519151925193519451955115159651976101206040519161021483610720565b5f8084526001600160a01b03919091166020840181905260408401859052606084018690526080840187905260a0840188905260c0840189905260e08401998a5261010084019a8b5291909201998a5281546001600160a01b031990811690925560018054831690911790556002805490911690911790556003556004556005558051906001600160401b03821161056a5760065490600182811c9216801561065d575b602083101461054c5781601f8493116105ef575b50602090601f8311600114610589575f9261057e575b50508160011b915f199060031b1c1916176006555b518051906001600160401b03821161056a5760075490600182811c92168015610560575b602083101461054c5781601f8493116104de575b50602090601f8311600114610478575f9261046d575b50508160011b915f199060031b1c1916176007555b51151560ff8019600854169116176008555160095560018060a01b0316801561045e5760c0526001600160a01b03161561044f57156104405760e052604051613f009081610843823960805181818161041b0152818161100e0152818161189401528181611a280152612fd4015260a0518181816102ac01528181610ab601528181611c1f015281816123a60152818161241801526136a1015260c0518181816104d40152818161161a01528181611670015281816137430152613c1c015260e0518181816107170152818161285b01528181612da401528181613bec0152613cf80152f35b6341162e8560e01b5f5260045ffd5b63870240b160e01b5f5260045ffd5b6322fdc95360e11b5f5260045ffd5b015190505f80610345565b60075f9081528281209350601f198516905b8181106104c657509084600195949392106104ae575b505050811b0160075561035a565b01515f1960f88460031b161c191690555f80806104a0565b9293602060018192878601518155019501930161048a565b60075f529091507fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c81019160208510610542575b90601f859493920160051c01905b818110610534575061032f565b5f8155849350600101610527565b9091508190610519565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102e2565b60065f9081528281209350601f198516905b8181106105d757509084600195949392106105bf575b505050811b016006556102f7565b01515f1960f88460031b161c191690555f80806105b1565b9293602060018192878601518155019501930161059b565b60065f529091507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c81019160208510610653575b90601f859493920160051c01905b81811061064557506102cc565b5f8155849350600101610638565b909150819061062a565b91607f16916102b8565b634ef9dfe360e01b5f5260045ffd5b633a4f9cdb60e21b5f5260045ffd5b63268c072960e01b5f5260045ffd5b637ff57ef160e11b5f5260045ffd5b63f1634df960e01b5f5260045ffd5b6347bd7c1d60e01b5f5260045260245ffd5b90506020813d6020116106fa575b816106df6020938361073c565b810103126106f6576106f0906107c8565b5f610190565b5f80fd5b3d91506106d2565b6040513d5f823e3d90fd5b6347bd7c1d60e01b5f525f60045260245ffd5b61014081019081106001600160401b0382111761056a57604052565b601f909101601f19168101906001600160401b0382119082101761056a57604052565b51906001600160a01b03821682036106f657565b81601f820112156106f6578051906001600160401b03821161056a57604051926107a7601f8401601f19166020018561073c565b828452602083830101116106f657815f9260208093018386015e8301015290565b519081151582036106f657565b60a051604051628bec5760e51b815290602090829060049082906001600160a01b03165afa908115610702575f9161080b575090565b90506020813d60201161083a575b816108266020938361073c565b810103126106f6576108379061075f565b90565b3d915061081956fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301e1d114146131d05750806301ffc9a71461316b57806306fdde03146131485780630af02e5014612fb8578063117d8ae014612f9d57806313c408f814612e985780631c26690f14612e7a578063209dcbbf14612e5c57806322eaa0c014612e0357806324ea54f414612dc8578063258aa1e714612d895780632db6d399146125c6578063303dbaf3146125a35780633194549e14612585578063372709361461255e57806338d52e0f1461253557806341af5b521461251a5780634fc7fac3146124a2578063565974d3146124635780635b0f83f3146123f157806361d027b31461237f57806361f5cd8b1461232657806366e943f1146122fe57806369b3054b146122915780636cf526fa14612273578063780469bb14611d2b57806379502c5514611c6a5780637aaceb9514611bf85780637e1392cd14611ab75780637eba626f146119cf57806386651203146119765780638a8b9976146118285780638ed42d2f146117fb57806392001f37146117515780639251d3cd1461160457806392f5e832146116e557806395368d2e146116495780639b25084414611604578063a89f38a3146115c9578063ace37d1714611000578063ad5a356f14610fe2578063b224ee1914610ebe578063bdcdd88214610ea0578063c0b534c214610e65578063c38a6f0b14610c7b578063c3f909d414610ae5578063c9c667e314610aa0578063ccc5749014610a65578063ce5c7f6114610924578063d570ee4714610901578063d5896fcd1461052e578063dbd5edc714610510578063debfda3014610490578063ebc136d0146103b1578063ebf31131146103445763f7e533ec14610286575f80fd5b3461032d578060031936011261032d57604051633df94cfb60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103385780916102f8575b6040516001600160a01b0383168152602090f35b90506020823d602011610330575b816103136020938361338f565b8101031261032d5750610327602091613679565b5f6102e4565b80fd5b3d9150610306565b604051903d90823e3d90fd5b503461032d578060031936011261032d5780546001600160a01b03811633036103a2576001600160a01b03191681556040513381527f7cb941d7b1708e5b3bcd35ca960d6c6311188cec18886e5b67630552676b048790602090a180f35b63430da47160e01b8252600482fd5b503461032d57602036600319011261032d576103cb613289565b604051632474521560e21b81527fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d60048201526001600160a01b03918216602482015290602090829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104855760209291610458575b506040519015158152f35b6104789150823d841161047e575b610470818361338f565b810190613648565b5f61044d565b503d610466565b6040513d84823e3d90fd5b503461032d57602036600319011261032d576104aa613289565b604051632315efd360e11b81526001600160a01b03918216600482015290602090829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610485576020929161045857506040519015158152f35b503461032d578060031936011261032d576020600354604051908152f35b503461032d57604036600319011261032d5760043560038110156108e0576024356001600160401b0381116106335761056b9036906004016132c9565b90916001600160a01b0361057d61372e565b1633036108f35761058d8161361d565b8061063b5750810190602081830312610633578035906001600160401b038211610637570160a08183031261063357604051906105c982613358565b803582526105d9602082016132b5565b60208301526105ea60408201613a14565b60408301526105fb606082016132b5565b60608301526080810135926001600160401b03841161062f5761062c9361062292016139bf565b6080820152613cea565b80f35b8480fd5b8280fd5b8380fd5b6106448161361d565b6002810361082b5750810190602081830312610633578035906001600160401b038211610637570160e081830312610633576040519061068382613329565b80358252610693602082016132b5565b91602081019283526106a760408301613a14565b92604082019384526106bb606084016132b5565b60608301526106cc608084016132b5565b926080830193845260a083019560a0820135875260c08201356001600160401b038111610827576106fd92016139bf565b9160c0810192835251156107fe575b61ffff84511661ffff7f000000000000000000000000000000000000000000000000000000000000000016036107ef5782516002546001600160a01b039182169116036107e057516001600160a01b0390811690610768613bb1565b16036107d1575191602083519381808201958692010103126107cd5761ffff6040927f4ef2b14d479a9abb50c3c8bb993c19371af8d0b8e7de133ad66d8b3c489904639451600a5560018060a01b03905116945191511682519182526020820152a280f35b5f80fd5b63321b59a560e21b8552600485fd5b636448d6e960e11b8652600486fd5b639284b19760e01b8652600486fd5b7f19df458591d7bef5f63411f40177e932acb44b12946457a5f1c3352eec5fb9ca8680a161070c565b8880fd5b91929160019061083a8161361d565b036108e4578201916020818403126108e0578035906001600160401b0382116106335701916060838203126108e05760405190606082018281106001600160401b038211176108cc5760405283356001600160401b038111610637576040856108ab82946108bd94600499016139bf565b85526020810135602086015201613a14565b9101526369e89c1160e11b8152fd5b634e487b7160e01b84526041600452602484fd5b5080fd5b6369e89c1160e11b8252600482fd5b6282b42960e81b8452600484fd5b503461032d578060031936011261032d57602061091c613945565b604051908152f35b503461032d57602036600319011261032d576004356001600160401b0381116108e0576109559036906004016132c9565b5050604051628bec5760e51b8152602081600481305afa908115610485578291610a2b575b506001600160a01b03163303610a1857610992613a23565b604051610a1460206109a4818461338f565b8383525f368137604051906109b9818361338f565b848252505f3681376109ca8361380e565b926109d482613851565b946040519586957f3e3e7958121b3e39c7a49392d1aa9cdce870c2a059744f9e15cf66fff78654558380a35f516020613eab5f395f51905f525d836133c7565b0390f35b631184b31b60e21b815233600452602490fd5b90506020813d602011610a5d575b81610a466020938361338f565b810103126108e057610a5790613679565b5f61097a565b3d9150610a39565b503461032d578060031936011261032d5760206040517f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f558152f35b503461032d578060031936011261032d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461032d578060031936011261032d5780610120604051610b0681613373565b8281528260208201528260408201528260608201528260808201528260a0820152606060c0820152606060e082015282610100820152015260405190610b4b82613373565b546001600160a01b0390811682526001548116602083019081526002549091166040808401918252600354606085019081526004546080860190815260055460a087019081529251949594919392610c6692610c5291610bb582610bae8161347a565b038361338f565b60c0880191825260405193610bd485610bcd81613519565b038661338f565b60e089810195865260085460ff1615156101008b019081526009546101208c019081526040805160208082529d516001600160a01b039081169e82019e909e529d518d16908e01529851909a1660608c0152975160808b01525160a08a01525160c08901525161014095880195909552869594610160870190613265565b9051858203601f1901610100870152613265565b91511515610120840152516101408301520390f35b503461032d57608036600319011261032d57600435610c9861329f565b6044356001600160401b03811161063757610cb79036906004016132c9565b6064939193356001600160401b038111610e6157610cd99036906004016132c9565b86549091906001600160a01b03163303610e4e5790610cf791613a58565b6002546040516370a0823160e01b81523060048201526001600160a01b039091169390602081602481885afa908115610e43578791610e11575b50838110610dfa57509081610d4884889487613ae5565b6001600160a01b031694853b156106335781606484926040519485938492632db6d39960e01b845289600485015260406024850152816044850152848401378181018301859052601f01601f1916810103018183895af1801561048557610de5575b5050610ddf7f9f784fc02a186f1c98b2d9f15fda084da27cdd291a3785d978f91911d880516b91604051918291309583613713565b0390a380f35b81610def9161338f565b61063757835f610daa565b63b97fded160e01b87526004849052602452604486fd5b90506020813d602011610e3b575b81610e2c6020938361338f565b810103126107cd57515f610d31565b3d9150610e1f565b6040513d89823e3d90fd5b631564c0e160e11b875233600452602487fd5b8580fd5b503461032d578060031936011261032d5760206040517f025d8bbf3268be680d2605ebf6da15063b9915615bf1087dab336efc1bf970cb8152f35b503461032d578060031936011261032d576020600954604051908152f35b503461032d578060031936011261032d576013546014546040516015546001600160801b0390921693909181610ef382613442565b8085529160018116908115610fbb5750600114610f5e575b505090610f1d81610a1493038261338f565b60405193849360018060a01b03811685526001600160401b038160a01c16602086015260e01c6040850152606084015260a0608084015260a0830190613265565b601581527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475939250905b808210610fa157509091508101602001610f1d82610f0b565b919260018160209254838588010152019101909291610f88565b60ff191660208087019190915292151560051b85019092019250610f1d9150839050610f0b565b503461032d578060031936011261032d576020600554604051908152f35b508060031936011261032d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661106060206110443061377e565b60405180938192632474521560e21b8352339060048401613660565b0381855afa9081156115145783916115aa575b50159081611541575b5061152e57600f546001600160a01b03161561151f576001600160a01b036110a261372e565b168160206110d460018060a01b036002541660105460405194858094819363095ea7b360e01b83528960048401613713565b03925af18015611514576114f7575b5060206040518092633446ec9d60e01b825281806111036004820161388b565b039134905af19081156104855782916114c5575b50600c557f245bf33c51710b851645e32f2f1e7f0fca02b6130505e7f1f95b0f967d55d30d604051806111498161388b565b0390a16040519061115982613329565b808252602082019080825260408301928184526060810182815261122c6080830191848352611209602097604051976111928a8a61338f565b87895260a0870189905260c087018881529651600d80546001600160a01b0319166001600160a01b03929092169190911790555b51600d805461ffff60a01b191660a09290921b61ffff60a01b1691909117905551600e80546001600160a01b0319166001600160a01b0392909216919091179055565b51600f80546001600160a01b0319166001600160a01b0392909216919091179055565b5160105582516001600160401b0381116113fa5761124b601154613442565b601f8111611481575b508493601f821160011461141957839482916112a8959261140e575b50508160011b915f199060031b1c1916176011555b51601280546001600160a01b0319166001600160a01b0392909216919091179055565b604051916112b6818461338f565b8183528260806040516112c881613358565b848152838101859052604081018590526060810185905201525f601355601480546001600160801b03191690558251906001600160401b0382116113fa57611311601554613442565b601f81116113b6575b5080601f831160011461135457508293829392611349575b50508160011b915f199060031b1c19161760155580f35b015190505f80611332565b90601f19831694601585528285209285905b87821061139e575050836001959610611386575b505050811b0160155580f35b01515f1960f88460031b161c191690555f808061137a565b80600185968294968601518155019501930190611366565b60158452818420601f840160051c8101918385106113f0575b601f0160051c01905b8181106113e5575061131a565b8481556001016113d8565b90915081906113cf565b634e487b7160e01b83526041600452602483fd5b015190505f80611270565b601f198216946011855286852091855b8888821061146b575050908392916001946112a8979810611453575b505050811b01601155611285565b01515f1960f88460031b161c191690555f8080611445565b6001849582939585015181550194019201611429565b60118452858420601f830160051c8101918784106114bb575b601f0160051c01905b8181106114b05750611254565b8481556001016114a3565b909150819061149a565b90506020813d6020116114ef575b816114e06020938361338f565b810103126108e057515f611117565b3d91506114d3565b61150f9060203d60201161047e57610470818361338f565b6110e3565b6040513d85823e3d90fd5b63d1d2ccf960e01b8152600490fd5b6329068e8160e21b815233600452602490fd5b604051632474521560e21b81525f516020613e6b5f395f51905f5260048201523360248201529150602090829060449082905afa90811561048557829161158b575b50155f61107c565b6115a4915060203d60201161047e57610470818361338f565b5f611583565b6115c3915060203d60201161047e57610470818361338f565b5f611073565b503461032d578060031936011261032d5760206040517fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d8152f35b503461032d578060031936011261032d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461032d578060031936011261032d57604051634a9b469760e11b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561033857906116b2575b602090604051908152f35b506020813d6020116116dd575b816116cc6020938361338f565b810103126107cd57602090516116a7565b3d91506116bf565b503461032d57602036600319011261032d578054600435906001600160a01b0316330361173e576020817fb6ac66853c4e59c71e118d25ab494bb847c4e5eb0c8894898c5343e6f61afc1292600555604051908152a180f35b631564c0e160e11b825233600452602482fd5b503461032d578060031936011261032d5760405161177060608261338f565b60028152602081019060403683378051156117e7578282528051600110156117e7579060026040830152604051928392602084019060208552518091526040840192915b8181106117c2575050500390f35b9193509160208060019286516117d78161361d565b81520194019101918493926117b4565b634e487b7160e01b83526032600452602483fd5b503461032d578060031936011261032d576020611816613bb1565b6040516001600160a01b039091168152f35b503461032d578060031936011261032d576040516020810190600160f91b82523060601b6001600160601b0319166021820152601581526118909160209161187160358261338f565b51902060405180938192632474521560e21b8352339060048401613660565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610485578291611943575b50156119305780546001600160a01b038116611921576001600160a01b0319163390811782556040519081527f55489ce0259bd691120d8860861be1c401c7c16a3cd268d21045756af4ecc5ca90602090a180f35b636a79b97d60e11b8252600482fd5b631564c0e160e11b815233600452602490fd5b61195c915060203d60201161047e57610470818361338f565b5f6118cc565b634e487b7160e01b5f52602160045260245ffd5b503461032d57602036600319011261032d578054600435906001600160a01b0316330361173e576020817f333b26cca69716ad4680ddb07663f5bfb4f06045671f336af9a83690a3ae00f992600355604051908152a180f35b503461032d57602036600319011261032d57604051632474521560e21b81527f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5560048281019190915233602483015235906020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611514578391611a98575b5015611a85576020815f516020613e8b5f395f51905f5292600b55604051908152a180f35b630ea7d7ed60e21b825233600452602482fd5b611ab1915060203d60201161047e57610470818361338f565b5f611a60565b503461032d578060031936011261032d57600d54600e54600f5460105460405160115490956001600160a01b03948516949293909216919081611af982613442565b8089529160018116908115611bd15750600114611b78575b5050918591611b2861ffff97611b6e95038461338f565b60018060a01b03601254169460405197889760018060a01b038116895260a01c16602088015260408701526060860152608085015260e060a085015260e0840190613265565b9060c08301520390f35b6011815291507f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c685b818310611bb7575050850160200181611b28611b11565b6001816020929493945483858c0101520191019190611ba0565b60ff19166020808b019190915292151560051b89019092019250839150611b289050611b11565b503461032d578060031936011261032d57604051637aaceb9560e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103385780916102f8576040516001600160a01b0383168152602090f35b503461032d578060031936011261032d57546001546002546003546004546005546040516001600160a01b0395861696861695939490931692611d189291611d0a9190611cba82610bae8161347a565b60405193611ccb85610bcd81613519565b60ff6008541697600954976040519b8c9b8c5260208c015260408b015260608a0152608089015260a088015261014060c0880152610140870190613265565b9085820360e0870152613265565b9115156101008401526101208301520390f35b503461032d57602036600319011261032d576004356001600160401b0381116108e057366023820112156108e057806004013590611d68826133b0565b91611d76604051938461338f565b8083526024602084019160051b8301019136831161062f57602401905b82821061225b575050604051628bec5760e51b81529050602081600481305afa908115611514578391612221575b506001600160a01b0316330361220e57611dd9613a23565b611de381516137b4565b90611dee81516137b4565b600254845460405163c8169aa160e01b815292949286926001600160a01b039081169260209183916004918391165afa9081156115145783916121d4575b506040516370a0823160e01b8152306004820152602081602481865afa90811561218157849161219f575b5015158061218c575b612030575b50505b8251811015611fd75760249060206001600160a01b03611e8883876137e6565b5116604051938480926370a0823160e01b82523060048301525afa918215611fcc578692611f99575b5081611ec2575b6001915001611e68565b6001600160a01b03611ed482866137e6565b5116916024611ee161368d565b9360206001600160a01b03611ef6868a6137e6565b5116604051938480926370a0823160e01b82523060048301525afa918215611f8e578992611f5a575b5090600194611f2d92613aa9565b828060a01b03611f3d83876137e6565b5116611f4983866137e6565b52611f5482876137e6565b52611eb8565b91506020823d8211611f86575b81611f746020938361338f565b810103126107cd579051906001611f1f565b3d9150611f67565b6040513d8b823e3d90fd5b9091506020813d8211611fc4575b81611fb46020938361338f565b810103126107cd5751905f611eb1565b3d9150611fa7565b6040513d88823e3d90fd5b8482610a1486611fe68361380e565b92611ff082613851565b946040519586957f46b8771620f6acf56cb03d3e835ea8024c7dcbcf05fcc3f6ade9e19d1a3e212b8380a35f516020613eab5f395f51905f525d836133c7565b6040516370a0823160e01b8152306004820152602081602481865afa908115612181578491612149575b508161206b60209260249486613ae5565b6040516370a0823160e01b81523060048201526001600160a01b0391909116939092839182905afa908115611514578391612114575b506040516120b060208261338f565b838152823b15610637576120ea92849283604051809681958294632db6d39960e01b84526004840152604060248401526044830190613265565b03925af18015610485576120ff575b80611e65565b816121099161338f565b61063757835f6120f9565b9250506020823d602011612141575b816121306020938361338f565b810103126107cd578591515f6120a1565b3d9150612123565b9350506020833d602011612179575b816121656020938361338f565b810103126107cd579151869290602461205a565b3d9150612158565b6040513d86823e3d90fd5b50306001600160a01b0382161415611e60565b9350506020833d6020116121cc575b816121bb6020938361338f565b810103126107cd578692515f611e57565b3d91506121ae565b90506020813d602011612206575b816121ef6020938361338f565b810103126106335761220090613679565b5f611e2c565b3d91506121e2565b631184b31b60e21b825233600452602482fd5b90506020813d602011612253575b8161223c6020938361338f565b810103126106335761224d90613679565b5f611dc1565b3d915061222f565b60208091612268846132b5565b815201910190611d93565b503461032d578060031936011261032d576020600b54604051908152f35b503461032d57604036600319011261032d5760043560038110156108e0576020916122ba61329f565b905060405190838201926122cd8161361d565b60f81b835260601b6001600160601b0319166021820152601581526122f360358261338f565b519020604051908152f35b503461032d578060031936011261032d5760206040515f516020613e6b5f395f51905f528152f35b503461032d57602036600319011261032d578054600435906001600160a01b0316330361173e576020817ffbe2d5c01ea8ba5596d6c4e6c82c6d4a0a0ee1128689993a4a5ba0169273d69f92600455604051908152a180f35b503461032d578060031936011261032d576040516361d027b360e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103385780916102f8576040516001600160a01b0383168152602090f35b503461032d578060031936011261032d57604051635b0f83f360e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103385780916102f8576040516001600160a01b0383168152602090f35b503461032d578060031936011261032d57610a1460405161248e8161248781613519565b038261338f565b604051918291602083526020830190613265565b503461032d57602036600319011261032d578054600435906001600160a01b0316330361173e5768056bc75e2d63100000811161250b576020817fd3c6d0ab315f2f1352f036cd9f401b49e38e1b90907e195225e8105f9a0b6f0292600955604051908152a180f35b634ef9dfe360e01b8252600482fd5b503461032d578060031936011261032d57602061181661372e565b503461032d578060031936011261032d576002546040516001600160a01b039091168152602090f35b503461032d578060031936011261032d57546040516001600160a01b039091168152602090f35b503461032d578060031936011261032d576020600454604051908152f35b503461032d578060031936011261032d57602060ff600854166040519015158152f35b503461032d576125d5366132f6565b6125e0929192613a23565b604051631b93849b60e11b8152602081600481305afa908115612d0a578591612d4f575b506001600160a01b0316338103612c6d575b506126218184613a58565b60018060a01b0360025416926126676040516323b872dd60e01b60208201523360248201523060448201528460648201526064815261266160848261338f565b85613e12565b600f546001600160a01b0316612c5e5761267f613bb1565b91810190604081830312610e615780356001600160401b038111612c5a5781019060e082840312612c5a57604051906126b782613329565b6126c0836132b5565b82526126ce60208401613a14565b90602083019182526126e2604085016132b5565b93604084019485526126f6606082016132b5565b6060850190815260808501906080830135825260a08301356001600160401b038111612c525760c061272d8a61273b9387016139bf565b9460a08901958652016132b5565b9360c087019485526020810135906001600160401b038211612c5657019660a0888a0312612c52576040519561277087613358565b612779896132b5565b87526020890135976001600160401b0389168903612c4e576020880198895260408a01359963ffffffff8b168b03612c4a57604089019a8b5260608101359b6001600160801b038d168d03612c485760608a019c8d5260808201356001600160401b038111612c42576127ec92016139bf565b9b608089019c8d528d15612c32578d865103612c325784516001600160a01b031615612c225784516002546001600160a01b03918216911603612c225783516001600160a01b03908116911603612c13578051306001600160a01b0390911603612c045761ffff82511661ffff7f00000000000000000000000000000000000000000000000000000000000000001603612bf55751600d80546001600160a01b0319166001600160a01b03929092169190911790556128af9291611209916111c6565b51601055518051906001600160401b038211612be1576128d0601154613442565b601f8111612b7e575b50602090601f8311600114612b2f5761292c9392918c918361140e5750508160011b915f199060031b1c19161760115551601280546001600160a01b0319166001600160a01b0392909216919091179055565b519051915160a09290921b67ffffffffffffffff60a01b166001600160a01b03919091161760e09190911b6001600160e01b0319161760135551601480546001600160801b0319166001600160801b0392909216919091179055518051906001600160401b038211612b1b576129a3601554613442565b601f8111612ab8575b50602090601f8311600114612a2f5791807fcbaa1442ac205415c9d69643e7b60ec73d1de35dbc807c21ec288c70ddc4207b9492612a0e948892612a24575b50508160011b915f199060031b1c1916176015555b604051918291339583613713565b0390a2805f516020613eab5f395f51905f525d80f35b015190505f806129eb565b601586528186209190601f198416875b818110612aa05750926001928592612a0e967fcbaa1442ac205415c9d69643e7b60ec73d1de35dbc807c21ec288c70ddc4207b989610612a88575b505050811b01601555612a00565b01515f1960f88460031b161c191690555f8080612a7a565b92936020600181928786015181550195019301612a3f565b601586527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475601f840160051c81019160208510612b11575b601f0160051c01905b818110612b0657506129ac565b868155600101612af9565b9091508190612af0565b634e487b7160e01b85526041600452602485fd5b60118c52818c209190601f1984168d5b818110612b66575091600193918561292c9796941061145357505050811b01601155611285565b92936020600181928786015181550195019301612b3f565b60118c527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68601f840160051c81019160208510612bd7575b601f0160051c01905b818110612bcc57506128d9565b8c8155600101612bbf565b9091508190612bb6565b634e487b7160e01b8b52604160045260248bfd5b6341162e8560e01b8f5260048ffd5b63321b59a560e21b8f5260048ffd5b634e46966960e11b8f5260048ffd5b50636448d6e960e11b8f5260048ffd5b5063162908e360e11b8f5260048ffd5b50508f80fd5b505b8f80fd5b8e80fd5b8c80fd5b8d80fd5b8680fd5b636610c4fb60e01b8552600485fd5b604051628bec5760e51b8152602081600481305afa908115611fcc578691612d15575b506001600160a01b031633146126165760206024916040519283809263d206a05960e01b82523360048301525afa908115612d0a578591612ceb575b5015612cd8575f612616565b638f7a567d60e01b845233600452602484fd5b612d04915060203d60201161047e57610470818361338f565b5f612ccc565b6040513d87823e3d90fd5b90506020813d602011612d47575b81612d306020938361338f565b81010312610e6157612d4190613679565b5f612c90565b3d9150612d23565b90506020813d602011612d81575b81612d6a6020938361338f565b8101031261062f57612d7b90613679565b5f612604565b3d9150612d5d565b503461032d578060031936011261032d57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461032d578060031936011261032d5760206040517f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50418152f35b503461032d57602036600319011261032d576004356001600160a01b03612e2861372e565b163303612e4e576020815f516020613e8b5f395f51905f5292600b55604051908152a180f35b6282b42960e81b8252600482fd5b503461032d578060031936011261032d576020600c54604051908152f35b503461032d578060031936011261032d576020600a54604051908152f35b503461032d57612ea7366132f6565b83549091906001600160a01b03163303612f8a5790612ecd91612ec8613a23565b613a58565b6002546040516370a0823160e01b81523060048201526001600160a01b039091169190602081602481865afa908115612181578491612f58575b50818110612f405750612a0e81612a007fd5e872c5ecfb1bb8820b2e6a20e31b883682282da886621541f71e31ec11947e933386613aa9565b63b97fded160e01b8452600491909152602452604482fd5b90506020813d602011612f82575b81612f736020938361338f565b810103126107cd57515f612f07565b3d9150612f66565b631564c0e160e11b845233600452602484fd5b503461032d578060031936011261032d57602061181661368d565b50346107cd5760203660031901126107cd57612fd2613289565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661300a60206110443061377e565b0381855afa9081156130a2575f91613129575b501590816130c0575b506130ad57733ef3d8ba38ebe18db133cec108f4d14ce00dd9ae3b156107cd5760405163bdac7ca360e01b81523060048201526001600160a01b0390911660248201525f8160448183733ef3d8ba38ebe18db133cec108f4d14ce00dd9ae5af180156130a257613094575080f35b6130a091505f9061338f565b005b6040513d5f823e3d90fd5b6329068e8160e21b5f523360045260245ffd5b604051632474521560e21b81525f516020613e6b5f395f51905f5260048201523360248201529150602090829060449082905afa9081156130a2575f9161310a575b50155f613026565b613123915060203d60201161047e57610470818361338f565b5f613102565b613142915060203d60201161047e57610470818361338f565b5f61301d565b346107cd575f3660031901126107cd57610a1460405161248e816124878161347a565b346107cd5760203660031901126107cd5760043563ffffffff60e01b81168091036107cd576020906323c4b87d60e11b81149081156131c7575b81156131b657506040519015158152f35b6301ffc9a760e01b1490508261044d565b801591506131a5565b346107cd575f3660031901126107cd576002546370a0823160e01b8252306004830152602090829060249082906001600160a01b03165afa9081156130a2575f91613231575b602061091c61322884600a5490613627565b600b5490613627565b90506020813d60201161325d575b8161324c6020938361338f565b810103126107cd575161091c613216565b3d915061323f565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036107cd57565b602435906001600160a01b03821682036107cd57565b35906001600160a01b03821682036107cd57565b9181601f840112156107cd578235916001600160401b0383116107cd57602083818601950101116107cd57565b9060406003198301126107cd5760043591602435906001600160401b0382116107cd57613325916004016132c9565b9091565b60e081019081106001600160401b0382111761334457604052565b634e487b7160e01b5f52604160045260245ffd5b60a081019081106001600160401b0382111761334457604052565b61014081019081106001600160401b0382111761334457604052565b90601f801991011681019081106001600160401b0382111761334457604052565b6001600160401b0381116133445760051b60200190565b604081016040825282518091526020606083019301905f5b818110613423575050506020818303910152602080835192838152019201905f5b81811061340d5750505090565b8251845260209384019390920191600101613400565b82516001600160a01b03168552602094850194909201916001016133df565b90600182811c92168015613470575b602083101461345c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613451565b6006545f929161348982613442565b80825291600181169081156134fd57506001146134a4575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b8383106134e3575060209250010190565b6001816020929493945483858701015201910191906134d2565b9050602093945060ff929192191683830152151560051b010190565b6007545f929161352882613442565b80825291600181169081156134fd5750600114613543575050565b60075f9081529293509091907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b838310613582575060209250010190565b600181602092949394548385870101520191019190613571565b5f92918154916135ab83613442565b808352926001811690811561360057506001146135c757505050565b5f9081526020812093945091925b8383106135e6575060209250010190565b6001816020929493945483858701015201910191906135d5565b915050602093945060ff929192191683830152151560051b010190565b6003111561196257565b9190820180921161363457565b634e487b7160e01b5f52601160045260245ffd5b908160209103126107cd575180151581036107cd5790565b9081526001600160a01b03909116602082015260400190565b51906001600160a01b03821682036107cd57565b604051628bec5760e51b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156130a2575f916136dc575090565b90506020813d60201161370b575b816136f76020938361338f565b810103126107cd5761370890613679565b90565b3d91506136ea565b6001600160a01b039091168152602081019190915260400190565b6040516320d7ada960e11b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156130a2575f916136dc575090565b6040516020810191600160f81b835260601b6001600160601b0319166021820152601581526137ae60358261338f565b51902090565b906137be826133b0565b6137cb604051918261338f565b82815280926137dc601f19916133b0565b0190602036910137565b80518210156137fa5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b6040518091829160208251919201905f5b81811061382f5750505003902090565b82516001600160a01b031684528594506020938401939092019160010161381f565b6040518091829160208251919201905f5b8181106138725750505003902090565b8251845285945060209384019390920191600101613862565b6040808252600d546001600160a01b038082169284019290925260a090811c61ffff166060840152600e5482166080840152600f549091168282015260105460c083015260e080830152613708916138e86101208201601161359c565b90600180841b03601254166101008201526020818303910152601354600180841b03811682526001600160401b0381841c16602083015260e01c604082015260018060801b0360145416606082015281608082015201601561359c565b60ff600854166139bb576002546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156130a2575f9161398c575090565b90506020813d6020116139b3575b816139a76020938361338f565b810103126107cd575190565b3d915061399a565b5f90565b81601f820112156107cd578035906001600160401b03821161334457604051926139f3601f8401601f19166020018561338f565b828452602083830101116107cd57815f926020809301838601378301015290565b359061ffff821682036107cd57565b5f516020613eab5f395f51905f525c613a495760015f516020613eab5f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b5015801580613a9c575b613a8d5780613a81575b613a7257565b63332863a960e11b5f5260045ffd5b5060ff60085416613a6c565b630cd0fdf960e01b5f5260045ffd5b5060ff6008541615613a62565b613ade613ae39392613ad060405194859263a9059cbb60e01b602085015260248401613713565b03601f19810184528361338f565b613e12565b565b91909160205f60405193613b1c85613b0e8582019363095ea7b360e01b85528960248401613713565b03601f19810187528661338f565b84519082855af15f513d82613b7d575b505015613b3857505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044808501919091528352613ae392613ade90613b7760648261338f565b82613e12565b909150613b9a57506001600160a01b0381163b15155b5f80613b2c565b600114613b93565b519061ffff821682036107cd57565b604051631380fffb60e31b81523060048201527ffaa2c59f2367c44b2132ca55934afd6395bc2278b808e0e3d1fbfdbf74a38b2860248201527f000000000000000000000000000000000000000000000000000000000000000061ffff16604482015260a0816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156130a2575f91613c65575b50602001516001600160a01b031690565b905060a0813d60a011613ce2575b81613c8060a0938361338f565b810103126107cd57608060405191613c9783613358565b613ca081613679565b8352613cae60208201613679565b6020840152613cbf60408201613ba2565b6040840152613cd060608201613ba2565b6060840152015160808201525f613c54565b3d9150613c73565b61ffff60408201511661ffff7f00000000000000000000000000000000000000000000000000000000000000001603613e035760208101516001600160a01b0390811690613d36613bb1565b1603613df4576080810151906040828051810103126107cd5760406020830151920151600c54808203613dc0575050816040917fdf0b8f20f8be71297b5565dca089371340e4ca706819130661ed39a2f9f2e68993600a555182519182526020820152a1600b54613da357565b5f600b555f516020613e8b5f395f51905f5260206040515f8152a1565b7f7b55910a89a3084f555c3048005f40afb81d0525df70941b927b9e9fb923842593506040809350519182526020820152a1565b636edaef2f60e11b5f5260045ffd5b639284b19760e01b5f5260045ffd5b905f602091828151910182855af1156130a2575f513d613e6157506001600160a01b0381163b155b613e415750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613e3a56fe0d186688925976bbe6755ae984501c8e3e2b103a7af59fd803ab9c6d891ae7e097bc620824912b0d421762db1ac154ca86e5887c04b19fdea39f57fd39b6239d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220d12d0d97ff1f4d35aa2d5d6d7d496b00379f9e9c33807243c83ca185bd055c1564736f6c634300081c00330000000000000000000000008ab0a8e95a43633e7c424ee67f6e3fe66d4898b2000000000000000000000000f5731e25f9fc734b1450a2bcf6ac665b65a885150000000000000000000000000000000000000000000000000000000000002105000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000f7d6fbd250ef3eb083c7bca2998ad82e1946e47900000000000000000000000031d12954b4f8c2cd9029f0cc36d82fd01b42876c0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff8500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000001b43726f7373436861696e41726b2d757364632d73756d6d657266690000000000000000000000000000000000000000000000000000000000000000000000003343726f7373436861696e41726b20666f722075736463207573696e672073756d6d65726669206f6e20636861696e203834353300000000000000000000000000