185 txs
747 calls
constructor
constructor(address _accessManager)
functions
ADMIRALS_QUARTERS_ROLE
viewfunction ADMIRALS_QUARTERS_ROLE() view returns (bytes32)
arkAuctionParameters
viewfunction arkAuctionParameters(address ark, address rewardToken) view returns (uint40 duration, uint256 startPrice, uint256 endPrice, uint256 kickerRewardPercentage, uint8 decayType)
auctions
viewfunction auctions(address ark, address rewardToken) view returns (tuple config, tuple state)
currentAuctionId
viewfunction currentAuctionId() view returns (uint256)
DECAY_CONTROLLER_ROLE
viewfunction DECAY_CONTROLLER_ROLE() view returns (bytes32)
generateRole
purefunction generateRole(uint8 roleName, address roleTargetContract) pure returns (bytes32)
getCurrentPrice
viewfunction getCurrentPrice(address ark, address rewardToken) view returns (uint256)
GOVERNOR_ROLE
viewfunction GOVERNOR_ROLE() view returns (bytes32)
GUARDIAN_ROLE
viewfunction GUARDIAN_ROLE() view returns (bytes32)
hasAdmiralsQuartersRole
viewfunction hasAdmiralsQuartersRole(address account) view returns (bool)
obtainedTokens
viewfunction obtainedTokens(address ark, address rewardToken) view returns (uint256 harvestedAmount)
paymentTokensToBoard
viewfunction paymentTokensToBoard(address ark, address rewardToken) view returns (uint256 paymentTokensToBoard)
SUPER_KEEPER_ROLE
viewfunction SUPER_KEEPER_ROLE() view returns (bytes32)
sweepableTokens
viewfunction sweepableTokens(address ark, address token) view returns (bool isSweepable)
unsoldTokens
viewfunction unsoldTokens(address ark, address rewardToken) view returns (uint256 remainingTokens)
board
nonpayablefunction board(address ark, address rewardToken, bytes data)
buyTokens
nonpayablefunction buyTokens(address ark, address rewardToken, uint256 amount) returns (uint256 paymentAmount)
finalizeAuction
nonpayablefunction finalizeAuction(address ark, address rewardToken)
harvest
nonpayablefunction harvest(address ark, bytes rewardData)
harvestAndStartAuction
nonpayablefunction harvestAndStartAuction(address ark, bytes rewardData)
setArkAuctionParameters
nonpayablefunction setArkAuctionParameters(address ark, address rewardToken, tuple parameters)
setSweepableToken
nonpayablefunction setSweepableToken(address ark, address token, bool isSweepable)
startAuction
nonpayablefunction startAuction(address ark, address rewardToken)
sweep
nonpayablefunction sweep(address ark, address[] tokens) returns (address[] sweptTokens, uint256[] sweptAmounts)
sweepAndStartAuction
nonpayablefunction sweepAndStartAuction(address ark, address[] tokens)
events
ArkAuctionParametersSet
event ArkAuctionParametersSet(address indexed ark, address indexed rewardToken, (uint40 duration, uint256 startPrice, uint256 endPrice, uint256 kickerRewardPercentage, uint8 decayType) parameters)
ArkHarvested
event ArkHarvested(address indexed ark, address[] indexed rewardTokens, uint256[] indexed rewardAmounts)
ArkRewardTokenAuctionStarted
event ArkRewardTokenAuctionStarted(uint256 auctionId, address ark, address rewardToken, uint256 amount)
AuctionDefaultParametersUpdated
event AuctionDefaultParametersUpdated((uint40 duration, uint256 startPrice, uint256 endPrice, uint256 kickerRewardPercentage, uint8 decayType) newConfig)
AuctionFinalized
event AuctionFinalized(uint256 indexed auctionId, uint256 soldTokens, uint256 unsoldTokens)
RewardBoarded
event RewardBoarded(address indexed ark, address indexed fromRewardToken, address indexed toFleetToken, uint256 amountReboarded)
SweepableTokenSet
event SweepableTokenSet(address indexed ark, address indexed token, bool isSweepable)
TokensPurchased
event TokensPurchased(uint256 indexed auctionId, address indexed buyer, uint256 amount, uint256 price)
errors
AuctionAlreadyFinalized
error AuctionAlreadyFinalized(uint256 auctionId)
AuctionNotActive
error AuctionNotActive(uint256 auctionId)
AuctionNotEnded
error AuctionNotEnded(uint256 auctionId)
AuctionNotFound
error AuctionNotFound()
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)
DirectGrantIsDisabled
error DirectGrantIsDisabled(address caller)
DirectRevokeIsDisabled
error DirectRevokeIsDisabled(address caller)
InsufficientTokensAvailable
error InsufficientTokensAvailable()
InvalidAccessManagerAddress
error InvalidAccessManagerAddress(address invalidAddress)
InvalidDecayType
error InvalidDecayType()
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
PRBMath_MulDiv18_Overflow
error PRBMath_MulDiv18_Overflow(uint256 x, uint256 y)
PRBMath_UD60x18_Convert_Overflow
error PRBMath_UD60x18_Convert_Overflow(uint256 x)
RaftArkDoesntRequireKeeperData
error RaftArkDoesntRequireKeeperData(address ark)
RaftArkRequiresKeeperData
error RaftArkRequiresKeeperData(address ark)
RaftAuctionAlreadyRunning
error RaftAuctionAlreadyRunning(address ark, address rewardToken)
RaftAuctionParametersNotSet
error RaftAuctionParametersNotSet(address ark, address rewardToken)
RaftInvalidAuctionParameters
error RaftInvalidAuctionParameters(address ark, address rewardToken)
RaftTokenNotSweepable
error RaftTokenNotSweepable(address ark, address token)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a080604052346100ee57602081612b50803803809161001f8285610118565b8339810103126100ee57516001600160a01b038116908190036100ee578015610105576040516301ffc9a760e01b815263261c910560e21b6004820152602081602481855afa9081156100fa575f916100bb575b50156100a957608052604051612a00908161015082396080518181816101c80152818161078d01528181610dd40152611fef0152f35b6347bd7c1d60e01b5f5260045260245ffd5b90506020813d6020116100f2575b816100d660209383610118565b810103126100ee575180151581036100ee575f610073565b5f80fd5b3d91506100c9565b6040513d5f823e3d90fd5b6347bd7c1d60e01b5f525f60045260245ffd5b601f909101601f19168101906001600160401b0382119082101761013b57604052565b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630c0b86ca146111565750806318242941146110d157806324ea54f4146110975780633beef0ce146110475780634f3d0b501461100357806360177fb014610f7357806366e943f114610f3957806369b3054b14610ed85780636e91edf814610e8857806371ef0e0514610c3b5780637399bfe814610c245780638a179be414610b845780638dc385a314610a605780639b05e3c314610996578063a15819301461093f578063a30215e1146108ef578063a89f38a3146108b5578063c0b534c21461087b578063ccc5749014610841578063d37f4b5c1461065c578063db16a5551461056b578063dcefa53814610295578063e042d17014610249578063ebc136d01461015f5763fa3a97cd1461012f575f80fd5b3461015b57604036600319011261015b5761015961014b61116f565b610153611185565b9061187a565b005b5f80fd5b3461015b57602036600319011261015b5761017861116f565b604051632474521560e21b81527fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d60048201526001600160a01b03918216602482015290602090829060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa801561023e575f90610204575b6020906040519015158152f35b506020813d602011610236575b8161021e602093836111de565b8101031261015b57610231602091611522565b6101f7565b3d9150610211565b6040513d5f823e3d90fd5b3461015b5761026361025a3661146e565b90829392611fab565b505f5b81518110156101595760019061028f6001600160a01b0361028783866114b1565b51168561187a565b01610266565b3461015b57606036600319011261015b576102ae61116f565b6102b6611185565b6001600160a01b038281165f81815260026020908152604080832085871684529091529020805491946044359491939092161561055c576008830160ff60098501541661053b5760018401549564ffffffffff8760c81c1642101561051a5781549586811161050b5761032886611543565b9761033f64ffffffffff60408b5101511642612495565b98805164ffffffffff6040816060840151169201511690039964ffffffffff8b116104f757610120825101519160028310156104e35760209b610421936103a69364ffffffffff935161014081015160ff60a061016084015193015116958695169361261f565b916103e0846103da8360f81c6103d56103bf8289612778565b6103cf60ff8860f01c1686612778565b906127f1565b6127c0565b9b612495565b86556040516323b872dd60e01b8c82015233602482015230604482015260648082018c90528152906104136084836111de565b6001600160a01b03166125c7565b865461043990839033906001600160a01b031661258b565b64ffffffffff600388015460a01c1690604051928352898301527fe8d7e55108ae7ddb60173461d2950c7a8e22a7ac7f442825564fe84c8c6f9a3860403393a38154156104d5575b5f526004865260405f2060018060a01b0383165f52865260405f206104a786825461156f565b905554156104bb575b505050604051908152f35b6104c76104cd93611543565b916123d5565b8280806104b0565b6104de856124c2565b610481565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b632783839d60e01b5f5260045ffd5b64ffffffffff600386015460a01c1663aff5aad960e01b5f5260045260245ffd5b64ffffffffff600385015460a01c1663d9e3dd8360e01b5f5260045260245ffd5b6307145c5f60e11b5f5260045ffd5b3461015b57604036600319011261015b5761058461116f565b61058c611185565b9060018060a01b03165f52600260205260405f209060018060a01b03165f526020526105ba60405f20611543565b6105f36020604051926370d8532160e11b84526105db600485018251611307565b015180516101c48401526020015115156101e4830152565b60208161020481730322cde33a8c928c38594a5f75a53829540e717d5af4801561023e575f90610629575b602090604051908152f35b506020813d602011610654575b81610643602093836111de565b8101031261015b576020905161061e565b3d9150610636565b3461015b57606036600319011261015b5761067561116f565b61067d611185565b604435908115159283830361015b57604051631b93849b60e11b81526001600160a01b03919091169290602081600481875afa90811561023e575f91610807575b506001600160a01b03811615908115610752575b5061073f577f4adb9dae6a662b6653c6302afe840f7761fbd38175aad756fddce844dede7f469161072c602092855f526005845260405f2060018060a01b0384165f52845260405f209060ff801983541691151516179055565b6040519485526001600160a01b031693a3005b6363b52ed760e11b5f523360045260245ffd5b61078991506107626020916114d9565b604051632474521560e21b8152600481019190915233602482015291829081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e575f916107cd575b5015856106d2565b90506020813d6020116107ff575b816107e8602093836111de565b8101031261015b576107f990611522565b856107c5565b3d91506107db565b90506020813d602011610839575b81610822602093836111de565b8101031261015b576108339061150e565b856106be565b3d9150610815565b3461015b575f36600319011261015b5760206040517f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f558152f35b3461015b575f36600319011261015b5760206040517f025d8bbf3268be680d2605ebf6da15063b9915615bf1087dab336efc1bf970cb8152f35b3461015b575f36600319011261015b5760206040517fb00be3d6a5434b97b328543d1486d56adcb7e74080170d1cdd7e0306c3d9ba3d8152f35b3461015b57604036600319011261015b5761090861116f565b610910611185565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b3461015b57604036600319011261015b5761095861116f565b610960611185565b9060018060a01b03165f52600560205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461015b57604036600319011261015b576109af61116f565b6109b7611185565b6001600160a01b038083165f90815260026020908152604080832084861684529091529020805490939291161561055c5760ff600984015416610a3f5764ffffffffff600184015460c81c164210610a1e576104c783610a19610159956124c2565b611543565b64ffffffffff600384015460a01c1663e30e8d4760e01b5f5260045260245ffd5b64ffffffffff600384015460a01c1663d9e3dd8360e01b5f5260045260245ffd5b3461015b57606036600319011261015b57610a7961116f565b610a81611185565b906044356001600160401b03811161015b57610aa1903690600401611441565b60405163303dbaf360e01b815291939092916001600160a01b03831690602081600481855afa90811561023e575f91610b4a575b5015610b3857506001600160401b038311610b245760405192610b02601f8201601f1916602001856111de565b808452368186011161015b576020815f926101599783880137850101526121f0565b634e487b7160e01b5f52604160045260245ffd5b63b616b3c160e01b5f5260045260245ffd5b90506020813d602011610b7c575b81610b65602093836111de565b8101031261015b57610b7690611522565b86610ad5565b3d9150610b58565b3461015b57610b9b610b95366113dc565b916116ab565b90604051918291604083016040845281518091526020606085019201905f5b818110610c02575050508281036020840152602080835192838152019201905f5b818110610be9575050500390f35b8251845285945060209384019390920191600101610bdb565b82516001600160a01b0316845286955060209384019390920191600101610bba565b3461015b57610159610c353661146e565b91611fab565b3461015b5760e036600319011261015b57610c5461116f565b610c5c611185565b9060a036604319011261015b57604051631b93849b60e11b81526001600160a01b039190911690602081600481855afa90811561023e575f91610e4e575b506001600160a01b03811615908115610dc0575b5061073f5764ffffffffff610cc161152f565b1615610da357805f52600660205260405f2060018060a01b0383165f5260205260405f209164ffffffffff610cf461152f565b1664ffffffffff1984541617835560643580600185015560843591826002860155600460a43595866003820155019460c43595600287101561015b5760ff1981541660ff8816179055604051956044359164ffffffffff831680930361015b577fa157096b281a1cf6bffea0607f57583635fe613def841614af9b428bfeee376f9560a095610d98948a5260208a01526040890152606088015260808701906112fa565b600180831b031693a3005b63e187846760e01b5f5260045260018060a01b031660245260445ffd5b610dd091506107626020916114d9565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e575f91610e14575b501583610cae565b90506020813d602011610e46575b81610e2f602093836111de565b8101031261015b57610e4090611522565b83610e0c565b3d9150610e22565b90506020813d602011610e80575b81610e69602093836111de565b8101031261015b57610e7a9061150e565b83610c9a565b3d9150610e5c565b3461015b57604036600319011261015b57610ea161116f565b610ea9611185565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015b57604036600319011261015b57600435600381101561015b57602090610f00611185565b604051908382019260f81b835260018060601b03199060601b16602182015260158152610f2e6035826111de565b519020604051908152f35b3461015b575f36600319011261015b5760206040517f0d186688925976bbe6755ae984501c8e3e2b103a7af59fd803ab9c6d891ae7e08152f35b3461015b57604036600319011261015b57610f8c61116f565b610f94611185565b9060018060a01b03165f52600660205260405f209060018060a01b03165f5260205260a060405f2061100164ffffffffff82541691600181015490600281015460ff60046003840154930154169260405195865260208601526040850152606084015260808301906112fa565bf35b3461015b5761101d611014366113dc565b908293926116ab565b505f5b8151811015610159576001906110416001600160a01b0361028783866114b1565b01611020565b3461015b57604036600319011261015b5761106061116f565b611068611185565b6001600160a01b039182165f908152600360209081526040808320949093168252928352819020549051908152f35b3461015b575f36600319011261015b5760206040517f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50418152f35b3461015b57604036600319011261015b576110ea61116f565b6110f2611185565b9060018060a01b03165f52600260205260405f209060018060a01b03165f5260205261020060405f20611001611133600861112c846111ff565b93016112d7565b6111406040518094611307565b80516101c08401526020015115156101e0830152565b3461015b575f36600319011261015b576020905f548152f35b600435906001600160a01b038216820361015b57565b602435906001600160a01b038216820361015b57565b60028210156104e35752565b6101c081019081106001600160401b03821117610b2457604052565b604081019081106001600160401b03821117610b2457604052565b90601f801991011681019081106001600160401b03821117610b2457604052565b9060405161120c816111a7565b6101a06007829460018060a01b038154168452600181015460018060a01b038116602086015264ffffffffff8160a01c16604086015264ffffffffff8160c81c16606086015260ff8160f01c16608086015260f81c60a085015260018060a01b0360028201541660c08501526112af60ff600383015460018060a01b03811660e088015264ffffffffff8160a01c1661010088015260c81c16610120860161119b565b6004810154610140850152600581015461016085015260068101546101808501520154910152565b906040516112e4816111c3565b602060ff60018395805485520154161515910152565b9060028210156104e35752565b6101a0809160018060a01b03815116845260018060a01b03602082015116602085015264ffffffffff604082015116604085015264ffffffffff606082015116606085015260ff608082015116608085015260ff60a08201511660a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e085015264ffffffffff610100820151166101008501526113b16101208201516101208601906112fa565b6101408101516101408501526101608101516101608501526101808101516101808501520151910152565b604060031982011261015b576004356001600160a01b038116810361015b57916024356001600160401b03811161015b578260238201121561015b578060040135926001600160401b03841161015b5760248460051b8301011161015b576024019190565b9181601f8401121561015b578235916001600160401b03831161015b576020838186019501011161015b57565b90604060031983011261015b576004356001600160a01b038116810361015b5791602435906001600160401b03821161015b576114ad91600401611441565b9091565b80518210156114c55760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b6040515f6020820190815260609290921b6001600160601b0319166021820152601581526115086035826111de565b51902090565b51906001600160a01b038216820361015b57565b5190811515820361015b57565b60443564ffffffffff8116810361015b5790565b90604051611550816111c3565b602061156a60088395611562816111ff565b8552016112d7565b910152565b919082018092116104f757565b91908110156114c55760051b0190565b356001600160a01b038116810361015b5790565b6001600160401b038111610b245760051b60200190565b919060408382031261015b5782516001600160401b03811161015b57830181601f8201121561015b578051906115ec826115a0565b916115fa60405193846111de565b80835260208084019160051b8301019184831161015b57602001905b82821061169357505050926020810151906001600160401b03821161015b57019080601f8301121561015b57815161164d816115a0565b9261165b60405194856111de565b81845260208085019260051b82010192831161015b57602001905b8282106116835750505090565b8151815260209182019101611676565b602080916116a08461150e565b815201910190611616565b929190925f5b8281106117d1575060405163780469bb60e01b81526020600482015260248101839052936001600160a01b039190911691849160448301915f905b80821061179c5750505090805f92038183855af192831561023e575f905f94611775575b5080845f5b835181101561176c578061172b600192896114b1565b51865f528260205260405f20838060a01b0361174784896114b1565b5116848060a01b03165f5260205261176460405f2091825461156f565b905501611715565b50939250935050565b90506117949193503d805f833e61178c81836111de565b8101906115b7565b92905f611710565b919350918335906001600160a01b038216820361015b5760208091600193848060a01b031681520194019201869392916116ec565b6001600160a01b0382165f8181526005602052604090209395936117fe6117f984898861157c565b61158c565b60018060a01b03165f5260205260ff60405f2054161561182457506001019391936116b1565b6118326117f983888761157c565b6307373cf560e41b5f9081526004929092526001600160a01b0316602452604490fd5b805464ffffffffff60a01b191660a09290921b64ffffffffff60a01b16919091179055565b60018060a01b0316805f52600660205260405f2060018060a01b0383165f5260205264ffffffffff60405f20541615611f8e575f8181526002602090815260408083206001600160a01b0386811685529252909120805490911615159081611f7e575b50611f61575f8181526001602090815260408083206001600160a01b03861680855290835281842054858552600384528285209185529252909120546119229161156f565b6040516338d52e0f60e01b8152926001600160a01b03169190602084600481855afa93841561023e575f94611f25575b50815f52600660205260405f20835f5260205260405f2060405160a081018181106001600160401b03821117610b245760405264ffffffffff8254168152600182015495602082019687526002830154966040830197885260ff600460038601549560608601968752015416906119cd60808501928361119b565b6040516119d9816111c3565b6040516119e5816111a7565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a08201528152602060405191611a4d836111c3565b5f83525f8284015201525f545f1981146104f757600164ffffffffff910194855f55511690519851945191519460028610156104e3576040519461016086018681106001600160401b03821117610b245760405285526020850199898b526040860194600160a01b60019003168552606086019283526080860190815260a0860191825260c086019288845260e08701948552610100870195338752610120880197308952610140810199611b02908b61119b565b604051631bd590b960e11b8152905160048201529c516001600160a01b0390811660248f01529051811660448e0152905164ffffffffff1660648d0152905160848c0152905160a48b0152905160c48a0152905160e48901529051811661010488015290511661012486015251611b7e906101448601906112fa565b8380730322cde33a8c928c38594a5f75a53829540e717d5a926101649161020094f493841561023e575f94611db9575b505f8281526002602090815260408083208684528252918290208651805182546001600160a01b03199081166001600160a01b03928316178455938201516001840180549095169116178355928301519296909592909190611c179064ffffffffff1682611855565b60608701518154608089015160a08a01516001600160c81b0390921660c89390931b64ffffffffff60c81b169290921760f09290921b60ff60f01b169190911760f89190911b6001600160f81b03191617905560c08601516002860180546001600160a01b03199081166001600160a01b039384161790915560e08801516003880180549092169216919091178155610100870151909690611cc09064ffffffffff1688611855565b6101208101519160028310156104e357611d6c6080976101a0610100947f5b66543d3d25b638d45065504e7ba2610119c2ce1a07781059cd1dfd67f483c69b64ffffffffff9781549060ff60c81b9060c81b169060ff60c81b1916179055610140810151600484015561016081015160058401556101808101516006840155015160078201556009602080850151805160088501550151151591019060ff801983541691151516179055565b855f52600160205260405f20845f526020525f6040812055855f52600360205260405f20845f526020525f60408120555101511692604051938452602084015260408301526060820152a1565b809194506102003d8111611f1e575b611dd281836111de565b81010390610200821261015b5760405191611dec836111c3565b6101c0811261015b5760405190611e02826111a7565b611e0b8361150e565b8252611e196020840161150e565b6020830152611e2a604084016124a2565b6040830152611e3b606084016124a2565b6060830152611e4c608084016124b4565b6080830152611e5d60a084016124b4565b60a0830152611e6e60c0840161150e565b60c0830152611e7f60e0840161150e565b60e0830152611e9161010084016124a2565b61010083015261012083015191600283101561015b576040926101208201526101408401516101408201526101608401516101608201526101808401516101808201526101a08401516101a082015284526101bf19011261015b57611f0d6101e060405192611eff846111c3565b6101c0810151845201611522565b60208201526020820152925f611bae565b503d611dc8565b9093506020813d602011611f59575b81611f41602093836111de565b8101031261015b57611f529061150e565b925f611952565b3d9150611f34565b63ef83e9dd60e01b5f5260045260018060a01b031660245260445ffd5b60ff91506009015416155f6118dd565b633f6f728b60e01b5f5260045260018060a01b031660245260445ffd5b604051632474521560e21b81527f0d186688925976bbe6755ae984501c8e3e2b103a7af59fd803ab9c6d891ae7e060048201523360248201529293926020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e575f916121b6575b50156121a35760405163ce5c7f6160e01b81526020600482015260248101859052936001600160a01b03909116915f91859160449183918190838501378181018301859052601f01601f1916810103018183855af192831561023e575f905f94612184575b505f5b81518110156120e657806120a5600192876114b1565b51845f528260205260405f20838060a01b036120c184876114b1565b5116848060a01b03165f526020526120de60405f2091825461156f565b90550161208f565b5090604051808091845160208601905f5b81811061216257505050039020604051808091875160208901905f5b81811061214957505050039020917ff7904a549ceee39edb99c75ebe3dd4fef55faded4684ab7963232e23fcfd3f4c5f80a49190565b8251845285945060209384019390920191600101612113565b82516001600160a01b03168452859450602093840193909201916001016120f7565b905061219b9193503d805f833e61178c81836111de565b92905f61208c565b6339ba1dbb60e11b5f523360045260245ffd5b90506020813d6020116121e8575b816121d1602093836111de565b8101031261015b576121e290611522565b5f612027565b3d91506121c4565b6001600160a01b038083165f81815260026020908152604080832085871680855290835281842060010154858552600484528285209185529252822054919694959294931692909182612247575b50505050505050565b60405163095ea7b360e01b60208083019182526001600160a01b03939093166024830152604480830186905282529091905f906122856064856111de565b83519082885af15f513d826123b9575b505015612375575b50833b1561015b575f602091606460405180948193632db6d39960e01b8352876004840152604060248401528051918291826044860152018484015e8181018301859052601f01601f1916810103018183885af1801561023e57612360575b506040519081526001600160a01b0384169083907f902a3a8d6e4938f8d990a89084a4ac52bd8d18e234aba1615f333643282fca9890602090a482526004602052604082209060018060a01b03165f5260205260405f20555f80808080808061223e565b61236d9195505f906111de565b5f935f6122fc565b6123b3906123ad60405163095ea7b360e01b60208201528760248201525f6044820152604481526123a76064826111de565b866125c7565b846125c7565b5f61229d565b9091506123cd5750833b15155b5f80612295565b6001146123c6565b9160208060049201515160018060a01b03851690815f526003835260405f2060018060a01b0386165f52835261241060405f2091825461156f565b905560405163303dbaf360e01b815292839182905afa90811561023e575f9161245b575b501561243e575050565b61245991604051916124516020846111de565b5f83526121f0565b565b90506020813d60201161248d575b81612476602093836111de565b8101031261015b5761248790611522565b5f612434565b3d9150612469565b919082039182116104f757565b519064ffffffffff8216820361015b57565b519060ff8216820361015b57565b7fd11fb103f8d5c913b9e132f165c0cfa304fc230f10796a7a5d63bc3d8de4d3c36040600683015464ffffffffff6003600886019561250387548095612495565b60098201805460ff191660011790559380151580612575575b80612560575b61253d575b50015460a01c16935482519182526020820152a2565b81548383015461255a92916001600160a01b03918216911661258b565b5f612527565b50818301546001600160a01b03161515612522565b50828201546001600160a01b031630141561251c565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152612459916125c76064836111de565b905f602091828151910182855af11561023e575f513d61261657506001600160a01b0381163b155b6125f65750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156125ef565b959495939193828410156127085760028110156104e3578061268e5750916126806126859261267a61267461266e6126688b61266261268b9d6103d59c9b612778565b99612778565b88612495565b94612886565b91612886565b926127f1565b61290c565b90612495565b90565b91939290916001036126f9576126806103d59461267a6126ed6126e76126e16126dc6126d56126ce8e61268b9f6126c8906126f39d612778565b9c612778565b809b612495565b9786612495565b612886565b93612886565b926128c5565b916128c5565b9061156f565b6346b2fddf60e11b5f5260045ffd5b5050505091505090565b60ff6011199116019060ff82116104f757565b60ff166012039060ff82116104f757565b60ff16604d81116104f757600a0a90565b8115612751570490565b634e487b7160e01b5f52601260045260245ffd5b818102929181159184041417156104f757565b60ff8216601281146127ba576012106127a55761279f61279a61268b93612725565b612736565b90612765565b6127b461279a61268b93612712565b90612747565b50905090565b60ff8216601281146127ba576012106127e2576127b461279a61268b93612725565b61279f61279a61268b93612712565b9091905f198382098382029182808310920391808303921461287557670de0b6b3a764000082101561285e577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b8490635173648d60e01b5f5260045260245260445ffd5b5050670de0b6b3a764000090049150565b7812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2181116128b357670de0b6b3a76400000290565b631cd951a760e01b5f5260045260245ffd5b670de0b6b3a764000090600190815b6128dd57505090565b806128e7916127f1565b90600181166128fb575b60011c90816128d4565b9181612906916127f1565b916128f1565b5f19670de0b6b3a7640000820991670de0b6b3a76400008202918280851094039380850394146129be578184101561299d57670de0b6b3a7640000829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600452670de0b6b3a764000060245260445260645ffd5b509061268b925061274756fea26469706673582212200b2134f38e34324bde23e87469d5cd4aacb1bb75d3395fa084592086f302602d64736f6c634300081c0033000000000000000000000000f389bcea078acd9516414f5dabe3ddd5f7e39694