FRAX Price: $0.94 (+14.95%)

Contract

0xD9023495256B23D7b4FA32A5Fd724140F179F51b

Overview

FRAX Balance | FXTL Balance

0 FRAX | 1,673 FXTL

FRAX Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

1 Internal Transaction and 1 Token Transfer found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
105440732024-10-02 19:54:17482 days ago1727898857  Contract Creation0 FRAX

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PointFarmingDecoderAndSanitizer

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion
File 1 of 12 : PointFarmingDecoderAndSanitizer.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";
import {EigenLayerLSTStakingDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/EigenLayerLSTStakingDecoderAndSanitizer.sol";
import {SwellSimpleStakingDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/SwellSimpleStakingDecoderAndSanitizer.sol";
import {ZircuitSimpleStakingDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/ZircuitSimpleStakingDecoderAndSanitizer.sol";
import {MantleStandardBridgeDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/MantleStandardBridgeDecoderAndSanitizer.sol";
import {ScrollBridgeDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/ScrollBridgeDecoderAndSanitizer.sol";
import {LineaBridgeDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/LineaBridgeDecoderAndSanitizer.sol";
import {StandardBridgeDecoderAndSanitizer} from
    "src/base/DecodersAndSanitizers/Protocols/StandardBridgeDecoderAndSanitizer.sol";
import {KarakDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/KarakDecoderAndSanitizer.sol";
import {OFTDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/OFTDecoderAndSanitizer.sol";

contract PointFarmingDecoderAndSanitizer is
    EigenLayerLSTStakingDecoderAndSanitizer,
    SwellSimpleStakingDecoderAndSanitizer,
    KarakDecoderAndSanitizer,
    ZircuitSimpleStakingDecoderAndSanitizer,
    StandardBridgeDecoderAndSanitizer,
    LineaBridgeDecoderAndSanitizer,
    MantleStandardBridgeDecoderAndSanitizer,
    ScrollBridgeDecoderAndSanitizer,
    OFTDecoderAndSanitizer
{
    constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {}

    //============================== HANDLE FUNCTION COLLISIONS ===============================
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol";

contract BaseDecoderAndSanitizer {
    error BaseDecoderAndSanitizer__FunctionSelectorNotSupported();
    //============================== IMMUTABLES ===============================

    /**
     * @notice The BoringVault contract address.
     */
    address internal immutable boringVault;

    constructor(address _boringVault) {
        boringVault = _boringVault;
    }

    function approve(address spender, uint256) external pure returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(spender);
    }

    function transfer(address _to, uint256) external pure returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(_to);
    }

    function claimFees(address feeAsset) external pure returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(feeAsset);
    }

    function withdrawNonBoringToken(address token, uint256 /*amount*/ )
        external
        pure
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(token);
    }

    function withdrawNativeFromDrone() external pure returns (bytes memory addressesFound) {
        return addressesFound;
    }

    //============================== FALLBACK ===============================
    /**
     * @notice The purpose of this function is to revert with a known error,
     *         so that during merkle tree creation we can verify that a
     *         leafs decoder and sanitizer implments the required function
     *         selector.
     */
    fallback() external {
        revert BaseDecoderAndSanitizer__FunctionSelectorNotSupported();
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract EigenLayerLSTStakingDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== ERRORS ===============================

    error EigenLayerLSTStakingDecoderAndSanitizer__CanOnlyReceiveAsTokens();

    //============================== EIGEN LAYER ===============================

    function depositIntoStrategy(address strategy, address token, uint256 /*amount*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(strategy, token);
    }

    function queueWithdrawals(DecoderCustomTypes.QueuedWithdrawalParams[] calldata queuedWithdrawalParams)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        for (uint256 i = 0; i < queuedWithdrawalParams.length; i++) {
            for (uint256 j = 0; j < queuedWithdrawalParams[i].strategies.length; j++) {
                addressesFound = abi.encodePacked(addressesFound, queuedWithdrawalParams[i].strategies[j]);
            }
            addressesFound = abi.encodePacked(addressesFound, queuedWithdrawalParams[i].withdrawer);
        }
    }

    function completeQueuedWithdrawals(
        DecoderCustomTypes.Withdrawal[] calldata withdrawals,
        address[][] calldata tokens,
        uint256[] calldata, /*middlewareTimesIndexes*/
        bool[] calldata receiveAsTokens
    ) external pure virtual returns (bytes memory addressesFound) {
        for (uint256 i = 0; i < withdrawals.length; i++) {
            if (!receiveAsTokens[i]) revert EigenLayerLSTStakingDecoderAndSanitizer__CanOnlyReceiveAsTokens();

            addressesFound = abi.encodePacked(
                addressesFound, withdrawals[i].staker, withdrawals[i].delegatedTo, withdrawals[i].withdrawer
            );
            for (uint256 j = 0; j < withdrawals[i].strategies.length; j++) {
                addressesFound = abi.encodePacked(addressesFound, withdrawals[i].strategies[j]);
            }
            for (uint256 j = 0; j < tokens.length; j++) {
                addressesFound = abi.encodePacked(addressesFound, tokens[i][j]);
            }
        }
    }

    function delegateTo(
        address operator,
        DecoderCustomTypes.SignatureWithExpiry calldata, /*approverSignatureAndExpiry*/
        bytes32 /*approverSalt*/
    ) external pure returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(operator);
    }

    function undelegate(address staker) external pure returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(staker);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract SwellSimpleStakingDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== SWELL SIMPLE STAKING ===============================

    function deposit(address _token, uint256, /*_amount*/ address _receiver)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(_token, _receiver);
    }

    function withdraw(address _token, uint256, /*_amount*/ address _receiver)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(_token, _receiver);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract ZircuitSimpleStakingDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== ZIRCUIT SIMPLE STAKING ===============================

    function depositFor(address _token, address _for, uint256 /*_amount*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(_token, _for);
    }

    function withdraw(address _token, uint256 /*_amount*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(_token);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract MantleStandardBridgeDecoderAndSanitizer is BaseDecoderAndSanitizer {
    /// @notice The mantle bridge closely follows the standard bridge format, but has a couple of breaking changes
    /// that are accounted for using the functions below.
    //============================== MantleStandardBridge ===============================

    function bridgeETHTo(uint256, /*amount*/ address _to, uint32, /*_minGasLimit*/ bytes calldata /*_extraData*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_to);
    }

    // Example TX https://etherscan.io/tx/0xe1b6ba19b47dadf53f1c67ed0fe7109b0c78bb8c3abb8c9578a9fa789fe725d7
    function proveWithdrawalTransaction(
        DecoderCustomTypes.MantleWithdrawalTransaction calldata _tx,
        uint256, /*_l2OutputIndex*/
        DecoderCustomTypes.OutputRootProof calldata, /*_outputRootProof*/
        bytes[] calldata /*_withdrawalProof*/
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        sensitiveArguments = abi.encodePacked(_tx.sender, _tx.target);
    }

    /// @notice Eample TX https://etherscan.io/tx/0x258c80e4c282fc94ddbec05bf64c602a437a2f26b1d2c14b6d16802ab1de9a11
    function finalizeWithdrawalTransaction(DecoderCustomTypes.MantleWithdrawalTransaction calldata _tx)
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        sensitiveArguments = abi.encodePacked(_tx.sender, _tx.target);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract ScrollBridgeDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== Scroll Native Bridge ===============================

    /// @notice Example deposit TX https://etherscan.io/tx/0xadf2121b495a0f6222219095dd3e116cd7b550c1a1a98ec1a561c9bff323eef9
    /// @notice Example withdraw TX https://scrollscan.com/tx/0xfc81ca5bcba7d43cace50765117ecf9cf9d4f177c2493475171c26a91343f801
    function sendMessage(address _to, uint256, /*_value*/ bytes calldata, /*_message*/ uint256 /*_gasLimit*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_to);
    }

    /// @notice Example TX ETH https://etherscan.io/tx/0xdb9f80b209b7e56b529c07d74d686eca7f0e5c3962d5bf5d8c554929f69b7016
    /// @notice Example TX ERC20 https://etherscan.io/tx/0x17f8e5674384e70987d5f31b3f9609968117a131ab5d376fcd69f26e2a658b6e
    function relayMessageWithProof(
        address _from,
        address _to,
        uint256, /*_value*/
        uint256, /*_nonce*/
        bytes calldata, /*_message*/
        DecoderCustomTypes.L2MessageProof calldata /*_proof*/
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_from, _to);
    }

    /// @notice Example TX https://etherscan.io/tx/0xa25e6c5dc294f469fbb754f74aa262b61353a5df68671e41bfe48faecd100059
    function depositERC20(address _token, address _to, uint256, /*_amount*/ uint256 /*_gasLimit*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_token, _to);
    }

    /// @notice Example TX https://scrollscan.com/tx/0xfcc5bdc518524b7f92f0d38dc696662c9a145123211c894b69607368578cc15d
    function withdrawERC20(address _token, address _to, uint256, /*_amount*/ uint256 /*_gasLimit*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_token, _to);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract LineaBridgeDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== Linea Native Bridge ===============================

    /// @notice Example TX https://etherscan.io/tx/0x6fe5dcbafb6620980ec571cde88e6e651075214a0b698543eb5589e8889d52bd
    /// @notice Set _fee to zero in order to claim funds manually.
    /// @notice When bridging from Linea to mainnet a fee is required, so I think it is best to just allow the strategist
    /// to pick a good fee value and do no sanitation of it.
    function sendMessage(address _to, uint256, /*_fee*/ bytes calldata /*_calldata*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_to);
    }

    // Bridge ERC20
    // Example TX https://etherscan.io/tx/0x9935e537c51807f4097444399f08b04798dfe2a0f96cbf0b186caa9e8ab9d111
    // Example TX https://lineascan.build/tx/0xa1ed773719a0d17373b5ce2db7c2e8c924eff99865dd0d3cdb4b58f3e9ea5310
    function bridgeToken(address _token, uint256, /*_amount*/ address _recipient)
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_token, _recipient);
    }

    // https://lineascan.build/tx/0xc97c7d28163dc81c5dd5c735d607952959a06a3016bada86484712d4c6cdea3f
    // Used to claim ETH or ERC20s on destination chain, if no fee is provided.
    function claimMessage(
        address _from,
        address _to,
        uint256, /*_fee*/
        uint256, /*_value*/
        address _feeRecipient,
        bytes calldata, /*_calldata*/
        uint256 /*_nonce*/
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        sensitiveArguments = abi.encodePacked(_from, _to, _feeRecipient);
    }

    // Example TX https://etherscan.io/tx/0x9af51fdd89ac1658a480605fad1105f95290420acff3d978f8df847e9e3891b7
    function claimMessageWithProof(DecoderCustomTypes.ClaimMessageWithProofParams calldata _claimMessageWithProof)
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        sensitiveArguments = abi.encodePacked(
            _claimMessageWithProof.from, _claimMessageWithProof.to, _claimMessageWithProof.feeRecipient
        );
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract StandardBridgeDecoderAndSanitizer is BaseDecoderAndSanitizer {
    //============================== StandardBridge ===============================

    /// @notice Example TX https://etherscan.io/tx/0x0b1cc213286c328e3fb483cfef9342aee51409b67ee5af1dc409e37273710f9f
    /// @notice Eample TX https://basescan.org/tx/0x7805ac08f38bec2d98edafc2e6f9571271a76b5ede3928f96d3edbc459d0ea4d
    function bridgeETHTo(address _to, uint32, /*_minGasLimit*/ bytes calldata /*_extraData*/ )
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_to);
    }

    function bridgeERC20To(
        address _localToken,
        address _remoteToken,
        address _to,
        uint256, /*_amount*/
        uint32, /*_minGasLimit*/
        bytes calldata /*_extraData*/
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        // Extract sensitive arguments.
        sensitiveArguments = abi.encodePacked(_localToken, _remoteToken, _to);
    }

    /// @notice Example TX https://etherscan.io/tx/0x774db0b2aac5123f7a67fe00d57fb6c1f731457df435097481e7c8c913630fe1
    /// @notice This appears to be callable by anyone, so I would think that the sender and target values are constrained by the proofs
    // Playing with tendely sims, this does seem to be the case, so I am not sure it is worth it to sanitize these arguments
    function proveWithdrawalTransaction(
        DecoderCustomTypes.WithdrawalTransaction calldata _tx,
        uint256, /*_l2OutputIndex*/
        DecoderCustomTypes.OutputRootProof calldata, /*_outputRootProof*/
        bytes[] calldata /*_withdrawalProof*/
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        sensitiveArguments = abi.encodePacked(_tx.sender, _tx.target);
    }

    /// @notice Eample TX https://etherscan.io/tx/0x5bb20258a0b151a6acb01f05ea42ee2f51123cba5d51e9be46a5033e675faefe
    function finalizeWithdrawalTransaction(DecoderCustomTypes.WithdrawalTransaction calldata _tx)
        external
        pure
        virtual
        returns (bytes memory sensitiveArguments)
    {
        sensitiveArguments = abi.encodePacked(_tx.sender, _tx.target);
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract KarakDecoderAndSanitizer is BaseDecoderAndSanitizer {
    error KarakDecoderAndSanitizer__InvalidRequestsLength();

    //============================== KARAK ===============================

    function deposit(address vault, uint256, /*amount*/ uint256 /*minOut*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(vault);
    }

    function gimmieShares(address vault, uint256 /*shares*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(vault);
    }

    function returnShares(address vault, uint256 /*shares*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(vault);
    }

    function startWithdraw(DecoderCustomTypes.WithdrawRequest[] calldata requests)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        if (requests.length != 1 || requests[0].vaults.length != 1 || requests[0].shares.length != 1) {
            revert KarakDecoderAndSanitizer__InvalidRequestsLength();
        }
        addressesFound = abi.encodePacked(requests[0].vaults[0], requests[0].withdrawer);
    }

    function finishWithdraw(DecoderCustomTypes.QueuedWithdrawal[] calldata startedWithdrawals)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        if (
            startedWithdrawals.length != 1 || startedWithdrawals[0].request.vaults.length != 1
                || startedWithdrawals[0].request.shares.length != 1
        ) {
            revert KarakDecoderAndSanitizer__InvalidRequestsLength();
        }
        addressesFound = abi.encodePacked(
            startedWithdrawals[0].staker,
            startedWithdrawals[0].delegatedTo,
            startedWithdrawals[0].request.vaults[0],
            startedWithdrawals[0].request.withdrawer
        );
    }
}

File 11 of 12 : OFTDecoderAndSanitizer.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol";

abstract contract OFTDecoderAndSanitizer is BaseDecoderAndSanitizer {
    error OFTDecoderAndSanitizer__NonZeroMessage();
    error OFTDecoderAndSanitizer__NonZeroOFTCommand();

    //============================== OFT ===============================

    function send(
        DecoderCustomTypes.SendParam calldata _sendParam,
        DecoderCustomTypes.MessagingFee calldata, /*_fee*/
        address _refundAddress
    ) external pure virtual returns (bytes memory sensitiveArguments) {
        // Sanitize Message.
        if (_sendParam.composeMsg.length > 0) {
            revert OFTDecoderAndSanitizer__NonZeroMessage();
        }
        if (_sendParam.oftCmd.length > 0) {
            revert OFTDecoderAndSanitizer__NonZeroOFTCommand();
        }

        sensitiveArguments =
            abi.encodePacked(address(uint160(_sendParam.dstEid)), address(bytes20(_sendParam.to << 96)), _refundAddress);
    }
}

File 12 of 12 : DecoderCustomTypes.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

contract DecoderCustomTypes {
    // ========================================= BALANCER =========================================
    struct JoinPoolRequest {
        address[] assets;
        uint256[] maxAmountsIn;
        bytes userData;
        bool fromInternalBalance;
    }

    struct ExitPoolRequest {
        address[] assets;
        uint256[] minAmountsOut;
        bytes userData;
        bool toInternalBalance;
    }

    enum SwapKind {
        GIVEN_IN,
        GIVEN_OUT
    }

    struct SingleSwap {
        bytes32 poolId;
        SwapKind kind;
        address assetIn;
        address assetOut;
        uint256 amount;
        bytes userData;
    }

    struct FundManagement {
        address sender;
        bool fromInternalBalance;
        address recipient;
        bool toInternalBalance;
    }

    // ========================================= UNISWAP V3 =========================================

    struct MintParams {
        address token0;
        address token1;
        uint24 fee;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }

    struct IncreaseLiquidityParams {
        uint256 tokenId;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        uint256 deadline;
    }

    struct DecreaseLiquidityParams {
        uint256 tokenId;
        uint128 liquidity;
        uint256 amount0Min;
        uint256 amount1Min;
        uint256 deadline;
    }

    struct CollectParams {
        uint256 tokenId;
        address recipient;
        uint128 amount0Max;
        uint128 amount1Max;
    }

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    struct PancakeSwapExactInputParams {
        bytes path;
        address recipient;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    // ========================================= MORPHO BLUE =========================================

    struct MarketParams {
        address loanToken;
        address collateralToken;
        address oracle;
        address irm;
        uint256 lltv;
    }

    // ========================================= 1INCH =========================================

    struct SwapDescription {
        address srcToken;
        address dstToken;
        address payable srcReceiver;
        address payable dstReceiver;
        uint256 amount;
        uint256 minReturnAmount;
        uint256 flags;
    }

    // ========================================= PENDLE =========================================
    struct TokenInput {
        // TOKEN DATA
        address tokenIn;
        uint256 netTokenIn;
        address tokenMintSy;
        // AGGREGATOR DATA
        address pendleSwap;
        SwapData swapData;
    }

    struct TokenOutput {
        // TOKEN DATA
        address tokenOut;
        uint256 minTokenOut;
        address tokenRedeemSy;
        // AGGREGATOR DATA
        address pendleSwap;
        SwapData swapData;
    }

    struct ApproxParams {
        uint256 guessMin;
        uint256 guessMax;
        uint256 guessOffchain; // pass 0 in to skip this variable
        uint256 maxIteration; // every iteration, the diff between guessMin and guessMax will be divided by 2
        uint256 eps; // the max eps between the returned result & the correct result, base 1e18. Normally this number will be set
            // to 1e15 (1e18/1000 = 0.1%)
    }

    struct SwapData {
        SwapType swapType;
        address extRouter;
        bytes extCalldata;
        bool needScale;
    }

    enum SwapType {
        NONE,
        KYBERSWAP,
        ONE_INCH,
        // ETH_WETH not used in Aggregator
        ETH_WETH
    }

    struct LimitOrderData {
        address limitRouter;
        uint256 epsSkipMarket; // only used for swap operations, will be ignored otherwise
        FillOrderParams[] normalFills;
        FillOrderParams[] flashFills;
        bytes optData;
    }

    struct FillOrderParams {
        Order order;
        bytes signature;
        uint256 makingAmount;
    }

    struct Order {
        uint256 salt;
        uint256 expiry;
        uint256 nonce;
        OrderType orderType;
        address token;
        address YT;
        address maker;
        address receiver;
        uint256 makingAmount;
        uint256 lnImpliedRate;
        uint256 failSafeRate;
        bytes permit;
    }

    enum OrderType {
        SY_FOR_PT,
        PT_FOR_SY,
        SY_FOR_YT,
        YT_FOR_SY
    }

    // ========================================= EIGEN LAYER =========================================

    struct QueuedWithdrawalParams {
        // Array of strategies that the QueuedWithdrawal contains
        address[] strategies;
        // Array containing the amount of shares in each Strategy in the `strategies` array
        uint256[] shares;
        // The address of the withdrawer
        address withdrawer;
    }

    struct Withdrawal {
        // The address that originated the Withdrawal
        address staker;
        // The address that the staker was delegated to at the time that the Withdrawal was created
        address delegatedTo;
        // The address that can complete the Withdrawal + will receive funds when completing the withdrawal
        address withdrawer;
        // Nonce used to guarantee that otherwise identical withdrawals have unique hashes
        uint256 nonce;
        // Block number when the Withdrawal was created
        uint32 startBlock;
        // Array of strategies that the Withdrawal contains
        address[] strategies;
        // Array containing the amount of shares in each Strategy in the `strategies` array
        uint256[] shares;
    }

    struct SignatureWithExpiry {
        // the signature itself, formatted as a single bytes object
        bytes signature;
        // the expiration timestamp (UTC) of the signature
        uint256 expiry;
    }

    // ========================================= CCIP =========================================

    // If extraArgs is empty bytes, the default is 200k gas limit.
    struct EVM2AnyMessage {
        bytes receiver; // abi.encode(receiver address) for dest EVM chains
        bytes data; // Data payload
        EVMTokenAmount[] tokenAmounts; // Token transfers
        address feeToken; // Address of feeToken. address(0) means you will send msg.value.
        bytes extraArgs; // Populate this with _argsToBytes(EVMExtraArgsV2)
    }

    /// @dev RMN depends on this struct, if changing, please notify the RMN maintainers.
    struct EVMTokenAmount {
        address token; // token address on the local chain.
        uint256 amount; // Amount of tokens.
    }

    struct EVMExtraArgsV1 {
        uint256 gasLimit;
    }

    // ========================================= OFT =========================================

    struct SendParam {
        uint32 dstEid; // Destination endpoint ID.
        bytes32 to; // Recipient address.
        uint256 amountLD; // Amount to send in local decimals.
        uint256 minAmountLD; // Minimum amount to send in local decimals.
        bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.
        bytes composeMsg; // The composed message for the send() operation.
        bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.
    }

    struct MessagingFee {
        uint256 nativeFee;
        uint256 lzTokenFee;
    }
    // ========================================= L1StandardBridge =========================================

    struct WithdrawalTransaction {
        uint256 nonce;
        address sender;
        address target;
        uint256 value;
        uint256 gasLimit;
        bytes data;
    }

    struct OutputRootProof {
        bytes32 version;
        bytes32 stateRoot;
        bytes32 messagePasserStorageRoot;
        bytes32 latestBlockhash;
    }

    // ========================================= Mantle L1StandardBridge =========================================

    struct MantleWithdrawalTransaction {
        uint256 nonce;
        address sender;
        address target;
        uint256 mntValue;
        uint256 value;
        uint256 gasLimit;
        bytes data;
    }

    // ========================================= Linea Bridge =========================================

    struct ClaimMessageWithProofParams {
        bytes32[] proof;
        uint256 messageNumber;
        uint32 leafIndex;
        address from;
        address to;
        uint256 fee;
        uint256 value;
        address payable feeRecipient;
        bytes32 merkleRoot;
        bytes data;
    }

    // ========================================= Scroll Bridge =========================================

    struct L2MessageProof {
        uint256 batchIndex;
        bytes merkleProof;
    }

    // ========================================= Camelot V3 =========================================

    struct CamelotMintParams {
        address token0;
        address token1;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }
    // ========================================= Velodrome V3 =========================================

    struct VelodromeMintParams {
        address token0;
        address token1;
        int24 tickSpacing;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
        uint160 sqrtPriceX96;
    }

    // ========================================= Karak =========================================

    struct QueuedWithdrawal {
        address staker;
        address delegatedTo;
        uint256 nonce;
        uint256 start;
        WithdrawRequest request;
    }

    struct WithdrawRequest {
        address[] vaults;
        uint256[] shares;
        address withdrawer;
    }
}

Settings
{
  "remappings": [
    "@solmate/=lib/solmate/src/",
    "@forge-std/=lib/forge-std/src/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@ccip/=lib/ccip/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "LayerZero-v2/=lib/LayerZero-v2/",
    "ccip/=lib/ccip/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_boringVault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BaseDecoderAndSanitizer__FunctionSelectorNotSupported","type":"error"},{"inputs":[],"name":"EigenLayerLSTStakingDecoderAndSanitizer__CanOnlyReceiveAsTokens","type":"error"},{"inputs":[],"name":"KarakDecoderAndSanitizer__InvalidRequestsLength","type":"error"},{"inputs":[],"name":"OFTDecoderAndSanitizer__NonZeroMessage","type":"error"},{"inputs":[],"name":"OFTDecoderAndSanitizer__NonZeroOFTCommand","type":"error"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"bridgeERC20To","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"bridgeETHTo","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"bridgeETHTo","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"bridgeToken","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"feeAsset","type":"address"}],"name":"claimFees","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimMessage","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"messageNumber","type":"uint256"},{"internalType":"uint32","name":"leafIndex","type":"uint32"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address payable","name":"feeRecipient","type":"address"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct DecoderCustomTypes.ClaimMessageWithProofParams","name":"_claimMessageWithProof","type":"tuple"}],"name":"claimMessageWithProof","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"address[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"internalType":"struct DecoderCustomTypes.Withdrawal[]","name":"withdrawals","type":"tuple[]"},{"internalType":"address[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"name":"completeQueuedWithdrawals","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"internalType":"struct DecoderCustomTypes.SignatureWithExpiry","name":"","type":"tuple"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"delegateTo","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositERC20","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_for","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"strategy","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositIntoStrategy","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"mntValue","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct DecoderCustomTypes.MantleWithdrawalTransaction","name":"_tx","type":"tuple"}],"name":"finalizeWithdrawalTransaction","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct DecoderCustomTypes.WithdrawalTransaction","name":"_tx","type":"tuple"}],"name":"finalizeWithdrawalTransaction","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"components":[{"internalType":"address[]","name":"vaults","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}],"internalType":"struct DecoderCustomTypes.WithdrawRequest","name":"request","type":"tuple"}],"internalType":"struct DecoderCustomTypes.QueuedWithdrawal[]","name":"startedWithdrawals","type":"tuple[]"}],"name":"finishWithdraw","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"gimmieShares","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct DecoderCustomTypes.WithdrawalTransaction","name":"_tx","type":"tuple"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"bytes32","name":"messagePasserStorageRoot","type":"bytes32"},{"internalType":"bytes32","name":"latestBlockhash","type":"bytes32"}],"internalType":"struct DecoderCustomTypes.OutputRootProof","name":"","type":"tuple"},{"internalType":"bytes[]","name":"","type":"bytes[]"}],"name":"proveWithdrawalTransaction","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"mntValue","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct DecoderCustomTypes.MantleWithdrawalTransaction","name":"_tx","type":"tuple"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"bytes32","name":"messagePasserStorageRoot","type":"bytes32"},{"internalType":"bytes32","name":"latestBlockhash","type":"bytes32"}],"internalType":"struct DecoderCustomTypes.OutputRootProof","name":"","type":"tuple"},{"internalType":"bytes[]","name":"","type":"bytes[]"}],"name":"proveWithdrawalTransaction","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}],"internalType":"struct DecoderCustomTypes.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]"}],"name":"queueWithdrawals","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"uint256","name":"batchIndex","type":"uint256"},{"internalType":"bytes","name":"merkleProof","type":"bytes"}],"internalType":"struct DecoderCustomTypes.L2MessageProof","name":"","type":"tuple"}],"name":"relayMessageWithProof","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"returnShares","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct DecoderCustomTypes.SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct DecoderCustomTypes.MessagingFee","name":"","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"sendMessage","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"sendMessage","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"vaults","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}],"internalType":"struct DecoderCustomTypes.WithdrawRequest[]","name":"requests","type":"tuple[]"}],"name":"startWithdraw","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"undelegate","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdraw","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdrawERC20","outputs":[{"internalType":"bytes","name":"sensitiveArguments","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"withdrawNativeFromDrone","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdrawNonBoringToken","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"}]

60a060405234801561001057600080fd5b506040516119de3803806119de83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611956610088600039600050506119566000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80638c3152e911610125578063d69b2b1b116100ad578063e7a050aa1161007c578063e7a050aa14610391578063eea9064b146103ed578063f219fa661461036b578063f3fef3a31461022a578063f45346dc146102eb57610211565b8063d69b2b1b146103ca578063da3ef9d2146103d8578063da8be86414610279578063e11013dd146103df57610211565b8063a93a4af9116100f4578063a93a4af91461036b578063b2267a7b1461037e578063b3db428b14610391578063c311b6fc146103a4578063c7c7f5b3146103b757610211565b80638c3152e91461033757806392dca407146103455780639f3ce55a14610358578063a9059cbb1461022a57610211565b80634870496f116101a85780636463fb2a116101775780636463fb2a1461031157806369328dec146102eb5780637fb2a0a11461022a57806386e9a1f7146103245780638b1980251461022a57610211565b80634870496f146102c5578063491e0936146102d8578063522ea81a146102eb578063540abf73146102fe57610211565b806315a0ea6a116101e457806315a0ea6a1461027957806324ca60181461028c5780632e71d4a41461029f57806333404396146102b257610211565b8063095ea7b31461022a57806309f0e0c21461022a5780630dd8dd02146102535780630efe6a8b14610266575b604051633790be8760e21b815260040160405180910390fd5b61023d610238366004610e08565b6103fb565b60405161024a9190610e58565b60405180910390f35b61023d610261366004610ed6565b610425565b61023d610274366004610f17565b610568565b61023d610287366004610f4c565b610593565b61023d61029a366004610fca565b6105bc565b61023d6102ad366004611052565b6105e9565b61023d6102c036600461108e565b61061c565b61023d6102d3366004611175565b6108a4565b61023d6102e63660046111e9565b6108d7565b61023d6102f936600461127e565b61090b565b61023d61030c3660046112c0565b610920565b61023d61031f366004611355565b610953565b61023d610332366004610ed6565b610997565b61023d6102ad366004611390565b61023d610353366004610ed6565b610ba1565b61023d6103663660046113c4565b610cde565b61023d61037936600461141f565b610d0a565b61023d61038c366004611465565b610d1f565b61023d61039f3660046114c8565b610d32565b61023d6103b236600461151b565b610d47565b61023d6103c53660046115bc565b610d5c565b61023d6102d3366004611613565b606061023d565b61023d61036636600461164e565b61023d610274366004611698565b60608260405160200161040e91906116f0565b604051602081830303815290604052905092915050565b606060005b828110156105615760005b84848381811061044757610447611708565b9050602002810190610459919061171e565b610463908061173e565b90508110156104f5578285858481811061047f5761047f611708565b9050602002810190610491919061171e565b61049b908061173e565b838181106104ab576104ab611708565b90506020020160208101906104c09190610f4c565b6040516020016104d1929190611787565b604051602081830303815290604052925080806104ed906117b9565b915050610435565b508184848381811061050957610509611708565b905060200281019061051b919061171e565b61052c906060810190604001610f4c565b60405160200161053d929190611787565b60405160208183030381529060405291508080610559906117b9565b91505061042a565b5092915050565b60608360405160200161057b91906116f0565b60405160208183030381529060405290509392505050565b6060816040516020016105a691906116f0565b6040516020818303038152906040529050919050565b6060846040516020016105cf91906116f0565b604051602081830303815290604052905095945050505050565b60606105fb6040830160208401610f4c565b61060b6060840160408501610f4c565b6040516020016105a69291906117e0565b606060005b888110156108975783838281811061063b5761063b611708565b90506020020160208101906106509190611802565b61066d5760405163cfd3883960e01b815260040160405180910390fd5b818a8a8381811061068057610680611708565b90506020028101906106929190611824565b6106a0906020810190610f4c565b8b8b848181106106b2576106b2611708565b90506020028101906106c49190611824565b6106d5906040810190602001610f4c565b8c8c858181106106e7576106e7611708565b90506020028101906106f99190611824565b61070a906060810190604001610f4c565b60405160200161071d949392919061183a565b604051602081830303815290604052915060005b8a8a8381811061074357610743611708565b90506020028101906107559190611824565b6107639060a081019061173e565b90508110156107f957828b8b8481811061077f5761077f611708565b90506020028101906107919190611824565b61079f9060a081019061173e565b838181106107af576107af611708565b90506020020160208101906107c49190610f4c565b6040516020016107d5929190611787565b604051602081830303815290604052925080806107f1906117b9565b915050610731565b5060005b87811015610884578289898481811061081857610818611708565b905060200281019061082a919061173e565b8381811061083a5761083a611708565b905060200201602081019061084f9190610f4c565b604051602001610860929190611787565b6040516020818303038152906040529250808061087c906117b9565b9150506107fd565b508061088f816117b9565b915050610621565b5098975050505050505050565b60606108b66040870160208801610f4c565b6108c66060880160408901610f4c565b6040516020016105cf9291906117e0565b60608888866040516020016108ee9392919061187f565b604051602081830303815290604052905098975050505050505050565b6060838260405160200161057b9291906117e0565b60608787876040516020016109379392919061187f565b6040516020818303038152906040529050979650505050505050565b606061096460808301838301610f4c565b61097460a0840160808501610f4c565b610985610100850160e08601610f4c565b6040516020016105a69392919061187f565b60606001821415806109e85750828260008181106109b7576109b7611708565b90506020028101906109c991906118a9565b6109d790608081019061171e565b6109e1908061173e565b9050600114155b80610a36575082826000818110610a0157610a01611708565b9050602002810190610a1391906118a9565b610a2190608081019061171e565b610a2f90602081019061173e565b9050600114155b15610a54576040516311fe0e6960e01b815260040160405180910390fd5b82826000818110610a6757610a67611708565b9050602002810190610a7991906118a9565b610a87906020810190610f4c565b83836000818110610a9a57610a9a611708565b9050602002810190610aac91906118a9565b610abd906040810190602001610f4c565b84846000818110610ad057610ad0611708565b9050602002810190610ae291906118a9565b610af090608081019061171e565b610afa908061173e565b6000818110610b0b57610b0b611708565b9050602002016020810190610b209190610f4c565b85856000818110610b3357610b33611708565b9050602002810190610b4591906118a9565b610b5390608081019061171e565b610b64906060810190604001610f4c565b6040516001600160601b0319606095861b8116602083015293851b8416603482015291841b8316604883015290921b16605c82015260700161040e565b6060600182141580610be4575082826000818110610bc157610bc1611708565b9050602002810190610bd3919061171e565b610bdd908061173e565b9050600114155b80610c24575082826000818110610bfd57610bfd611708565b9050602002810190610c0f919061171e565b610c1d90602081019061173e565b9050600114155b15610c42576040516311fe0e6960e01b815260040160405180910390fd5b82826000818110610c5557610c55611708565b9050602002810190610c67919061171e565b610c71908061173e565b6000818110610c8257610c82611708565b9050602002016020810190610c979190610f4c565b83836000818110610caa57610caa611708565b9050602002810190610cbc919061171e565b610ccd906060810190604001610f4c565b60405160200161040e9291906117e0565b606084604051602001610cf191906116f0565b6040516020818303038152906040529050949350505050565b60608484604051602001610cf19291906117e0565b6060856040516020016105cf91906116f0565b6060838360405160200161057b9291906117e0565b606087876040516020016109379291906117e0565b60606000610d6d60a08601866118bf565b90501115610d8e57604051633483a65b60e11b815260040160405180910390fd5b6000610d9d60c08601866118bf565b90501115610dbe57604051630d90fb5b60e21b815260040160405180910390fd5b610dcb6020850185611905565b63ffffffff1660608560200135901b60601c8360405160200161057b9392919061187f565b6001600160a01b0381168114610e0557600080fd5b50565b60008060408385031215610e1b57600080fd5b8235610e2681610df0565b946020939093013593505050565b60005b83811015610e4f578181015183820152602001610e37565b50506000910152565b6020815260008251806020840152610e77816040850160208701610e34565b601f01601f19169190910160400192915050565b60008083601f840112610e9d57600080fd5b5081356001600160401b03811115610eb457600080fd5b6020830191508360208260051b8501011115610ecf57600080fd5b9250929050565b60008060208385031215610ee957600080fd5b82356001600160401b03811115610eff57600080fd5b610f0b85828601610e8b565b90969095509350505050565b600080600060608486031215610f2c57600080fd5b8335610f3781610df0565b95602085013595506040909401359392505050565b600060208284031215610f5e57600080fd5b8135610f6981610df0565b9392505050565b803563ffffffff81168114610f8457600080fd5b919050565b60008083601f840112610f9b57600080fd5b5081356001600160401b03811115610fb257600080fd5b602083019150836020828501011115610ecf57600080fd5b600080600080600060808688031215610fe257600080fd5b853594506020860135610ff481610df0565b935061100260408701610f70565b925060608601356001600160401b0381111561101d57600080fd5b61102988828901610f89565b969995985093965092949392505050565b600060e0828403121561104c57600080fd5b50919050565b60006020828403121561106457600080fd5b81356001600160401b0381111561107a57600080fd5b6110868482850161103a565b949350505050565b6000806000806000806000806080898b0312156110aa57600080fd5b88356001600160401b03808211156110c157600080fd5b6110cd8c838d01610e8b565b909a50985060208b01359150808211156110e657600080fd5b6110f28c838d01610e8b565b909850965060408b013591508082111561110b57600080fd5b6111178c838d01610e8b565b909650945060608b013591508082111561113057600080fd5b5061113d8b828c01610e8b565b999c989b5096995094979396929594505050565b600060c0828403121561104c57600080fd5b60006080828403121561104c57600080fd5b600080600080600060e0868803121561118d57600080fd5b85356001600160401b03808211156111a457600080fd5b6111b089838a01611151565b9650602088013595506111c68960408a01611163565b945060c08801359150808211156111dc57600080fd5b5061102988828901610e8b565b60008060008060008060008060e0898b03121561120557600080fd5b883561121081610df0565b9750602089013561122081610df0565b96506040890135955060608901359450608089013561123e81610df0565b935060a08901356001600160401b0381111561125957600080fd5b6112658b828c01610f89565b999c989b50969995989497949560c00135949350505050565b60008060006060848603121561129357600080fd5b833561129e81610df0565b92506020840135915060408401356112b581610df0565b809150509250925092565b600080600080600080600060c0888a0312156112db57600080fd5b87356112e681610df0565b965060208801356112f681610df0565b9550604088013561130681610df0565b94506060880135935061131b60808901610f70565b925060a08801356001600160401b0381111561133657600080fd5b6113428a828b01610f89565b989b979a50959850939692959293505050565b60006020828403121561136757600080fd5b81356001600160401b0381111561137d57600080fd5b82016101408185031215610f6957600080fd5b6000602082840312156113a257600080fd5b81356001600160401b038111156113b857600080fd5b61108684828501611151565b600080600080606085870312156113da57600080fd5b84356113e581610df0565b93506020850135925060408501356001600160401b0381111561140757600080fd5b61141387828801610f89565b95989497509550505050565b6000806000806080858703121561143557600080fd5b843561144081610df0565b9350602085013561145081610df0565b93969395505050506040820135916060013590565b60008060008060006080868803121561147d57600080fd5b853561148881610df0565b94506020860135935060408601356001600160401b038111156114aa57600080fd5b6114b688828901610f89565b96999598509660600135949350505050565b6000806000606084860312156114dd57600080fd5b83356114e881610df0565b925060208401356114f881610df0565b929592945050506040919091013590565b60006040828403121561104c57600080fd5b600080600080600080600060c0888a03121561153657600080fd5b873561154181610df0565b9650602088013561155181610df0565b9550604088013594506060880135935060808801356001600160401b038082111561157b57600080fd5b6115878b838c01610f89565b909550935060a08a01359150808211156115a057600080fd5b506115ad8a828b01611509565b91505092959891949750929550565b6000806000608084860312156115d157600080fd5b83356001600160401b038111156115e757600080fd5b6115f38682870161103a565b9350506116038560208601611509565b915060608401356112b581610df0565b600080600080600060e0868803121561162b57600080fd5b85356001600160401b038082111561164257600080fd5b6111b089838a0161103a565b6000806000806060858703121561166457600080fd5b843561166f81610df0565b935061167d60208601610f70565b925060408501356001600160401b0381111561140757600080fd5b6000806000606084860312156116ad57600080fd5b83356116b881610df0565b925060208401356001600160401b038111156116d357600080fd5b6116df86828701611509565b925050604084013590509250925092565b60609190911b6001600160601b031916815260140190565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261173457600080fd5b9190910192915050565b6000808335601e1984360301811261175557600080fd5b8301803591506001600160401b0382111561176f57600080fd5b6020019150600581901b3603821315610ecf57600080fd5b60008351611799818460208801610e34565b60609390931b6001600160601b0319169190920190815260140192915050565b6000600182016117d957634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160601b0319606093841b811682529190921b16601482015260280190565b60006020828403121561181457600080fd5b81358015158114610f6957600080fd5b6000823560de1983360301811261173457600080fd5b6000855161184c818460208a01610e34565b606095861b6001600160601b03199081169390910192835293851b8416601483015250921b166028820152603c01919050565b6001600160601b0319606094851b8116825292841b83166014820152921b166028820152603c0190565b60008235609e1983360301811261173457600080fd5b6000808335601e198436030181126118d657600080fd5b8301803591506001600160401b038211156118f057600080fd5b602001915036819003821315610ecf57600080fd5b60006020828403121561191757600080fd5b610f6982610f7056fea2646970667358221220a26bb3a108715eb70f552653f8bd925f4d3fbd3851d9f0f6fc6c3ec9937e74bb64736f6c63430008150033000000000000000000000000f8203a33027607d2c82dfd67b46986096257dfa5

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c80638c3152e911610125578063d69b2b1b116100ad578063e7a050aa1161007c578063e7a050aa14610391578063eea9064b146103ed578063f219fa661461036b578063f3fef3a31461022a578063f45346dc146102eb57610211565b8063d69b2b1b146103ca578063da3ef9d2146103d8578063da8be86414610279578063e11013dd146103df57610211565b8063a93a4af9116100f4578063a93a4af91461036b578063b2267a7b1461037e578063b3db428b14610391578063c311b6fc146103a4578063c7c7f5b3146103b757610211565b80638c3152e91461033757806392dca407146103455780639f3ce55a14610358578063a9059cbb1461022a57610211565b80634870496f116101a85780636463fb2a116101775780636463fb2a1461031157806369328dec146102eb5780637fb2a0a11461022a57806386e9a1f7146103245780638b1980251461022a57610211565b80634870496f146102c5578063491e0936146102d8578063522ea81a146102eb578063540abf73146102fe57610211565b806315a0ea6a116101e457806315a0ea6a1461027957806324ca60181461028c5780632e71d4a41461029f57806333404396146102b257610211565b8063095ea7b31461022a57806309f0e0c21461022a5780630dd8dd02146102535780630efe6a8b14610266575b604051633790be8760e21b815260040160405180910390fd5b61023d610238366004610e08565b6103fb565b60405161024a9190610e58565b60405180910390f35b61023d610261366004610ed6565b610425565b61023d610274366004610f17565b610568565b61023d610287366004610f4c565b610593565b61023d61029a366004610fca565b6105bc565b61023d6102ad366004611052565b6105e9565b61023d6102c036600461108e565b61061c565b61023d6102d3366004611175565b6108a4565b61023d6102e63660046111e9565b6108d7565b61023d6102f936600461127e565b61090b565b61023d61030c3660046112c0565b610920565b61023d61031f366004611355565b610953565b61023d610332366004610ed6565b610997565b61023d6102ad366004611390565b61023d610353366004610ed6565b610ba1565b61023d6103663660046113c4565b610cde565b61023d61037936600461141f565b610d0a565b61023d61038c366004611465565b610d1f565b61023d61039f3660046114c8565b610d32565b61023d6103b236600461151b565b610d47565b61023d6103c53660046115bc565b610d5c565b61023d6102d3366004611613565b606061023d565b61023d61036636600461164e565b61023d610274366004611698565b60608260405160200161040e91906116f0565b604051602081830303815290604052905092915050565b606060005b828110156105615760005b84848381811061044757610447611708565b9050602002810190610459919061171e565b610463908061173e565b90508110156104f5578285858481811061047f5761047f611708565b9050602002810190610491919061171e565b61049b908061173e565b838181106104ab576104ab611708565b90506020020160208101906104c09190610f4c565b6040516020016104d1929190611787565b604051602081830303815290604052925080806104ed906117b9565b915050610435565b508184848381811061050957610509611708565b905060200281019061051b919061171e565b61052c906060810190604001610f4c565b60405160200161053d929190611787565b60405160208183030381529060405291508080610559906117b9565b91505061042a565b5092915050565b60608360405160200161057b91906116f0565b60405160208183030381529060405290509392505050565b6060816040516020016105a691906116f0565b6040516020818303038152906040529050919050565b6060846040516020016105cf91906116f0565b604051602081830303815290604052905095945050505050565b60606105fb6040830160208401610f4c565b61060b6060840160408501610f4c565b6040516020016105a69291906117e0565b606060005b888110156108975783838281811061063b5761063b611708565b90506020020160208101906106509190611802565b61066d5760405163cfd3883960e01b815260040160405180910390fd5b818a8a8381811061068057610680611708565b90506020028101906106929190611824565b6106a0906020810190610f4c565b8b8b848181106106b2576106b2611708565b90506020028101906106c49190611824565b6106d5906040810190602001610f4c565b8c8c858181106106e7576106e7611708565b90506020028101906106f99190611824565b61070a906060810190604001610f4c565b60405160200161071d949392919061183a565b604051602081830303815290604052915060005b8a8a8381811061074357610743611708565b90506020028101906107559190611824565b6107639060a081019061173e565b90508110156107f957828b8b8481811061077f5761077f611708565b90506020028101906107919190611824565b61079f9060a081019061173e565b838181106107af576107af611708565b90506020020160208101906107c49190610f4c565b6040516020016107d5929190611787565b604051602081830303815290604052925080806107f1906117b9565b915050610731565b5060005b87811015610884578289898481811061081857610818611708565b905060200281019061082a919061173e565b8381811061083a5761083a611708565b905060200201602081019061084f9190610f4c565b604051602001610860929190611787565b6040516020818303038152906040529250808061087c906117b9565b9150506107fd565b508061088f816117b9565b915050610621565b5098975050505050505050565b60606108b66040870160208801610f4c565b6108c66060880160408901610f4c565b6040516020016105cf9291906117e0565b60608888866040516020016108ee9392919061187f565b604051602081830303815290604052905098975050505050505050565b6060838260405160200161057b9291906117e0565b60608787876040516020016109379392919061187f565b6040516020818303038152906040529050979650505050505050565b606061096460808301838301610f4c565b61097460a0840160808501610f4c565b610985610100850160e08601610f4c565b6040516020016105a69392919061187f565b60606001821415806109e85750828260008181106109b7576109b7611708565b90506020028101906109c991906118a9565b6109d790608081019061171e565b6109e1908061173e565b9050600114155b80610a36575082826000818110610a0157610a01611708565b9050602002810190610a1391906118a9565b610a2190608081019061171e565b610a2f90602081019061173e565b9050600114155b15610a54576040516311fe0e6960e01b815260040160405180910390fd5b82826000818110610a6757610a67611708565b9050602002810190610a7991906118a9565b610a87906020810190610f4c565b83836000818110610a9a57610a9a611708565b9050602002810190610aac91906118a9565b610abd906040810190602001610f4c565b84846000818110610ad057610ad0611708565b9050602002810190610ae291906118a9565b610af090608081019061171e565b610afa908061173e565b6000818110610b0b57610b0b611708565b9050602002016020810190610b209190610f4c565b85856000818110610b3357610b33611708565b9050602002810190610b4591906118a9565b610b5390608081019061171e565b610b64906060810190604001610f4c565b6040516001600160601b0319606095861b8116602083015293851b8416603482015291841b8316604883015290921b16605c82015260700161040e565b6060600182141580610be4575082826000818110610bc157610bc1611708565b9050602002810190610bd3919061171e565b610bdd908061173e565b9050600114155b80610c24575082826000818110610bfd57610bfd611708565b9050602002810190610c0f919061171e565b610c1d90602081019061173e565b9050600114155b15610c42576040516311fe0e6960e01b815260040160405180910390fd5b82826000818110610c5557610c55611708565b9050602002810190610c67919061171e565b610c71908061173e565b6000818110610c8257610c82611708565b9050602002016020810190610c979190610f4c565b83836000818110610caa57610caa611708565b9050602002810190610cbc919061171e565b610ccd906060810190604001610f4c565b60405160200161040e9291906117e0565b606084604051602001610cf191906116f0565b6040516020818303038152906040529050949350505050565b60608484604051602001610cf19291906117e0565b6060856040516020016105cf91906116f0565b6060838360405160200161057b9291906117e0565b606087876040516020016109379291906117e0565b60606000610d6d60a08601866118bf565b90501115610d8e57604051633483a65b60e11b815260040160405180910390fd5b6000610d9d60c08601866118bf565b90501115610dbe57604051630d90fb5b60e21b815260040160405180910390fd5b610dcb6020850185611905565b63ffffffff1660608560200135901b60601c8360405160200161057b9392919061187f565b6001600160a01b0381168114610e0557600080fd5b50565b60008060408385031215610e1b57600080fd5b8235610e2681610df0565b946020939093013593505050565b60005b83811015610e4f578181015183820152602001610e37565b50506000910152565b6020815260008251806020840152610e77816040850160208701610e34565b601f01601f19169190910160400192915050565b60008083601f840112610e9d57600080fd5b5081356001600160401b03811115610eb457600080fd5b6020830191508360208260051b8501011115610ecf57600080fd5b9250929050565b60008060208385031215610ee957600080fd5b82356001600160401b03811115610eff57600080fd5b610f0b85828601610e8b565b90969095509350505050565b600080600060608486031215610f2c57600080fd5b8335610f3781610df0565b95602085013595506040909401359392505050565b600060208284031215610f5e57600080fd5b8135610f6981610df0565b9392505050565b803563ffffffff81168114610f8457600080fd5b919050565b60008083601f840112610f9b57600080fd5b5081356001600160401b03811115610fb257600080fd5b602083019150836020828501011115610ecf57600080fd5b600080600080600060808688031215610fe257600080fd5b853594506020860135610ff481610df0565b935061100260408701610f70565b925060608601356001600160401b0381111561101d57600080fd5b61102988828901610f89565b969995985093965092949392505050565b600060e0828403121561104c57600080fd5b50919050565b60006020828403121561106457600080fd5b81356001600160401b0381111561107a57600080fd5b6110868482850161103a565b949350505050565b6000806000806000806000806080898b0312156110aa57600080fd5b88356001600160401b03808211156110c157600080fd5b6110cd8c838d01610e8b565b909a50985060208b01359150808211156110e657600080fd5b6110f28c838d01610e8b565b909850965060408b013591508082111561110b57600080fd5b6111178c838d01610e8b565b909650945060608b013591508082111561113057600080fd5b5061113d8b828c01610e8b565b999c989b5096995094979396929594505050565b600060c0828403121561104c57600080fd5b60006080828403121561104c57600080fd5b600080600080600060e0868803121561118d57600080fd5b85356001600160401b03808211156111a457600080fd5b6111b089838a01611151565b9650602088013595506111c68960408a01611163565b945060c08801359150808211156111dc57600080fd5b5061102988828901610e8b565b60008060008060008060008060e0898b03121561120557600080fd5b883561121081610df0565b9750602089013561122081610df0565b96506040890135955060608901359450608089013561123e81610df0565b935060a08901356001600160401b0381111561125957600080fd5b6112658b828c01610f89565b999c989b50969995989497949560c00135949350505050565b60008060006060848603121561129357600080fd5b833561129e81610df0565b92506020840135915060408401356112b581610df0565b809150509250925092565b600080600080600080600060c0888a0312156112db57600080fd5b87356112e681610df0565b965060208801356112f681610df0565b9550604088013561130681610df0565b94506060880135935061131b60808901610f70565b925060a08801356001600160401b0381111561133657600080fd5b6113428a828b01610f89565b989b979a50959850939692959293505050565b60006020828403121561136757600080fd5b81356001600160401b0381111561137d57600080fd5b82016101408185031215610f6957600080fd5b6000602082840312156113a257600080fd5b81356001600160401b038111156113b857600080fd5b61108684828501611151565b600080600080606085870312156113da57600080fd5b84356113e581610df0565b93506020850135925060408501356001600160401b0381111561140757600080fd5b61141387828801610f89565b95989497509550505050565b6000806000806080858703121561143557600080fd5b843561144081610df0565b9350602085013561145081610df0565b93969395505050506040820135916060013590565b60008060008060006080868803121561147d57600080fd5b853561148881610df0565b94506020860135935060408601356001600160401b038111156114aa57600080fd5b6114b688828901610f89565b96999598509660600135949350505050565b6000806000606084860312156114dd57600080fd5b83356114e881610df0565b925060208401356114f881610df0565b929592945050506040919091013590565b60006040828403121561104c57600080fd5b600080600080600080600060c0888a03121561153657600080fd5b873561154181610df0565b9650602088013561155181610df0565b9550604088013594506060880135935060808801356001600160401b038082111561157b57600080fd5b6115878b838c01610f89565b909550935060a08a01359150808211156115a057600080fd5b506115ad8a828b01611509565b91505092959891949750929550565b6000806000608084860312156115d157600080fd5b83356001600160401b038111156115e757600080fd5b6115f38682870161103a565b9350506116038560208601611509565b915060608401356112b581610df0565b600080600080600060e0868803121561162b57600080fd5b85356001600160401b038082111561164257600080fd5b6111b089838a0161103a565b6000806000806060858703121561166457600080fd5b843561166f81610df0565b935061167d60208601610f70565b925060408501356001600160401b0381111561140757600080fd5b6000806000606084860312156116ad57600080fd5b83356116b881610df0565b925060208401356001600160401b038111156116d357600080fd5b6116df86828701611509565b925050604084013590509250925092565b60609190911b6001600160601b031916815260140190565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261173457600080fd5b9190910192915050565b6000808335601e1984360301811261175557600080fd5b8301803591506001600160401b0382111561176f57600080fd5b6020019150600581901b3603821315610ecf57600080fd5b60008351611799818460208801610e34565b60609390931b6001600160601b0319169190920190815260140192915050565b6000600182016117d957634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160601b0319606093841b811682529190921b16601482015260280190565b60006020828403121561181457600080fd5b81358015158114610f6957600080fd5b6000823560de1983360301811261173457600080fd5b6000855161184c818460208a01610e34565b606095861b6001600160601b03199081169390910192835293851b8416601483015250921b166028820152603c01919050565b6001600160601b0319606094851b8116825292841b83166014820152921b166028820152603c0190565b60008235609e1983360301811261173457600080fd5b6000808335601e198436030181126118d657600080fd5b8301803591506001600160401b038211156118f057600080fd5b602001915036819003821315610ecf57600080fd5b60006020828403121561191757600080fd5b610f6982610f7056fea2646970667358221220a26bb3a108715eb70f552653f8bd925f4d3fbd3851d9f0f6fc6c3ec9937e74bb64736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f8203a33027607d2c82dfd67b46986096257dfa5

-----Decoded View---------------
Arg [0] : _boringVault (address): 0xf8203A33027607D2C82dFd67b46986096257dFA5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f8203a33027607d2c82dfd67b46986096257dfa5


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.